Cách cài đặt máy chủ LEMP (Nginx, PHP và MariaDB) trên Ubuntu 22.04

Tác giả Security+, T.Hai 05, 2024, 03:00:58 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Cách cài đặt máy chủ LEMP (Nginx, PHP và MariaDB) trên Ubuntu 22.04


LEMP là tập hợp gồm bốn thành phần nguồn mở được sử dụng cùng nhau để lưu trữ các trang web và ứng dụng web trên Internet. LEMP là viết tắt của L cho hệ điều hành Linux, N cho máy chủ web Nginx, M cho cơ sở dữ liệu MySQL hoặc MariaDB và P cho ngôn ngữ PHP. Nó thường được sử dụng để lưu trữ các ứng dụng có quy mô cao trên Internet. Ngăn xếp LEMP được cộng đồng hỗ trợ tốt và được các nhà phát triển trên toàn thế giới sử dụng.

Bài viết này sẽ hướng dẫn bạn cách cài đặt máy chủ LEMP trên Ubuntu 22.04.

1. Yêu cầu

  • Một máy chủ chạy Ubuntu 22.04.
  • Ít nhất 1 GB RAM và 5 GB ổ cứng.
  • Mật khẩu root được thiết lập trên máy chủ.

2. Cài đặt Nginx trên Ubuntu 22.04

Gói máy chủ web Nginx được bao gồm theo mặc định trong kho lưu trữ tiêu chuẩn Ubuntu 22.04. Bạn có thể dễ dàng cài đặt nó bằng lệnh sau:

Mã nguồn [Chọn]
apt-get install nginx -y
Khi gói máy chủ web Nginx được cài đặt, hãy khởi động dịch vụ Nginx và kích hoạt nó bằng lệnh sau để nó khởi động lại khi khởi động lại hệ thống:

Mã nguồn [Chọn]
systemctl start nginx

systemctl enable nginx

Để kiểm tra trạng thái của Nginx, hãy chạy lệnh sau:

Mã nguồn [Chọn]
systemctl status nginx
Bạn sẽ nhận được kết quả đầu ra sau:

Mã nguồn [Chọn]
? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2022-04-29 07:47:01 UTC; 17s ago
       Docs: man:nginx(8)
    Process: 11919 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 11920 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 12009 (nginx)
      Tasks: 3 (limit: 4630)
     Memory: 3.3M
        CPU: 55ms
     CGroup: /system.slice/nginx.service
             ??12009 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
             ??12011 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
             ??12012 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""

Apr 29 07:47:01 ubuntu systemd[1]: Starting A high performance web server and a reverse proxy server...
Apr 29 07:47:01 ubuntu systemd[1]: Started A high performance web server and a reverse proxy server.

Để kiểm tra phiên bản Nginx, hãy thực hiện lệnh sau:

Mã nguồn [Chọn]
nginx -V
Bạn sẽ nhận được kết quả đầu ra sau:

Mã nguồn [Chọn]
nginx version: nginx/1.18.0 (Ubuntu)
built with OpenSSL 3.0.2 15 Mar 2022
TLS SNI support enabled
configure arguments: --with-cc-opt='-g -O2 -ffile-prefix-map=/build/nginx-9P0wNJ/nginx-1.18.0=. -flto=auto -ffat-lto-objects -flto=auto -ffat-lto-objects -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -flto=auto -ffat-lto-objects -flto=auto -Wl,-z,relro -Wl,-z,now -fPIC' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-compat --with-debug --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --add-dynamic-module=/build/nginx-9P0wNJ/nginx-1.18.0/debian/modules/http-geoip2 --with-http_addition_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_sub_module

Bạn cũng có thể kiểm tra cài đặt Nginx thông qua trình duyệt web tại URL http://your-server-ip. Bạn sẽ thấy trang kiểm tra Nginx trên màn hình sau:


3. Cài đặt PHP và PHP-FPM trên Ubuntu 22.04

PHP là ngôn ngữ xử lý được sử dụng để phục vụ các trang PHP. Theo mặc định, phiên bản PHP mới nhất được bao gồm trong kho lưu trữ Ubuntu 22.04 tiêu chuẩn. Bạn có thể cài đặt nó cùng với các tiện ích mở rộng khác bằng lệnh sau:

Mã nguồn [Chọn]
apt-get install php8.1 php8.1-fpm php8.1-mysql php8.1-gd php8.1-curl php8.1-xml -y
Sau khi cài đặt PHP, hãy khởi động dịch vụ PHP-FPM bằng lệnh sau:

Mã nguồn [Chọn]
systemctl start php8.1-fpm
Để kiểm tra trạng thái của PHP-FPM, hãy chạy lệnh sau:

Mã nguồn [Chọn]
systemctl status php8.1-fpm
Bạn sẽ nhận được kết quả đầu ra sau:

? php8.1-fpm.service - The PHP 8.1 FastCGI Process Manager
     Loaded: loaded (/lib/systemd/system/php8.1-fpm.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2022-04-29 07:48:26 UTC; 2min 8s ago
       Docs: man:php-fpm8.1(8)
    Process: 13491 ExecStartPost=/usr/lib/php/php-fpm-socket-helper install /run/php/php-fpm.sock /etc/php/8.1/fpm/pool.d/www.conf 81 (code=e>
   Main PID: 13488 (php-fpm8.1)
     Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec"
      Tasks: 3 (limit: 4630)
     Memory: 9.2M
        CPU: 116ms
     CGroup: /system.slice/php8.1-fpm.service
             ??13488 "php-fpm: master process (/etc/php/8.1/fpm/php-fpm.conf)" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "">
             ??13489 "php-fpm: pool www" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ">
             ??13490 "php-fpm: pool www" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ">

Apr 29 07:48:26 ubuntu systemd[1]: Starting The PHP 8.1 FastCGI Process Manager...
Apr 29 07:48:26 ubuntu systemd[1]: Started The PHP 8.1 FastCGI Process Manager.

4. Cài đặt máy chủ MySQL trên Ubuntu 22.04

MySQL là một hệ thống quản lý cơ sở dữ liệu có thể được sử dụng làm cơ sở dữ liệu phụ trợ cho bất kỳ ứng dụng web nào. Theo mặc định, phiên bản mới nhất của MySQL được bao gồm trong kho lưu trữ mặc định của Ubuntu 22.04. Bạn có thể cài đặt nó bằng lệnh sau:

Mã nguồn [Chọn]
apt-get install mysql-server -y
Sau khi MySQL được cài đặt, hãy khởi động và kích hoạt dịch vụ MySQL bằng lệnh sau:

Mã nguồn [Chọn]
systemctl start mysql

systemctl enable mysql

Bạn cũng có thể kiểm tra trạng thái MySQL bằng lệnh sau:

Mã nguồn [Chọn]
systemctl status mysql
Bạn sẽ thấy đầu ra sau:

Mã nguồn [Chọn]
? mysql.service - MySQL Community Server
     Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2022-04-29 07:43:21 UTC; 5min ago
   Main PID: 11476 (mysqld)
     Status: "Server is operational"
      Tasks: 38 (limit: 4630)
     Memory: 358.7M
        CPU: 2.266s
     CGroup: /system.slice/mysql.service
             ??11476 /usr/sbin/mysqld

Apr 29 07:43:20 ubuntu systemd[1]: Starting MySQL Community Server...
Apr 29 07:43:21 ubuntu systemd[1]: Started MySQL Community Server.

Bạn cũng có thể kiểm tra phiên bản MySQL bằng lệnh sau:

Mã nguồn [Chọn]
mysql --version
Bạn sẽ nhận được kết quả đầu ra sau:

Mã nguồn [Chọn]
mysql  Ver 8.0.28-0ubuntu4 for Linux on x86_64 ((Ubuntu))
Theo mặc định, MySQL không được bảo mật và mật khẩu root không được đặt. Vì vậy, bạn cần bảo mật nó bằng cách chạy đoạn script sau:

Mã nguồn [Chọn]
mysql_secure_installation
Đặt mật khẩu MySQL mới như hiển thị bên dưới:

Mã nguồn [Chọn]
Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No:
Please set the password for root here.

New password:

Re-enter new password:
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL 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.

Xóa người dùng ẩn danh (xem bên dưới):

Mã nguồn [Chọn]
Remove anonymous users? (Press y|Y for Yes, any other key for No) : 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.

Không cho phép đăng nhập root từ xa (xem bên dưới):

Mã nguồn [Chọn]
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Success.

By default, MySQL 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.

Xóa cơ sở dữ liệu kiểm tra (xem bên dưới):

Mã nguồn [Chọn]
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : 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.

Đặt lại quyền như hiển thị bên dưới:

Mã nguồn [Chọn]
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
Success.

All done!

5. Kiểm tra cài đặt PHP

Nginx sử dụng PHP-FPM để xử lý các trang PHP. Do đó, bạn cần chỉnh sửa tệp cấu hình mặc định của Nginx cho máy chủ ảo và xác định sock PHP-FPM để phục vụ trang PHP:

Chỉnh sửa tệp cấu hình Nginx mặc định bằng lệnh sau:

Mã nguồn [Chọn]
nano /etc/nginx/sites-enabled/default
Xóa tất cả các dòng và thêm các dòng sau:

Mã nguồn [Chọn]
server {
        listen   80;
        root /var/www/html;
        index info.php;
        server_name  _;
        location / {
                try_files $uri $uri/ =404;
        }

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

Lưu và đóng tệp và kiểm tra Nginx để tìm lỗi cú pháp bằng lệnh sau:

Mã nguồn [Chọn]
nginx -t
Bạn sẽ nhận được kết quả đầu ra sau:

Mã nguồn [Chọn]
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Tiếp theo, khởi động lại dịch vụ Nginx để áp dụng các thay đổi:

Mã nguồn [Chọn]
systemctl restart nginx
Bây giờ hãy tạo một trang thông tin PHP mẫu trong thư mục gốc của web Nginx:

Mã nguồn [Chọn]
nano /var/www/html/info.php
Dán đoạn mã sau:

Mã nguồn [Chọn]
<?php
   phpinfo
();
?>

Lưu và đóng tệp, sau đó mở trình duyệt web của bạn và truy cập trang PHP qua URL http://your-server-ip. Bạn sẽ thấy trang thông tin PHP trên màn hình sau:


Chúc mừng! Bạn đã cài đặt thành công máy chủ LEMP trên Ubuntu 22.04. Bây giờ bạn có thể sử dụng máy chủ LEMP trong môi trường phát triển để tạo, kiểm tra và triển khai ứng dụng web. Nếu bạn có bất kỳ câu hỏi nào, xin vui lòng liên hệ với tôi.