LEMP Stack là gì?
LEMP là từ viết tắt của Linux, Nginx, MySQL, PHP(hay Perl hoặc Python), để tạo nên một môi trường máy chủ Web có khả năng chứa và phân phối các trang Web động. Bốn phần mềm nói trên tạo thành một gói phần mềm LEMP.
Cài đặt LEMP Stack.
Yêu cầu:
- Máy chủ Ubuntu 22.04
- IP public
- Domain/subdomain đã trỏ về IP public để cài đặt SSL
Thành phần được cài đặt trong bài viết này
- NGINX
- MariaDB
- PHP và các Module
- PHP Pools (nâng cao)
- phpMyAdmin (nâng cao)
- CertBot (nâng cao)
- WP-CLI (nâng cao)
- Redis Cache (nâng cao)
Các bước cài LEMP Stack
Bước 1: SSH vào máy chủ VPS
Đầu tiên bạn hãy truy cập vào máy chủ bằng giao thức SSH. Nếu bạn chưa biết cách SSH bạn hãy tham khảo bài viết bên dưới.
Bước 2: Cập nhật hệ thống
apt update && apt upgradeBước 3: Cài đặt NGINX webserver
apt install nginx
Sau khi cài đặt xong NGINX bạn hãy khởi động và kích hoạt dịch vụ lên
systemctl enable nginx
systemctl start nginx
systemctl restart nginx
systemctl status nginx
Với thông báo Active: active (running) cho thấy nginx đã hoạt động.
Ngay bây giờ bạn hãy truy cập IP trên trình duyệt. Nếu hiện như ảnh bên dưới là đã cài NGINX thành công.

Trường hợp nếu hệ thống bạn có trang bị Firewall. Bạn hãy mở port Firewall để dịch vụ lắng nghe.
- Đối với iptables
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -p tcp --dport 443 -j ACCEPT- Đối với UFW
ufw allow http
ufw allow httpsBước 4: Cài đặt cơ sở dữ liệu MariaDB
Mình sẽ sử dụng MariaDB làm máy chủ cơ sở dữ liệu. Bạn hãy cài đặt với lệnh sau.
apt install mariadb-server mariadb-client -y
Sau khi cài đặt xong MariaDB xong, dịch vụ sẽ hoạt động. Và bạn có thể quản lý dịch vụ bằng các lệnh sau.
systemctl enable mariadb
systemctl restart mariadb
systemctl status mariadb
Với thông báo Active: active (running) cho thấy mariadb đã hoạt động.
- Cấu hình bảo mật MariaDB
mysql_secure_installation
Bước 5: Cài đặt PHP
Trong tập lệnh này mình sẽ chọn cài PHP 7.4 và các extension đi kèm.
apt install php7.4-fpm php7.4 php7.4-common php7.4-mysql php7.4-xml php7.4-xmlrpc php7.4-curl php7.4-gd php7.4-imagick php7.4-cli php7.4-imap php7.4-mbstring php7.4-opcache php7.4-soap php7.4-zip php7.4-intl php7.4-bcmath unzip -y
Bước 6: Thiết lập PHP Pools
Trong bài viết này mình sẽ tạo Pools tương ứng với wesbite và user. Nếu bạn có nhiều hơn 1 website thì bạn hãy tạo thêm các pool và user tương ứng.
- Xoá file mặc định
rm -rf /etc/nginx/sites-enabled/default - Tạo USER cho mỗi website
Mỗi trang web cần chạy với tư cách người dùng khác nhau vì mục đích bảo mật và độc lập. Vì vậy bạn hãy tạo các tài khoản người dùng và chỉ định người dùng www-data cho các nhóm tương ứng.
Điều này cho phép máy chủ web tương tác với người dùng và ngược lại. Không cấp cho người dùng khác nhau những đặc quyền đăng nhập hoặc liên kết bất kỳ thông tin nào. Để tạo người dùng, hãy chạy lệnh sau
useradd website1
usermod -a -G website1 www-data
- Chỉ định quyền cho thư mục
Tiếp theo bạn hãy tạo thư mục cho web riêng biệt và gán quyền như sau
Lưu ý: Nếu bạn muốn thêm website hãy tạo user và thư mục tương ứng là được.
Các quyền của Unix là 770. Mỗi người dùng và nhóm liên kết của người dùng có đầy đủ quyền (7) trên thư mục. Cài đặt này hạn chế người dùng website1
mkdir -p /home/website1
chown -R website1:website1 /home/website1
chmod 770 /home/website1
- PHP-FPM Pools
Bạn hãy copy pools php mặc định ra ra sửa lại như sau
cp /etc/php/7.4/fpm/pool.d/www.conf /etc/php/7.4/fpm/pool.d/fpm-website1.conf
- Xoá bỏ pool cũ đi
rm -rf /etc/php/7.4/fpm/pool.d/www.conf
- Cấu hình Pools cho website 1
Mỗi groups sẽ có user liên kết với Unix socket. Vì vậy bạn cần mở từng file và sửa lại tương ứng như sau.
vi /etc/php/7.4/fpm/pool.d/fpm-website1.confThay đổi các dòng sau:
- Thay đổi dòng trên cùng, bên trong dấu ngoặc từ
[www]sang[website1]cho pool 1 - Thay đổi dòng
user = www-datathànhuser = website1 - Thay đổi dòng
group = www-datathànhgroup = website1 - Thay đổi dòng
listen = /run/php/php7.4-fpm.sockthành/run/php/php7.4-fpm-website1.sock

Sau khi hoàn tất bạn hãy khởi động lại php-fpm bằng lệnh sau
systemctl restart php7.4-fpm
Bước 7: Cài đặt phpMyAdmin
phpMyAdmin là một ứng dụng dùng để quản lý cơ sở dữ liệu dưới dạng giao diện. Giúp bạn quản lý Database trực quan hơn. Từ đó dễ dàng kiểm soát và quản lý. Để cài đặt bạn hãy thực hiện như sau
- Cài phpMyAdmin bằng lệnh sau
apt install phpmyadmin -yMột hộp thoại xuất hiện hỏi bạn chọn webserver để cài. Nếu webserver bạn không có ở đây, bạn không tick và nhấn Tab để di chuyển xuống chữ OK để cài.


Một hộp thoại xuất hiện, hộp thoại này sẽ tạo một một người dùng với tên phpmyadmin và đặt mật khẩu cho người dùng này. Bạn chọn OK

Sau đó đặt mật khẩu cho người dùng.

Sau khi chọn OK một hộp thoại hiện lên và yêu cầu nhập lại mật khẩu bạn vừa đặt để xác nhận.

Sau khi hoàn tất, một cơ sở dữ liệu mới có tên là phpmyadmin được tạo và người dùng cơ sở dữ liệu phpmyadmin có các đặc quyền cần thiết để quản lý cơ sở dữ liệu này. Bạn có thể đăng nhập vào MariaDB và kiểm tra những đặc quyền mà người dùng phpmyadmin đã được cấp.
mysql -u root
show grants for phpmyadmin@localhost;
- Tạo Nginx Server Block cho phpMyAdmin
Để truy cập phpmyadmin từ giao diện bạn cần tạo một file cấu hình như sau.
vi /etc/nginx/conf.d/phpmyadmin.confSau đó thêm cấu hình bên dưới vào file. Và hãy thay phpmyadmin.phongdinh.id.vn bằng server_name của bạn.

Thư mục phpMyAdmin nằm tại /usr/share/phpmyadmin/. Sau khi lưu xong bạn kiểm tra lại file cấu hình nginx xem có lỗi không bằng lệnh nginx -t

Bạn có thể truy cập phpMyadmin trên trình duyệt web để kiểm tra.

Bước 8: Cài đặt CertBot
Certbot là một ứng dụng Let’s Encrypt phổ biến nhất và có trong hầu hết các bản phân phối Linux chính, bao gồm khả năng cấu hình tự động thuận tiện cho Apache và Nginx. Sau khi cài đặt, tìm nạp chứng chỉ và cập nhật cấu hình Apache/Nginx của bạn.
Để cài đặt bạn thực hiện lệnh sau
apt install certbot python3-certbot-nginx
Python3-certbot-nginx là plugin Nginx cho Certbot. Bây giờ hãy chạy lệnh sau để lấy và cài đặt chứng chỉ TLS.
certbot --nginx --agree-tos --redirect --hsts --staple-ocsp -d example.com --email [email protected]Chú thích:
- Nginx: Sử dụng trình xác thực và trình cài đặt Nginx
- Agree-tos: Đồng ý với các điều khoản dịch vụ của Let’s Encrypt
- Redirect: Thực thi HTTPS bằng cách chuyển hướng 301.
- Hsts: Thêm tiêu đề Nghiêm ngặt-Truyền tải-Bảo mật vào mọi phản hồi HTTP.
- Staple-ocsp: Bật Ghim OCSP.
- Must-staple: Thêm phần mở rộng OCSP Must Staple vào chứng chỉ.
- -d: được theo sau bởi một danh sách các tên miền, được phân tách bằng dấu phẩy. Bạn có thể thêm tối đa 100 tên miền.
- Email: Email được sử dụng để đăng ký và liên hệ khôi phục.
Bước 9: Cài đặt WP-CLI
WP-CLI là một tính năng được ra đời và phát triển từ những năm 2011 , với WP-CLI bạn có thể dễ dàng thao tác quản lý website WordPress của mình một cách đơn giản thông qua giao diện dòng lệnh (Command). Với cách thức thông thường , khi các bạn cần cài đặt Plugins, Themes, hay chỉnh sửa liên quan đến WordPress các bạn cần phải truy cập vào trình quản trị WordPress và thực hiện các thao tác bằng cách click chuột.
Để cài đặt bạn hãy nhập các lệnh như sau.
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
php wp-cli.phar --info
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp
Sau khi cai đặt bạn có thể kiểm tra bằng lệnh sau
wp --version --allow-root
Bước 10: Cài đặt Redis Cache
Redis là phần mềm một mã nguồn mở được dùng để lưu trữ dữ liệu có cấu trúc, có thể sử dụng như một database, bộ nhớ cache hay một message broker. Nó là hệ thống lưu trữ dữ liệu với dạng KEY-VALUE rất mạnh mẽ và phổ biến hiện nay. Redis nổi bật bởi nó hỗ trợ nhiều cấu trúc dữ liệu cơ bản như: hash, list, set, sorted set, string. Tất cả dữ liệu được ghi lại và lưu trên RAM, do đó tốc độ đọc ghi dữ liệu sẽ rất nhanh.
- Cài đặt Redis Server
apt install redis-server -y
- Cấu hình Redis
Bạn hãy mở file redis.conf, tìm các dòng sau và sửa lại.
vi /etc/redis/redis.confNếu RAM bạn nhiều và bạn muốn tăng cho Redis bạn hãy tăng ở giá trị maxmemory
maxmemory 512mb
maxmemory-policy allkeys-lru

- Cài đặt Redis PHP Extension
Để cài đặt Redis PHP Extension bạn dùng lệnh sau:
apt install php-redis
Ở các bước trên bạn đã hoàn tất cài đặt LEMP Stack trên Ubuntu, kèm theo các dịch vụ như phpMyAdmin, CertBot, WP-CLI, Redis Cache.
Trong bài viết tiếp theo mình hướn dẫn bạn cài đặt WordPress trên LEMP Stack hoặc upload mã nguồn website đã có sẵn lên LEMP Stack.
- Bài viết tham khảo: https://dotrungquan.info/huong-dan-cai-lemp-stack-tren-ubuntu-22-04/
