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ùngsudo
. - 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