Cách cài đặt LEMP Stack (Linux, Nginx, PHP và MariaDB) trên Ubuntu 24.04

theanh

Administrator
Nhân viên
LEMP Stack (Linux, Nginx, MySQL/MariaDB và PHP) là một nhóm các ứng dụng phần mềm miễn phí và mã nguồn mở để lưu trữ và phát triển các ứng dụng web PHP. LEMP Stack có thể được sử dụng để triển khai cả ứng dụng web tĩnh và động.

Hướng dẫn này sẽ chỉ cho bạn cách cài đặt LEMP Stack (Linux, Nginx, MySQL/MariaDB và PHP) trên Ubuntu 24.04 "Noble Numbat". Chúng tôi cũng sẽ chỉ cho bạn cách bảo mật máy chủ MariaDB và tạo cấu hình khối máy chủ Nginx để lưu trữ các trang web hoặc tên miền.

Điều kiện tiên quyết​

Trước khi bắt đầu, hãy đảm bảo bạn có Ubuntu 24.04 "Noble Numbat" với quyền người dùng root hoặc không phải root là sudo/administrator. Ngoài ra, hãy đảm bảo UFW (Tường lửa đơn giản) đang chạy và được bật.

Cài đặt máy chủ web Nginx​

Nginx hay engine-x là máy chủ web phổ biến nhất trên internet. Nó trở nên phổ biến vì Nginx có thể xử lý lưu lượng truy cập cao cùng lúc với tài nguyên hệ thống tối thiểu. Trong bước đầu tiên này, bạn sẽ cài đặt máy chủ web Nginx trên máy chủ Ubuntu.

Trước khi cài đặt các gói, hãy cập nhật và làm mới danh sách gói Ubuntu của bạn bằng lệnh sau.
Mã:
sudo apt update

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22666%22%20height=%22192%22%3E%3C/svg%3E


Cài đặt máy chủ web Nginx vào máy Ubuntu của bạn bằng lệnh bên dưới. Nhập Y để xác nhận cài đặt khi được nhắc.
Mã:
sudo apt install nginx

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22287%22%3E%3C/svg%3E


Sau khi cài đặt hoàn tất, dịch vụ Nginx sẽ chạy và được bật trên hệ thống của bạn. Xác minh dịch vụ Nginx bằng lệnh bên dưới.
Mã:
sudo systemctl is-enabled nginx
sudo systemctl status nginx
Bạn sẽ thấy dịch vụ Nginx được 'bật' và trạng thái hiện tại là 'hoạt động (đang chạy)'.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22226%22%3E%3C/svg%3E


Trước khi truy cập Nginx, bạn cần mở cả cổng HTTP và HTTPS trên máy chủ Ubuntu của mình thông qua UFW (Tường lửa đơn giản).

Thực hiện lệnh 'ufw' sau để bật cấu hình 'Nginx Full', cho phép truy cập HTTP và HTTPS vào máy chủ Ubuntu của bạn.
Mã:
sudo ufw allow 'Nginx Full'
Bây giờ hãy xác minh các quy tắc UFW bằng lệnh sau. Đảm bảo cấu hình 'Nginx Full' được bật với trạng thái 'ALLOW'.
Mã:
sudo ufw status

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22576%22%20height=%22293%22%3E%3C/svg%3E


Cuối cùng, hãy truy cậphttp://192.168.5.30/ từ trình duyệt web ưa thích của bạn để truy cập cài đặt Nginx. Nếu thành công, bạn sẽ nhận được trang 'index.html' mặc định như sau:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22343%22%3E%3C/svg%3E

Cài đặt máy chủ MariaDB​

Sau khi cài đặt Nginx, bạn sẽ cài đặt máy chủ MariaDB trên Ubuntu. Trong ví dụ này, bạn sẽ cài đặt MariaDB thông qua kho lưu trữ Ubuntu, sau đó bảo mật cài đặt MariaDB thông qua tiện ích 'mariadb-secure-installation'.

Để cài đặt máy chủ MariaDB trên Ubuntu, hãy thực hiện lệnh 'apt install' sau. Nhập Y và nhấn ENTER để tiếp tục quá trình.
Mã:
sudo apt install mariadb-server

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22415%22%3E%3C/svg%3E


Sau khi quá trình cài đặt hoàn tất, hãy xác minh dịch vụ MariaDB bằng lệnh bên dưới. Điều này sẽ cho bạn biết trạng thái của dịch vụ MariaDB.
Mã:
sudo systemctl is-enabled mariadb
sudo systemctl status mariadb
Dịch vụ MariaDB được 'bật' với trạng thái hiện tại là 'hoạt động (đang chạy)'.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22230%22%3E%3C/svg%3E


Sau khi bạn đã cài đặt Máy chủ MariaDB, bạn phải bảo mật nó thông qua 'mariadb-secure-installation'. Điều này cho phép bạn thiết lập mật khẩu gốc MariaDB, vô hiệu hóa xác thực từ xa cho người dùng gốc và cũng xóa các cơ sở dữ liệu và đặc quyền không cần thiết khỏi cài đặt máy chủ MariaDB của bạn.

Chạy lệnh 'mariadb-secure-installation' bên dưới để bảo mật máy chủ MariaDB.
Mã:
sudo mariadb-secure-installation
Bây giờ bạn sẽ được hỏi về các cấu hình máy chủ MariaDB sau:

Nhấn ENTER khi được nhắc nhập mật khẩu gốc MariaDB.
Mã:
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Nhập 'n' khi được yêu cầu chuyển sang xác thực unix_socket.
Mã:
Switch to unix_socket authentication [Y/n] n
 ... skipping.
Nhập Y để cấu hình mật khẩu gốc MariaDB. Sau đó, nhập mật khẩu mới và lặp lại.
Mã:
Change the root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!
Nhập Y để xóa người dùng ẩn danh mặc định khỏi cài đặt máy chủ MariaDB của bạn.
Mã:
Remove anonymous users? [Y/n] Y
 ... Success!
Nhập Y để tắt chức năng đăng nhập từ xa cho người dùng gốc MariaDB. Người dùng root phải luôn kết nối từ máy chủ cục bộ.
Mã:
Disallow root login remotely? [Y/n] Y
 ... Success!
Bây giờ hãy nhập Y một lần nữa để xóa bài kiểm tra cơ sở dữ liệu mặc định và các đặc quyền của nó khỏi máy chủ MariaDB của bạn.
Mã:
Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!
Nhập Y để tải lại các bảng đặc quyền và áp dụng tất cả các thay đổi mà bạn đã thực hiện để xa.
Mã:
Reload privilege tables now? [Y/n] Y
 ... Success!
Khi hoàn tất, bạn sẽ thấy thông báo sau:
Mã:
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Cài đặt PHP-FPM​

PHP-FPM (FastCGI Process Manager) là một giải pháp thay thế cho triển khai FastCGI cho PHP. Nó chủ yếu được sử dụng cho các trang web có lưu lượng truy cập cao với Nginx là máy chủ web. Trong phần này, bạn sẽ cài đặt PHP-FPM với một số tiện ích mở rộng bổ sung, chẳng hạn như mysqli cho trình điều khiển MySQL/MariaDB, opcache và APCu để lưu trữ đệm.

Cài đặt PHP-FPM vào máy chủ Ubuntu của bạn bằng lệnh sau. Khi được nhắc, hãy nhập Y và nhấn ENTER để tiếp tục.
Mã:
sudo apt install php-fpm php-mysql php-curl php-gd php-json php-intl php-bcmath php-opcache php-apcu php-mbstring php-fileinfo php-xml php-soap php-tokenizer php-zip

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22269%22%3E%3C/svg%3E


Sau khi quá trình cài đặt hoàn tất, dịch vụ PHP-FPM sẽ được thiết lập và chạy. Kiểm tra trạng thái dịch vụ PHP-FPM bằng lệnh sau.
Mã:
sudo systemctl is-enabled php8.3-fpm
sudo systemctl status php8.3-fpm
Như bạn có thể thấy bên dưới, PHP-FPM đang 'hoạt động (đang chạy)' và 'được bật' khi khởi động hệ thống:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22206%22%3E%3C/svg%3E


Trên Ubuntu, PHP-FPM mặc định chạy dưới tệp sock. Biết đường dẫn của tệp sock PHP-FPM rất quan trọng, tệp này sẽ được sử dụng để tích hợp với máy chủ web Nginx.

Kiểm tra đường dẫn vị trí của tệp sock PHP-FPM bằng lệnh sau.
Mã:
ss -pl | grep php
Trong đầu ra sau, bạn có thể thấy tệp sock PHP-FPM nằm ở '/run/php/php8.3-fpm.sock'.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%2285%22%3E%3C/svg%3E

Tích hợp Nginx với PHP-FPM​

Bạn đã cài đặt PHP-FPM, đã đến lúc tích hợp nó với máy chủ web Nginx. Để thực hiện như vậy, bạn phải biết chính xác đường dẫn của tệp sock PHP-FPM, sau đó sửa đổi tệp khối máy chủ Nginx mặc định.

Mở cấu hình khối máy chủ '/etc/nginx/sites-available/default' bằng lệnh trình chỉnh sửa nano sau.
Mã:
sudo nano /etc/nginx/sites-available/default
Bỏ chú thích các dòng sau và đảm bảo thay đổi đường dẫn của tệp sock PHP-FPM bằng location.
Mã:
# pass PHP scripts to FastCGI server
 #
 location ~ \.php$ {
 include snippets/fastcgi-php.conf;

 # # With php-fpm (or other unix sockets):
 fastcgi_pass unix:/run/php/php8.3-fpm.sock;

 # # With php-cgi (or other tcp sockets):
 # fastcgi_pass 127.0.0.1:9000;
 }
Lưu tệp và thoát khỏi trình chỉnh sửa.

Bây giờ hãy chạy lệnh 'nginx' bên dưới để xác minh cú pháp Nginx của bạn. Bạn phải chạy lệnh này sau khi thực hiện các thay đổi đối với cấu hình Nginx.
Mã:
sudo nginx -t
Nếu bạn có cú pháp Nginx phù hợp, bạn sẽ nhận được xác nhận như sau:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22704%22%20height=%22228%22%3E%3C/svg%3E


Tiếp theo, chạy lệnh bên dưới để khởi động lại dịch vụ Nginx và áp dụng tích hợp giữa Nginx và PHP-FPM.
Mã:
sudo systemctl restart nginx
Với Nginx khởi động lại, bạn có thể xác minh tích hợp của mình thông qua tệp PHPINFO. Chạy lệnh bên dưới để tạo tệp PHPINFO 'info.php' vào thư mục gốc web mặc định '/var/www/html/'.
Mã:
echo "" > /var/www/html/info.php
Cuối cùng, quay lại trình duyệt web của bạn và truy cập http://192.168.5.30/info.php. Nếu tích hợp Nginx và PHP-FPM thành công, bạn sẽ nhận được thông báo sau:

Bạn có thể thấy bên dưới rằng PHP 8.3 đang chạy với API máy chủ PHP-FPM trong máy chủ web Nginx.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22558%22%3E%3C/svg%3E


Cuộn xuống trang và bạn sẽ thấy tiện ích mở rộng PHP mysqli/mysqlnd cũng được cài đặt.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22525%22%3E%3C/svg%3E


Cuối cùng, bạn cũng sẽ thấy bộ nhớ đệm thông qua APC được bật trên cài đặt PHP của bạn.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22452%22%3E%3C/svg%3E

Tạo khối máy chủ Nginx (máy chủ ảo)​

Khối máy chủ chỉ là một tên gọi khác của 'máy chủ ảo' dành cho máy chủ web Nginx. Nó được sử dụng để lưu trữ nhiều trang web hoặc tên miền trên một máy chủ duy nhất. Trong phần này, bạn sẽ tìm hiểu cách tạo khối máy chủ Nginx.

Trước khi tạo cấu hình khối máy chủ, hãy chạy lệnh bên dưới để tạo thư mục gốc web mới '/var/www/newsite/public_html' và trang 'index.html' tùy chỉnh.
Mã:
mkdir -p /var/www/newsite/public_html
echo "Welcome to newsite.com" > /var/www/newsite/public_html/index.html
Bây giờ hãy chạy lệnh bên dưới để thay đổi quyền sở hữu thư mục '/var/www/newsite' thành người dùng 'www-data'. Trên hệ thống Ubuntu, máy chủ web Nginx đang chạy dưới dạng người dùng 'www-data'.
Mã:
sudo chown -R www-data:www-data /var/www/newsite
Tiếp theo, chạy lệnh nano editor sau để tạo cấu hình khối máy chủ mới '/etc/nginx/sites-available/newsite'.
Mã:
sudo nano /etc/nginx/sites-available/newsite
Chèn cấu hình bên dưới, đảm bảo thay đổi tùy chọn server_name bằng tên miền của bạn và thư mục web-root thành đường dẫn mới như '/var/www/newsite/public_html'.
Mã:
server {
 listen 80;
 server_name newsite.com;

 root /var/www/newsite/public_html;
 index index.html;

 location ~ \.php$ {
 include snippets/fastcgi-php.conf;
 fastcgi_pass unix:/run/php/php8.3-fpm.sock;
 }

 location / {
 try_files $uri $uri/ =404;
 }
}
Khi hoàn tất, hãy lưu và thoát khỏi tệp.

Bây giờ hãy chạy lệnh bên dưới để kích hoạt cấu hình khối máy chủ 'newsite'. Với lệnh này, bạn sẽ tạo một liên kết tượng trưng mới của tệp '/etc/nginx/sites-available/newsite' tới thư mục '/etc/nginx/sites-enabled/'.
Mã:
sudo ln -s /etc/nginx/sites-available/newsite /etc/nginx/sites-enabled/
Sau khi khối máy chủ được kích hoạt, hãy chạy lệnh 'nginx' bên dưới để kiểm tra Nginx của bạn cú pháp.
Mã:
sudo nginx -t
Nếu không có lỗi, bạn sẽ nhận được đầu ra '... cú pháp là ok / ... thử nghiệm thành công'.

Cuối cùng, hãy chạy lệnh bên dưới để khởi động lại máy chủ web Nginx và áp dụng cấu hình khối máy chủ mới của bạn. Với điều này, cấu hình khối máy chủ của bạn sẽ có thể truy cập được từ máy cục bộ của bạn.
Mã:
sudo systemctl restart nginx

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22264%22%3E%3C/svg%3E

Kiểm tra cấu hình khối máy chủ của bạn​

Để đảm bảo cấu hình khối máy chủ Nginx của bạn thành công, bạn sẽ truy cập tên miền của máy chủ của bạn chặn cấu hình từ máy tính cục bộ của bạn. Nếu bạn đang sử dụng tên miền công cộng, hãy truy cập trực tiếp vào tên miền. Nhưng đối với người dùng miền cục bộ, hãy chỉnh sửa tệp 'hosts' trên máy tính cục bộ của bạn.
  • Đối với người dùng Linux và MacOS, hãy chỉnh sửa tệp '/etc/hosts' dưới dạng quyền root/quản trị viên.
  • Đối với người dùng Windows, hãy chỉnh sửa tệp 'C:\Windows\System32\drivers\etc\hosts' dưới dạng quản trị viên.
Thêm địa chỉ IP máy chủ và tên miền của bạn như sau:
Mã:
192.168.5.30 newsite.com
Lưu tệp và thoát.

Bây giờ hãy mở trình duyệt web của bạn và truy cập http://newsite.com/. nếu cấu hình khối máy chủ Nginx của bạn thành công, bạn sẽ nhận được trang 'index.html' tùy chỉnh mà bạn đã tạo như sau:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22657%22%20height=%22166%22%3E%3C/svg%3E

Kết luận​

Xin chúc mừng! Bây giờ bạn đã cài đặt LEMP Stack (Linux, Nginx, MySQL/MariaDB và PHP) trên Ubuntu 24.04 "Noble Numbat". Bạn cũng đã bảo mật cài đặt máy chủ MariaDB và tạo khối máy chủ Nginx để lưu trữ nhiều trang web.
 
Back
Bên trên