Cài đặt LEMP stack trên Debian 11 - Install LEMP stack on Debian 11

Install LEMP Stack Nginx, MySQL, PHP trên Debian 11. Trong bài viết này, mình sẽ hướng dẫn cách cài đặt Nginx, MySQL 8.0 và PHP 8.1.

Bạn cũng sẽ cài đặt một số phần mở rộng PHP phổ biến và điều chỉnh cấu hình PHP. Cuối cùng, bạn sẽ bảo mật thiết lập của mình bằng Let's Encrypt SSL và định cấu hình chuyển hướng HTTPS. Thiết lập này đã được thử nghiệm trên đám mây của Google, vì vậy nó sẽ hoạt động trên tất cả các dịch vụ lưu trữ đám mây như AWS, Azure hoặc bất kỳ VPS hoặc bất kỳ máy chủ chuyên dụng nào chạy Debian 11.

Chuẩn bị trước khi cài đặt

  • Quyền truy cập root vào máy chủ của bạn hoặc người dùng sudo.
  • Domain trỏ tới IP server của bạn để cài đặt Let'sEncrypt SSL.

Bước 1: Khởi tạo thiết lập

Bắt đầu bằng cách cập nhật các gói lên phiên bản mới nhất hiện có bằng lệnh sau.

sudo apt update
sudo apt upgrade

Cài đặt gói wget.

sudo apt install wget

Khi bạn đã cập nhật thiết lập, bạn có thể bắt đầu thiết lập.

Bước 2: Cài đặt Nignx

Cài đặt Nginx bằng lệnh sau.

sudo apt install nginx

Điều này sẽ cài đặt nginx và tất cả các phụ thuộc cần thiết.

Bước 3: Thiết lập tường lửa

Bây giờ bạn có thể thiết lập Tường lửa không phức tạp (UFW) với Nginx để cho phép truy cập công khai trên các cổng web mặc định cho HTTP và HTTPS

sudo ufw app list

Bạn sẽ thấy tất cả các ứng dụng được liệt kê:

Output
Available applications:
   Nginx Full
   Nignx HTTP
   Nginx HTTPS
   OpenSSH
  • Nginx HTTP: Cấu hình này mở cổng 80 (lưu lượng truy cập web bình thường, không được mã hóa)
  • Nginx Full: Cấu hình này mở cả cổng 80 (lưu lượng truy cập web bình thường, không được mã hóa) và cổng 443 (lưu lượng truy cập được mã hóa TLS/SSL)
  • Nginx HTTPS: Cấu hình này chỉ mở cổng 443 (lưu lượng được mã hóa TLS/SSL)
  • OpenSSH: Cấu hình này mở cổng 22 để truy cập SSH.

Nếu bạn không sử dụng SSL, bạn chỉ cần kích hoạt cấu hình Nginx HTTP.

Bây giờ chúng ta sẽ kích hoạt Nginx Full.

sudo uff allow OpenSSH
sudo ufw allow 'Nginx Full'

Với lệnh này bạn có thể xem trạng thái của UFW.

sudo ufw status

Bạn sẽ thấy đầu ra như sau.

Output
Status: active
 To                         Action      From
 --                         ------      ----
 Nginx Full                 ALLOW       Anywhere                  
 OpenSSH                    ALLOW       Anywhere                  
 Nginx Full (v6)            ALLOW       Anywhere (v6)             
 OpenSSH (v6)               ALLOW       Anywhere (v6)

Bước: 4 Kiểm tra cài đặt Nginx

Khi Nginx được cài đặt, nó sẽ tự động khởi động và sẵn sàng hoạt động.

Mọi tiến trình trong Nginx đều được quản lý bằng lệnh systemctl. Kiểm tra trạng thái của Nginx bằng lệnh sau.

sudo systemctl status nginx
● 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 Thu 2022-02-03 03:13:00 UTC; 6h ago
       Docs: man:nginx(8)
    Process: 11261 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code>
    Process: 11262 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, >
   Main PID: 11263 (nginx)
      Tasks: 3 (limit: 8622)

Bây giờ chúng ta đã cài đặt và cấu hình tường lửa Nignx.

Bước 5: Cài đặt MySQL

Để thêm kho lưu trữ MySQL APT vào hệ thống của bạn, truy cập trang tải xuống kho lưu trữ và tải xuống gói phát hành mới nhất bằng lệnh sau.

wget https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.deb

Cài đặt gói phát hành.

sudo apt install ./mysql-apt-config_0.8.22-1_all.deb

Mình sẽ cài đặt MySQL phiên bản 8.0. Chọn OK bằng cách nhấn Tab và nhấn Enter 

Bây giờ bạn có thể cài đặt MySQL.

sudo apt update
sudo apt install mysql-server

Sau khi cài đặt hoàn tất, dịch vụ MySQL sẽ tự động khởi động. Để xác minh rằng máy chủ MySQL đang chạy, gõ:

sudo service mysql status

Đầu ra sẽ hiển thị rằng dịch vụ đã được bật và đang chạy:

 mysql.service - MySQL Community Server
     Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2022-02-02 06:12:30 UTC; 17s ago
       Docs: man:mysqld(8)
             http://dev.mysql.com/doc/refman/en/using-systemd.html
   Main PID: 101929 (mysqld)
     Status: "Server is operational"
      Tasks: 38 (limit: 1148)
     Memory: 369.3M
        CPU: 805ms
     CGroup: /system.slice/mysql.service
             └─101929 /usr/sbin/mysqld

Feb 02 06:12:29 demo systemd[1]: Starting MySQL Community Server...
Feb 02 06:12:30 demo systemd[1]: Started MySQL Community Server.

Bước 6: Bảo mật MySQL

Quá trình cài đặt MySQL đi kèm với một tập lệnh có tên mysql_secure_installation cho phép bạn dễ dàng cải thiện bảo mật máy chủ MySQL.

sudo mysql_secure_installation

Bạn sẽ được yêu cầu định cấu hình PLUGIN XÁC NHẬN MẬT KHẨU HỢP LỆ được sử dụng để kiểm tra độ mạnh của mật khẩu người dùng MySQL và cải thiện tính bảo mật.

Nhấn y nếu bạn muốn thiết lập plugin xác thực mật khẩu hoặc bất kỳ phím nào khác để chuyển sang bước tiếp theo.

Có ba cấp độ chính sách xác thực mật khẩu, thấp, trung bình và mạnh.

Nhập 2 để xác thực mật khẩu mạnh.

Trong lời nhắc tiếp theo, bạn sẽ được yêu cầu đặt mật khẩu cho người dùng root MySQL.

Nếu bạn thiết lập plugin xác thực mật khẩu, tập lệnh sẽ hiển thị cho bạn độ mạnh của mật khẩu mới. Gõ y để xác nhận mật khẩu.

Tiếp theo, bạn sẽ được yêu cầu xóa người dùng ẩn danh, hạn chế quyền truy cập của người dùng root vào máy cục bộ, xóa cơ sở dữ liệu kiểm tra và tải lại các bảng đặc quyền. Bạn trả lời y cho tất cả các câu hỏi.

Bước 7: Cài đặt PHP

Thêm SURY PPA cho PHP 8.1

sudo apt -y install lsb-release apt-transport-https ca-certificates
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg

Bây giờ bạn có thể thêm PPA vào các gói máy chủ.

echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list

Cập nhật các gói và cài đặt PHP 8.1

sudo apt update

sudo apt install php php8.1-fpm php8.1-mysql php8.1-common php8.1-mysql php8.1-xml php8.1-xmlrpc php8.1-curl php8.1-gd php8.1-imagick php8.1-cli php8.1-dev php8.1-imap php8.1-mbstring php8.1-opcache php8.1-soap php8.1-zip php8.1-intl -y

Sau khi cài đặt PHP, bạn có thể kiểm tra phiên bản bằng lệnh sau.

php -v

Bước 8: Cấu hình PHP

Bây giờ chúng ta định cấu hình PHP cho ứng dụng Web bằng cách thay đổi một số giá trị trong tệp php.ini.

Đối với PHP 8.1 với Nginx, vị trí php.ini sẽ nằm trong thư mục sau.

sudo nano /etc/php/8.1/fpm/php.ini

Nhấn F6 để tìm kiếm bên trong trình chỉnh sửa và cập nhật các giá trị sau để có hiệu suất tốt hơn.

upload_max_filesize = 32M 
post_max_size = 48M
memory_limit = 256M
max_execution_time = 600
max_input_vars = 3000
max_input_time = 1000

Khi bạn đã sửa đổi cài đặt PHP của mình, bạn cần khởi động lại PHP-FPM để các thay đổi có hiệu lực.

sudo service php8.1-fpm restart

Bước 9: Cấu hình Nginx

Vô hiệu hóa cấu hình Nginx mặc định.

sudo rm -rf /etc/nginx/sites-enabled/default
sudo rm -rf /etc/nginx/sites-available/default

Tạo thư mục trang web.

sudo mkdir -p /var/www/html/domainname/public

Thiết lập quyền chính xác.

sudo chmod -R 755 /var/www/html/domainname
sudo chown -R www-data:www-data /var/www/html/domainname

Tạo cấu hình khối máy chủ mới.

sudo nano /etc/nginx/sites-available/domainname.conf

Dán các cấu hình sau vào tệp mới.

server {
    listen 80;
    listen [::]:80;

    server_name yourdomainname.com www.yourdomainname.com;

    root /var/www/html/domainname/public;
    index index.html index.php;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }
}

Kích hoạt cấu hình mới.

sudo ln -s /etc/nginx/sites-available/domainname.conf /etc/nginx/sites-enabled/domainname.conf

Bước 10: Cài đặt Let's Encrypt SSL

HTTPS là một giao thức để liên lạc an toàn giữa máy chủ (ví dụ) và máy khách (trình duyệt web). Do sự ra đời của Let's Encrypt, nơi cung cấp chứng chỉ SSL miễn phí, HTTPS được mọi người chấp nhận và cũng mang lại niềm tin cho khán giả của bạn.

Ở đây chúng ta sẽ cài đặt Certbot để cài đặt Let'sEncrypt SSL bằng Snap.

sudo apt update
sudo apt install snapd -y
sudo snap install core
sudo snap refresh core

Cài đặt công cụ Certbot.

sudo snap install --classic certbot

Định cấu hình Certbot để có thể thực thi được dưới dạng lệnh.

sudo ln -s /snap/bin/certbot /usr/bin/certbot

Bây giờ chúng ta đã cài đặt Certbot để cài Let's Encrypt cho Debian 11.

Thực hiện lệnh sau để cài đặt chứng chỉ của bạn.

sudo certbot --nginx --agree-tos --redirect -m youremail@email.com -d domainname.com -d www.domainname.com

Chọn tùy chọn thích hợp và nhấn Enter

Lệnh này sẽ cài đặt SSL miễn phí, định cấu hình chuyển hướng sang HTTPS và khởi động lại máy chủ Nginx.

Bước 11: Gia hạn chứng chỉ SSL

Chứng chỉ do Let's Encrypt cung cấp chỉ có hiệu lực trong 90 ngày, vì vậy bạn cần gia hạn chúng thường xuyên. Vì vậy, kiểm tra tính năng gia hạn bằng lệnh sau.

sudo certbot renew --dry-run

Lệnh này sẽ kiểm tra thời hạn sử dụng của chứng chỉ và định cấu hình tính năng tự động gia hạn.

Bước: 12: Kiểm tra thiết lập

Khi đã thực hiện các bước, bạn có thể tạo tệp PHP thử nghiệm mới trong thư mục web của mình.

sudo nano /var/www/html/domainname/public/info.php

Dán đoạn mã dưới đây vào trong tập tin.

<?php phpinfo();

Lưu các tập tin.

Bây giờ hãy tiếp tục và kiểm tra tên miền của bạn với info.php trong url (domainname.com/info.php). Bạn sẽ thấy tên miền của mình đã được chuyển hướng đến HTTPS và xem chi tiết thông tin PHP.

Trong bài viết này, chúng ta đã học cách install LEMP stack trên Debian 11 một cách đơn giản và nhanh chóng. LEMP stack cung cấp một môi trường mạnh mẽ để phát triển và triển khai ứng dụng web trên hệ điều hành Debian. Việc cài đặt Nginx, MySQL và PHP đã giúp chúng ta sẵn sàng để bắt đầu phát triển và chạy các ứng dụng web trên máy chủ của mình. Chúc bạn thành công trong việc sử dụng LEMP stack trên Debian 11!

Mọi người cũng tìm kiếm: lemp stack, lemp debian 11