Cách thiết lập FEMP Stack (FreeBSD, Nginx, MySQL 8 và PHP 7.4) trên FreeBSD 12

theanh

Administrator
Nhân viên
Một ngăn xếp FEMP, tương tự như ngăn xếp LEMP trên Linux, là một tập hợp các phần mềm nguồn mở thường được cài đặt cùng nhau để cho phép máy chủ FreeBSD lưu trữ các trang web và ứng dụng web động. FEMP là từ viết tắt của FreereeBSD (hệ điều hành), Nginx (máy chủ HTTP phát âm là Engine-x), MySQL (máy chủ cơ sở dữ liệu) và PHP (ngôn ngữ lập trình để xử lý nội dung PHP động).

Trong hướng dẫn này, chúng tôi sẽ thiết lập các thành phần của ngăn xếp FEMP trên máy chủ FreeBSD 12.1 bằng cách sử dụng pkg, trình quản lý gói FreeBSD.

Yêu cầu​

Trước khi bắt đầu hướng dẫn này, bạn sẽ cần những điều sau:
  • Một FreeBSD 12.1.
  • Một người dùng có quyền root hoặc người dùng sudo để thực hiện các thay đổi cấu hình.
  • Khuyến nghị nên quen thuộc với hệ thống FreeBSD và giao diện dòng lệnh.

Các bước ban đầu​

Kiểm tra phiên bản FreeBSD.
Mã:
uname -ro
# FreeBSD 12.1-RELEASE
Đảm bảo hệ thống FreeBSD của bạn được cập nhật.
Mã:
freebsd-update fetch install
pkg update && pkg upgrade -y
Cài đặt các gói cần thiết.
Mã:
pkg install -y sudo vim bash curl
Tạo một tài khoản người dùng mới với tên người dùng bạn muốn. Chúng tôi sử dụng johndoe.
Mã:
adduser
# Tên người dùng: johndoe
# Tên đầy đủ: John Doe
# Uid (Để trống theo mặc định): 
# Nhóm đăng nhập [johndoe]: 
# Nhóm đăng nhập là johndoe. Mời johndoe vào các nhóm khác? []: wheel
# Lớp đăng nhập [mặc định]: 
# Shell (sh csh tcsh nologin) [sh]: bash
# Thư mục gốc [/home/johndoe]: 
# Quyền thư mục gốc (Để trống theo mặc định): 
# Sử dụng xác thực dựa trên mật khẩu? [có]: 
# Sử dụng mật khẩu trống? (có/không) [không]: 
# Sử dụng mật khẩu ngẫu nhiên? (có/không) [không]: 
# Nhập mật khẩu: your_secure_password
# Nhập lại mật khẩu: your_secure_password
# Khóa tài khoản sau khi tạo? [không]:  
# OK? (có/không): có
# Thêm người dùng khác? (có/không): không
# Tạm biệt!
Chạy lệnh visudo và bỏ chú thích ở dòng %wheel ALL=(ALL) ALL để cho phép các thành viên của nhóm wheel thực hiện bất kỳ lệnh nào.
Mã:
visudo

# Bỏ chú thích bằng cách xóa dấu thăng (#)
# %wheel ALL=(ALL) ALL
Bây giờ, hãy chuyển sang người dùng mới tạo của bạn bằng su:
Mã:
su - johndoe
LƯU Ý: Thay thế johndoe bằng tên người dùng của bạn.

Thiết lập múi giờ:
Mã:
sudo tzsetup

Bước 1 — Cài đặt mainline Nginx​

Máy chủ web Nginx hiện là một trong những máy chủ web phổ biến nhất trên thế giới. Đây là lựa chọn tuyệt vời để lưu trữ trang web.

Bạn có thể cài đặt Nginx bằng trình quản lý gói của FreeBSD, pkg. Trình quản lý gói cho phép bạn cài đặt hầu hết các phần mềm một cách dễ dàng từ kho lưu trữ do FreeBSD quản lý. Bạn có thể tìm hiểu thêm về cách sử dụng pkg tại đây.

Để cài đặt Nginx chính thức mới nhất, hãy đưa ra lệnh sau:
Mã:
sudo pkg install -y nginx-devel
Kiểm tra phiên bản:
Mã:
nginx -v
# phiên bản nginx: nginx/1.17.7
Lệnh này sẽ cài đặt phiên bản chính thức mới nhất, có thể sử dụng đáng tin cậy trên máy chủ sản xuất. Nếu bạn muốn cài đặt bản phát hành ổn định mới nhất, chỉ cần sử dụng gói nginx thay vì nginx-devel.

Bây giờ, hãy bật và khởi động Nginx:
Mã:
sudo sysrc nginx_enable=yes
sudo service nginx start
Để kiểm tra xem Nginx đã khởi động chưa, bạn có thể chạy lệnh sau:
Mã:
sudo service nginx status
Kết quả là, bạn sẽ thấy nội dung tương tự như sau:
Mã:
# Đầu ra
nginx đang chạy dưới dạng pid 17607.
Bạn có thể xác minh rằng Nginx đã được cài đặt và hoạt động mà không có lỗi bằng cách truy cập địa chỉ IP công khai của máy chủ trong trình duyệt web của bạn. Điều hướng đến your_server_IP. Bạn sẽ thấy trang mặc định "Welcome to nginx!".

Bước 2 — Cài đặt MySQL 8.0​

Bây giờ bạn đã có máy chủ web và chạy, đã đến lúc cài đặt MySQL, hệ thống quản lý cơ sở dữ liệu quan hệ. Máy chủ MySQL sẽ sắp xếp và cung cấp quyền truy cập vào các cơ sở dữ liệu mà máy chủ của bạn có thể lưu trữ thông tin.

Một lần nữa, bạn có thể sử dụng pkg để tải và cài đặt phần mềm của mình.

Để cài đặt MySQL 8.0 bằng pkg, hãy sử dụng lệnh này:
Mã:
sudo pkg install -y mysql80-client mysql80-server
Lệnh này sẽ cài đặt phiên bản mới nhất của máy khách và máy chủ MySQL, hiện tại là 8.x.x.

Kiểm tra phiên bản:
Mã:
mysql --version
# mysql Ver 8.0.17 cho FreeBSD12.0 trên amd64 (Bản phân phối nguồn)
Bây giờ, hãy bật và khởi động MySQL:
Mã:
sudo sysrc mysql_enable=yes
sudo service mysql-server start
Để kiểm tra xem MySQL đã khởi động chưa, bạn có thể chạy lệnh sau:
Mã:
sudo service mysql-server status
Bạn sẽ thấy nội dung tương tự như sau:
Mã:
# Đầu ra
mysql đang chạy dưới dạng pid 19066.
Là một thực hành, bạn có thể chạy tập lệnh bảo mật mysql_secure_installation sẽ xóa một số mặc định không an toàn và hạn chế một chút quyền truy cập vào hệ thống cơ sở dữ liệu của bạn.
Mã:
sudo mysql_secure_installation
Bạn sẽ được yêu cầu đặt mật khẩu, sau đó là một số câu hỏi khác. Nhập mật khẩu mạnh và sau đó đối với các câu hỏi còn lại, nhấn ENTER để chọn mặc định.

Bước 3 — Cài đặt PHP 7.4​

PHP là ngôn ngữ kịch bản phía máy chủ được thiết kế cho phát triển web. PHP là thành phần không thể thiếu của ngăn xếp FEMP. Ngoài ra, Python hoặc Perl thường được sử dụng thay cho PHP. Tuy nhiên, PHP là tùy chọn phổ biến nhất được sử dụng thường xuyên nhất. Cùng với cơ sở dữ liệu, nó sẽ cung cấp cho các trang web hoặc ứng dụng của bạn hành vi động.

Một lần nữa tận dụng hệ thống pkg để cài đặt các thành phần PHP.

Để cài đặt PHP 7.4 bằng pkg, hãy chạy lệnh này:
Mã:
sudo pkg install -y php74
Kiểm tra phiên bản PHP:
Mã:
php --version
# PHP 7.4.0 (cli) (được xây dựng: 18 tháng 7 năm 2019 01:14:37) (NTS)
# Bản quyền (c) 1997-2018 The PHP Group
# Zend Engine v3.3.7, Bản quyền (c) 1998-2018 Zend Technologies
Lệnh này sẽ cài đặt phiên bản PHP mới nhất, 7.4.

Bây giờ, hãy bật và bắt đầu PHP-FPM:
Mã:
sudo sysrc php_fpm_enable=yes
sudo service php-fpm start
Để kiểm tra xem PHP-FPM đã khởi động chưa, bạn có thể chạy lệnh sau:
Mã:
sudo service php-fpm status
Kết quả là, bạn sẽ thấy nội dung tương tự như sau:
Mã:
# Đầu ra
php_fpm đang chạy với pid 23005.

Cài đặt các mô-đun PHP (Tùy chọn)​

Để tăng cường chức năng của PHP, bạn có thể tùy chọn cài đặt một số mô-đun bổ sung.

Để xem các mô-đun PHP hiện đang được biên dịch, bạn có thể chạy lệnh này:
Mã:
php -m

# [Các mô-đun PHP]
# Lõi # ngày
# libxml
# mysqlnd
# pcre
# Reflection
# SPL
# standard
# [Zend Modules]
Để tìm kiếm các module PHP khả dụng, bạn có thể sử dụng lệnh này:
Mã:
pkg search ^php74-*
Kết quả sẽ chủ yếu là các module PHP 7.4 mà bạn có thể cài đặt:
Mã:
# Output
# php74-7.4.7 Ngôn ngữ lập trình PHP
# php74-Ice37-3.7.2 Giải pháp thay thế hiện đại cho phần mềm trung gian đối tượng như CORBA/COM/DCOM/COM+
# php74-aphpbreakdown-2.2.2 Code-Analyzer for PHP for Compatibility Check-UP
# php74-aphpunit-1.8 Khung thử nghiệm cho các bài kiểm tra đơn vị
# php74-bcmath-7.4.7 Phần mở rộng chia sẻ bcmath cho php
# php74-brotli-0.7.0 Tiện ích mở rộng Brotli cho PHP
# php74-bsdconv-11.5.0 Trình bao bọc PHP cho bsdconv
# php74-bz2-7.4.7 Tiện ích mở rộng chia sẻ bz2 cho php
# php74-calendar-7.4.7 Tiện ích mở rộng chia sẻ lịch cho php
# php74-composer-1.8.6 Trình quản lý phụ thuộc cho PHP
# php74-ctype-7.4.7 Tiện ích mở rộng chia sẻ ctype cho php
# php74-curl-7.4.7 Tiện ích mở rộng chia sẻ curl cho php
# . . .
Nếu sau khi nghiên cứu, bạn quyết định rằng mình cần cài đặt một gói, bạn có thể thực hiện bằng cách sử dụng lệnh pkg install. Hầu hết các ứng dụng web PHP sẽ yêu cầu các mô-đun bổ sung, vì vậy, bạn nên biết cách tìm kiếm chúng.

Bước 4 — Cấu hình Nginx để sử dụng Mô-đun PHP​

Trước khi sử dụng PHP, bạn phải cấu hình để nó hoạt động với Nginx.

Chạy sudo vim /usr/local/etc/nginx/test.conf và điền nội dung bên dưới vào tệp:
Mã:
server { listen 80; server_name SERVER_IP; # Thay thế bằng IP hoặc tên máy chủ của bạn root /usr/local/www/nginx-dist; index index.php index.html index.htm; location / { try_files $uri $uri/ =404; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }}
Lưu tệp và thoát khỏi vim.

Bây giờ chúng ta cần đưa test.conf vào tệp nginx.conf chính. Tệp cấu hình chính cho Nginx nằm trong /usr/local/etc/nginx dưới dạng nginx.conf.

Chạy sudo vim /usr/local/etc/nginx/nginx.conf để mở tệp cấu hình chính trong Vim và thêm dòng sau vào khối http {}.
Mã:
include test.conf;
Kiểm tra cấu hình Nginx:
Mã:
sudo nginx -t
Vì bạn đã thực hiện các thay đổi cấu hình trong Nginx, bạn phải tải lại dịch vụ để những thay đổi đó được áp dụng. Nếu không, Nginx vẫn sẽ hoạt động với cấu hình trước đó:
Mã:
sudo service nginx reload

Bước 5 — Kiểm tra xử lý PHP​

Để kiểm tra xem hệ thống của bạn đã được cấu hình đúng cho PHP hay chưa, bạn có thể tạo một tập lệnh PHP rất cơ bản. Bạn sẽ gọi tập lệnh này là info.php. Theo mặc định, root được đặt thành /usr/local/www/nginx-dist. Bạn có thể tạo tệp info.php trong vị trí đó bằng cách nhập:
Mã:
sudo vim /usr/local/www/nginx-dist/info.php
Và thêm mã này vào tệp đó:
Mã:
Điều hướng đến http://your_server_IP/info.php và bạn sẽ thấy trang sau:



Sau khi cài đặt và thiết lập ngăn xếp FEMP, bạn nên xóa tệp info.php để tránh tiết lộ thông tin về máy chủ cho công chúng:
Mã:
sudo rm /usr/local/www/nginx-dist/info.php

Kết luận​

Xin chúc mừng, bạn đã cài đặt thành công ngăn xếp FEMP trên VPS FreeBSD 12.1 của mình. Bây giờ bạn có nhiều lựa chọn cho những việc cần làm tiếp theo. Bạn đã cài đặt một nền tảng cho phép bạn cài đặt hầu hết các loại trang web và phần mềm web trên đó.
 
Back
Bên trên