Install LEMP Ubuntu 24.04

Tác giả: 23/06/2024

LEMP Stack (Linux, Nginx, MySQL / MariaDB và PHP) là một nhóm các ứng dụng phần mềm mã nguồn mở và miễn phí để 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.

Ở bài viết này Nhân Hòa cùng các bạn tìm hiểu cách cài đặt LEMP Stack (Linux, Nginx, MySQL / MariaDB và PHP) trên Ubuntu 24.04 “Noble Numbat”,cách bảo mật máy chủ MariaDB và tạo cấu hình máy chủ Nginx.

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

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

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

Nginx hoặc 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 đồng thời 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 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.

sudo apt update && apt upgrade -y

Cài đặt máy chủ web Nginx vào máy Ubuntu:

sudo apt install nginx -y

Sau khi cài đặt hoàn tất, dịch vụ Nginx sẽ chạy và bật trên hệ thống:

sudo systemctl restart nginx

sudo systemctl is-enabled nginx

sudo systemctl status nginx

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.

sudo ufw allow 'Nginx Full'

sudo ufw allow ssh

Bây giờ hãy xác minh các quy tắc UFW bằng lệnh sau. Đảm bảo rằng cấu hình ‘Nginx Full‘ được bật với trạng thái ‘ALLOW’.

sudo ufw enable

sudo ufw status

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. Đầu vào Y và nhấn ENTER để tiến hành quá trình.

sudo apt install mariadb-server -y

Sau khi cài đặt xong, hãy xác minh dịch vụ MariaDB bằng lệnh bên dưới. Điều này sẽ hiển thị cho bạn trạng thái của dịch vụ MariaDB.

sudo systemctl start mariadb
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 ‘hoạt động (đang chạy)‘.

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 rootMariaDB, vô hiệu hóa xác thực từ xa cho người dùng root 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.

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.

root@LEMP-dinhtu:~# sudo mariadb-secure-installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] n
... skipping.

You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y
... Success!

Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y
... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.


Remove test database and access to it? [Y/n] Y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y
... Success!

Cleaning up...

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 việc 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 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 cho bộ nhớ đệ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.

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 -y

Sau khi cài đặt xong, 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.

sudo systemctl start php8.3-fpm
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 là ‘hoạt động (đang chạy)‘ và ‘được bật‘ khi khởi động hệ thống:

Trên Ubuntu, PHP-FPM mặc định đang chạy dưới tệp sock. Biết đường dẫn của tệp sock PHP-FPM là 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.

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‘.

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

Vì vậy, bạn đã cài đặt PHP-FPM, đã đến lúc tích hợp nó với máy chủ web Nginx. Để làm 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.

sudo nano /etc/nginx/sites-available/default

Bỏ ghi chú các dòng sau và đảm bảo thay đổi đường dẫn của tệp sock PHP-FPM với vị trí mới.

Lưu ý thêm 1 dấu } vào block

 # 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 thay đổi cấu hình Nginx.

sudo nginx -t

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 của bạn giữa Nginx và PHP-FPM.

Với Nginx được 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/‘.

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 việc tích hợp Nginx và PHP-FPM của bạn thành công, bạn sẽ nhận được những điều 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 dưới máy chủ web Nginx.

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.

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(acpu).

Tạo khối máy chủ Nginx

Khối máy chủ chỉ là tên gọi khác của ‘virtual host’ 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ẽ học 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.

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 với tư cách là người dùng ‘www-data‘.

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’.

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 với tên miền của bạn và thư mục gốc web sang đường dẫn mới như ‘/var/www/newsite/public_html‘.

server {
   listen 80;
   server_name newsite.xyz;

   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 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‘ đến thư mục ‘/etc/nginx/sites-enabled/‘.

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 cú pháp Nginx của bạn.

sudo nginx -t

Nếu không có lỗi, bạn sẽ nhận được đầu ra ‘… Syntax ok / … thử nghiệm thành công‘.

Cuối cùng, 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.

sudo systemctl restart nginx

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 cấu hình khối máy chủ từ máy tính cục bộ của mình. 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 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 ‘máy chủ’ 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 đặc quyền root / quản trị.
  • Đối với người dùng Windows, hãy chỉnh sửa tệp ‘C: \ Windows \ System32 \ driver \ etc \ hosts‘ với tư cách quản trị viên.

Thêm địa chỉ IP máy chủ và tên miền của bạn như sau:

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:

Kết thúc

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 một khối máy chủ Nginx để lưu trữ nhiều trang web.

Hẹn gặp lại các bạn tại các bài viết sau tại wiki.nhanhoa.com.