Hướng dẫn cách cài LEMP Stack trên Ubuntu 22.04 chi tiết nhất

Nội dung

Hướng dẫn chi tiết cách cài LEMP Stack trên Ubuntu 22.04 và cách cài đặt WordPress trên LEMP Stack Ubuntu 22.04 cho bạn đọc tham khảo.

*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)

Hướng dẫn cách cài LEMP Stack trên Ubuntu 22.04 chi tiết nhất

Các bước cài LEMP Stack trên Ubuntu 22.04

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 TẠI ĐÂY

Bước 2: Cập nhật hệ thống

apt update && apt upgrade

Bước 3: Cài đặt NGINX webserver

Thường NGINX mình sẽ combine, tuy nhiên ở bài này mình sẽ cài từ apt insall. Do combine sẽ mất khá nhiều thời gian

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

Thông báo xuất hiện

root@ubuntu-2204:~# 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 Wed 2022-05-18 09:05:02 +07; 4h 48min ago
       Docs: man:nginx(8)
   Main PID: 27468 (nginx)
      Tasks: 2 (limit: 1034)
     Memory: 4.7M
        CPU: 454ms
     CGroup: /system.slice/nginx.service

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 https

Bướ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 mysql-server

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

Thông báo xuất hiện

root@ubuntu-2204:~# systemctl status mariadb
● mariadb.service - MariaDB 10.6.7 database server
     Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2022-05-16 13:10:48 +07; 2 days ago
       Docs: man:mariadbd(8)
             https://mariadb.com/kb/en/library/systemd/
   Main PID: 17087 (mariadbd)

Cấu hình bảo mật MariaDB

mysql_secure_installation

Hướng dẫn cách cài LEMP Stack trên Ubuntu 22.04 chi tiết nhất (1)

Tạo file cấu hình đăng nhập mysql (không nhất thiết)

vi /etc/.my.cnf

Sau đó thêm vào nội dung này vào

[client]
password="passwd-root-mysql"
user=root
[mysqld]

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

Trong tập lệnh này mình sẽ chọn cài PHP 8.1 và các extension đi kèm.

apt install php8.1-fpm php8.1 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-imap php8.1-mbstring php8.1-opcache php8.1-soap php8.1-zip php8.1-intl php8.1-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/8.1/fpm/pool.d/www.conf /etc/php/8.1/fpm/pool.d/fpm-website1.conf

Xoá bỏ pool cũ đi

rm -rf /etc/php/8.1/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/8.1/fpm/pool.d/fpm-website1.conf

Thay đổ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-data thành user = website1
  • Thay đổi dòng group = www-data thành group = website1
  • Thay đổi dòng listen = /run/php/php8.1-fpm.sock thành /run/php/php8.1-fpm-website1.sock

Hướng dẫn cách cài LEMP Stack trên Ubuntu 22.04 chi tiết nhất (2)

Sau khi hoàn tất bạn hãy khởi động lại php-fpm bằng lệnh sau

systemctl restart php8.1-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ập nhật hệ thống và cài phpMyAdmin bằng lệnh sau

apt install phpmyadmin -y

Mộ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.

Hướng dẫn cách cài LEMP Stack trên Ubuntu 22.04 chi tiết nhất (3)

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

Hướng dẫn cách cài LEMP Stack trên Ubuntu 22.04 chi tiết nhất (4)

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

Hướng dẫn cách cài LEMP Stack trên Ubuntu 22.04 chi tiết nhất (5)

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;