Thứ Năm, Tháng 3 27, 2025
Google search engine
HomelinuxCách cài đặt Nginx với PHP và MySQL (LEMP Stack) trên Ubuntu...

Cách cài đặt Nginx với PHP và MySQL (LEMP Stack) trên Ubuntu 22.04

Cách cài đặt Nginx với PHP và MySQL (LEMP Stack) trên Ubuntu 22.04

Ngăn xếp phần mềm LEMP là một nhóm phần mềm mã nguồn mở cho phép máy chủ lưu trữ các trang web và ứng dụng động được viết bằng PHP. Nó là từ viết tắt của L inux, Nginx (phát âm là E ngine-X), M ySQL và P HP.

Hướng dẫn này sẽ chỉ cho bạn cách cài đặt LEMP Stack trên máy chủ Ubuntu 22.04. Bạn cũng sẽ học cách cài đặt các ứng dụng như phpMyAdmin.

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

  • Máy chủ chạy Ubuntu 22.04.
  • Người dùng không phải root có đặc quyền sudo.
  • Tường lửa không phức tạp (UFW) được bật và đang chạy.
  • Mọi thứ đều được cập nhật.

    $ sudo apt update && sudo apt upgrade

Bước 1 – Định cấu hình tường lửa

Bước đầu tiên trước khi cài đặt bất kỳ gói nào là định cấu hình tường lửa để cho phép các kết nối HTTP và HTTPS.

Kiểm tra trạng thái của tường lửa.

$ sudo ufw status

Bạn sẽ thấy một cái gì đó như sau.

Status: active

To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)

Cho phép các cổng HTTP và HTTPs.

$ sudo ufw allow http
$ sudo ufw allow https

Kiểm tra lại trạng thái để xác nhận.

$ sudo ufw status
Status: active

To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443/tcp (v6) ALLOW Anywhere (v6)

Bước 2 – Cài đặt PHP

Ubuntu 22.04 chạy với PHP 8.1 theo mặc định. Bạn có thể cài đặt nó bằng cách chạy lệnh sau.

$ sudo apt install php-fpm php-cli php-mysqlnd php-mbstring php-xml php-gd

Chúng tôi đã cài đặt các phần mở rộng MySQL, CLI, GD, Mbstring và XML của PHP. Bạn có thể cài đặt bất kỳ tiện ích mở rộng bổ sung nào theo yêu cầu của bạn.

Để luôn sử dụng phiên bản PHP mới nhất hoặc nếu bạn muốn cài đặt nhiều phiên bản PHP, hãy thêm kho lưu trữ PHP của Ondrej.

Thêm kho lưu trữ PHP của Ondrej.

$ sudo add-apt-repository ppa:ondrej/php

Bây giờ, bạn có thể cài đặt bất kỳ phiên bản PHP nào.

$ sudo apt install php8.0-fpm php8.0-cli

Kiểm tra phiên bản PHP đã cài đặt.

$ php --version
PHP 8.1.2 (cli) (built: Jun 13 2022 13:52:54) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.2, Copyright (c) Zend Technologies
with Zend OPcache v8.1.2, Copyright (c), by Zend Technologies

Bước 3 – Cài đặt MySQL

Ubuntu 22.04 đi kèm với phiên bản MySQL mới nhất. Bạn có thể cài đặt nó bằng một lệnh duy nhất.

$ sudo apt install mysql-server

Kiểm tra phiên bản của MySQL.

$ mysql --version
mysql Ver 8.0.29-0ubuntu0.22.04.2 for Linux on x86_64 ((Ubuntu))

Bước này là cần thiết cho MySQL phiên bản 8.0.28 trở lên. Nhập MySQL Shell.

$ sudo mysql

Chạy lệnh sau để đặt mật khẩu cho người dùng root của bạn. Đảm bảo rằng nó có sự kết hợp của số, chữ hoa, chữ thường và ký tự đặc biệt.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourPassword12!';

Thoát khỏi vỏ.

mysql> exit

Chạy tập lệnh cài đặt bảo mật MySQL.

$ sudo mysql_secure_installation

Bạn sẽ được yêu cầu cài đặt Thành phần Mật khẩu Xác thực. Nó kiểm tra độ mạnh của mật khẩu được sử dụng trong MySQL. Nhấn Y để cài đặt nó.

Tiếp theo, bạn sẽ được yêu cầu đặt cấp độ của chính sách xác thực mật khẩu. Chọn 2 vì nó là cái mạnh nhất.

Tiếp theo, nhập mật khẩu gốc của bạn. Nhấn N để từ chối thay đổi nó.

Nhấn Y để xóa người dùng ẩn danh, không cho phép đăng nhập gốc từ xa, xóa cơ sở dữ liệu thử nghiệm và tải lại các bảng đặc quyền.

Bước 4 – Định cấu hình MySQL

Đăng nhập vào MySQL shell. Nhập mật khẩu gốc của bạn khi được nhắc.

$ sudo mysql -u root -p

Tạo cơ sở dữ liệu mẫu.

mysql> CREATE DATABASE exampledb;

Tạo tài khoản người dùng SQL.

mysql> CREATE USER 'exampleuser'@'localhost' IDENTIFIED BY 'YourPassword2!';

Cấp tất cả các đặc quyền trên cơ sở dữ liệu cho người dùng.

mysql> GRANT ALL PRIVILEGES ON exampledb.* TO 'exampleuser'@'localhost';

Xóa đặc quyền của người dùng.

mysql> FLUSH PRIVILEGES;

Thoát khỏi vỏ.

mysql> exit

Hãy để chúng tôi đăng nhập lại vào MySQL shell bằng người dùng mới được tạo.

$ sudo mysql -u exampleuser -p

Tạo một bảng kiểm tra.

mysql> CREATE TABLE exampledb.name_list ( sno INT AUTO_INCREMENT, content VARCHAR(255), PRIMARY KEY(sno) );

Chèn dữ liệu thử nghiệm.

mysql> INSERT INTO exampledb.name_list (content) VALUES ("Navjot");

Lặp lại lệnh trên các lần riêng biệt để thêm nhiều mục nhập hơn. Chạy lệnh sau để kiểm tra nội dung của bảng.

mysql> SELECT * FROM exampledb.name_list;

Bạn sẽ nhận được kết quả sau.

+-----+---------+
| sno | content |
+-----+---------+
| 1 | Navjot |
| 2 | Adam |
| 3 | Josh |
| 4 | Peter |
+-----+---------+
4 rows in set (0.00 sec)

Thoát khỏi trình bao MySQL.

mysql> exit

Bước 5 – Cài đặt Nginx

Ubuntu 22.04 đi kèm với phiên bản Nginx cũ hơn. Để cài đặt phiên bản mới nhất, bạn cần tải xuống kho lưu trữ chính thức của Nginx.

Nhập khóa ký của Nginx.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Thêm kho lưu trữ cho phiên bản ổn định của Nginx.

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64]
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx"
| sudo tee /etc/apt/sources.list.d/nginx.list

Cập nhật kho hệ thống.

$ sudo apt update

Cài đặt Nginx.

$ sudo apt install nginx

Xác minh cài đặt.

$ nginx -v
nginx version: nginx/1.22.0

Bước 6 – Định cấu hình PHP-FPM

Mở php.ini để chỉnh sửa.

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

Để đặt kích thước tệp tải lên, hãy thay đổi giá trị của các biến upload_max_filesizepost_max_size .

upload_max_filesize = 50M
...
post_max_size = 50M

Định cấu hình giới hạn bộ nhớ của PHP tùy thuộc vào tài nguyên máy chủ và yêu cầu của bạn.

memory_limit = 256M

Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Mở tệp /etc/php/8.0/fpm/pool.d/www.conf .

$ sudo nano /etc/php/8.0/fpm/pool.d/www.conf

Chúng ta cần đặt người dùng Unix / nhóm các quy trình PHP thành nginx . Tìm dòng user=www-datagroup=www-data trong tệp và thay đổi chúng thành nginx .

...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
user = nginx
group = nginx
...

Ngoài ra, hãy tìm các dòng listen.owner=www-datalisten.group=www-data trong tệp và thay đổi chúng thành nginx .

listen.owner = nginx
listen.group = nginx

Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Khởi động lại quy trình PHP-fpm.

$ sudo systemctl restart php8.1-fpm

Bước 7 – Cài đặt phpMyAdmin

Tải xuống tệp lưu trữ của phpMyAdmin cho ngôn ngữ tiếng Anh.

$ wget https://files.phpmyadmin.net/phpMyAdmin/5.2.0/phpMyAdmin-5.2.0-english.tar.gz

Tạo một thư mục công khai cho trang web.

$ sudo mkdir /var/www/html/example.com -p

Giải nén kho lưu trữ vào thư mục công cộng.

$ sudo tar -xzvf phpMyAdmin-5.2.0-english.tar.gz -C /var/www/example.com

Chuyển sang thư mục công khai.

$ cd /var/www/html/example.com

Đổi tên thư mục đã trích xuất thành một thứ gì đó khó hiểu để cải thiện tính bảo mật.

$ sudo mv phpMyAdmin-5.2.0-english sm175

Bước 8 – Định cấu hình phpMyAdmin

Sao chép tệp cấu hình mẫu.

$ sudo cp sm175/config.sample.inc.php sm175/config.inc.php

Mở tệp cấu hình để chỉnh sửa.

$ sudo nano sm175/config.inc.php

Tìm dòng $cfg['blowfish_secret'] = ''; và nhập một chuỗi ngẫu nhiên 32 ký tự để xác thực dựa trên cookie.

Bạn có thể sử dụng trình tạo Blowfish trực tuyến của phpSolved hoặc thực hiện thông qua dòng lệnh.

Sao chép giá trị và dán nó như được hiển thị.

$cfg['blowfish_secret'] = 'Tc/HfLPBOAPxJ-rhQP}HJoZEK69c3j:m';

Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Thay đổi quyền sở hữu trang web và phpMyAdmin thành máy chủ Nginx.

$ sudo chown -R nginx:nginx /var/www/html/example.com

Xóa thư mục thiết lập của phpMyAdmin.

$ sudo rm -rf /var/www/html/example.com/sm175/setup

Bước 9 – Định cấu hình Opcache

Opcache là hệ thống bộ nhớ đệm của PHP. Nó hoạt động bằng cách lưu mã bytecode tập lệnh được biên dịch trước trong bộ nhớ, vì vậy mỗi khi người dùng truy cập một trang, nó sẽ tải nhanh hơn. Opcache được cài đặt theo mặc định. Để xác minh, hãy kiểm tra phiên bản PHP.

$ php --version
PHP 8.1.2 (cli) (built: Jun 13 2022 13:52:54) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.2, Copyright (c) Zend Technologies
with Zend OPcache v8.1.2, Copyright (c), by Zend Technologies

Điều này cho chúng tôi biết rằng Opcache đã được cài đặt và khả dụng. Trong trường hợp, nó không hiển thị ở đây, bạn có thể cài đặt thủ công bằng cách chạy lệnh sau.

$ sudo apt install php-opcache

Để thay đổi cài đặt Opcache, hãy mở tệp /etc/php/8.1/fpm/conf.d/10-opcache.ini để chỉnh sửa.

$ sudo nano /etc/php/8.1/fpm/conf.d/10-opcache.ini

Các cài đặt sau sẽ giúp bạn bắt đầu sử dụng Opcache và thường được khuyến nghị để có hiệu suất tốt. Bạn có thể kích hoạt một cấu hình bằng cách bỏ ghi chú nó bằng cách bỏ dấu chấm phẩy trước nó.

opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60

Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Bước 10 – Cài đặt Certbot cho SSL

Chúng tôi cần cài đặt Certbot để tạo chứng chỉ SSL miễn phí do Let’s Encrypt cung cấp.

Bạn có thể cài đặt Certbot bằng cách sử dụng kho lưu trữ của Ubuntu hoặc lấy phiên bản mới nhất bằng công cụ Snapd. Chúng tôi sẽ sử dụng phiên bản Snapd.

Ubuntu 22.04 đi kèm với Snapd được cài đặt theo mặc định. Chạy các lệnh sau để đảm bảo rằng phiên bản Snapd của bạn được cập nhật.

$ sudo snap install core
$ sudo snap refresh core

Cài đặt Certbot.

$ sudo snap install --classic certbot

Sử dụng lệnh sau để đảm bảo rằng lệnh Certbot có thể được chạy bằng cách tạo một liên kết tượng trưng đến thư mục /usr/bin .

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

Bước 11 – Kiểm tra trang web demo

Tạo trang web

Tạo và mở một trang thử nghiệm để chỉnh sửa.

$ sudo nano /var/www/html/example.com/index.php

Dán đoạn mã sau vào đó.

<?php
$user = "exampleuser";
$password = "YourPassword2!";
$database = "exampledb";
$table = "name_list";

try {
$db = new PDO("mysql:host=localhost;dbname=$database", $user, $password);
echo "<h2>Members List</h2><ol>";
foreach($db->query("SELECT content FROM $table") as $row) {
echo "<li>" . $row['content'] . "</li>";
}
echo "</ol>";
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}

Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Tạo chứng chỉ SSL

Chạy lệnh sau để tạo Chứng chỉ SSL.

$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d example.com

Lệnh trên sẽ tải chứng chỉ xuống thư /etc/letsencrypt/live/example.com trên máy chủ của bạn.

Tạo chứng chỉ nhóm Diffie-Hellman .

$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096

Mở tệp /etc/letsencrypt/renewal/example.com.conf để chỉnh sửa.

$ sudo nano /etc/letsencrypt/renewal/example.com.conf

Dán đoạn mã sau vào dưới cùng.

pre_hook = systemctl stop nginx
post_hook = systemctl start nginx

Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Chúng tôi đã tạo chứng chỉ SSL bằng tùy chọn độc lập của Certbot. Nó chạy máy chủ web của mình để tạo chứng chỉ, điều đó có nghĩa là Nginx sẽ bị tắt trong quá trình gia hạn. Các lệnh pre_hookpost_hook chạy trước và sau khi gia hạn để tự động đóng và khởi động lại máy chủ Nginx do đó không cần can thiệp thủ công.

Để kiểm tra xem quá trình gia hạn SSL có hoạt động tốt hay không, hãy chạy nhanh quá trình.

$ sudo certbot renew --dry-run

Nếu bạn thấy không có lỗi, bạn đã hoàn tất. Chứng chỉ của bạn sẽ tự động gia hạn.

Định cấu hình Nginx

Tạo và mở tệp /etc/nginx/conf.d/example.conf để chỉnh sửa.

$ sudo nano /etc/nginx/conf.d/example.conf

Dán đoạn mã sau vào đó.

server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com;

access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;

ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;

ssl_session_timeout 5m;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;

ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
ssl_stapling on;
ssl_stapling_verify on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;

root /var/www/html/example.com;

index index.php index.html;

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

# Pass PHP Scripts To FastCGI Server
location ~ .php$ {
fastcgi_split_path_info ^(.+.php)(/.+)$;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

location ~ /.(?!well-known).* {
deny all;
}
}

# enforce HTTPS
server {
listen 80;
listen [::]:80;
server_name example.com;
return 301 https://$host$request_uri;
}

Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Mở tệp /etc/nginx/nginx.conf để chỉnh sửa.

$ sudo nano /etc/nginx/nginx.conf

Thêm dòng sau vào trước dòng include /etc/nginx/conf.d/*.conf; .

server_names_hash_bucket_size 64;

Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Xác minh cấu hình Nginx của bạn.

$ sudo nginx -t

Nếu bạn thấy không có lỗi, điều đó có nghĩa là bạn đã tốt để đi. Khởi động máy chủ Nginx.

$ sudo systemctl start nginx

Tải trang web của bạn bằng cách truy cập https://example.com trong trình duyệt của bạn và bạn sẽ thấy trang sau.

Đầu ra của trang web thử nghiệm LEMP

Bạn có thể truy cập cài đặt phpMyAdmin của mình bằng cách truy cập URL https://example.com/sm175 trong trình duyệt của bạn. Bạn có thể nhập người dùng gốc của mình hoặc người dùng đã tạo trước đó để đăng nhập.

Sự kết luận

Phần này kết thúc hướng dẫn của chúng tôi, nơi bạn đã học cách thiết lập ngăn xếp LEMP trên máy chủ Ubuntu 22.04 và tạo trang web demo. Nếu bạn có bất kỳ câu hỏi nào, hãy gửi chúng trong phần bình luận bên dưới.

xem dưới dạng pdf | in

Chia sẻ trang này:

RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

- Advertisment -
Google search engine

Most Popular

Recent Comments