Hướng dẫn cài LEMP Stack trên Ubuntu 22.04

7
0

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 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 bài viết bên dưới.

Hướng dẫn đăng nhập vào VPS Linux với giao thức SSH.

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ài LEMP Stack trên Ubuntu 22.04
  • 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
CleanShot 2022 05 18 at 14.44.25@2x

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ài đặt LEMP Stack và WordPress từ A-Z

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

Screenshot 2021 09 04 at 16.26.39

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

Screenshot 2021 09 04 at 16.27.50

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;
Screenshot 2021 09 04 at 16.28.45
  • 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.conf

Sau đó thêm cấu hình bên dưới vào file. Và hãy thay pma.vpscanban.com bằng server_name của bạn.

server {
  listen 80;
  listen [::]:80;
  server_name pma.vpscanban.com;
  root /usr/share/phpmyadmin/;
  index index.php index.html index.htm;

  access_log /var/log/nginx/phpmyadmin_access.log;
  error_log /var/log/nginx/phpmyadmin_error.log;

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

  location ~ ^/(doc|sql|setup)/ {
    deny all;
  }

  location ~ .php$ {
    fastcgi_pass unix:/run/php/php8.1-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    include snippets/fastcgi-php.conf;
  }

  location ~ /.ht {
    deny all;
  }
}

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ướ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

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 dong và sửa lại.

vi /etc/redis/redis.conf

Nế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 256mb
maxmemory-policy allkeys-lru
  • Cài đặt Redis PHP Extension
apt install php-redis

Các bước cài đặt WordPress trên LEMP Stack Ubuntu 22.04

Bước 1: Tạo Database

Bạn hãy truy cập vào mysql và tạo database mới cho website.

mysql -u root -p
CREATE DATABASE website1;
CREATE USER 'user_website1'@'localhost' IDENTIFIED BY 'my-passswd';
GRANT ALL PRIVILEGES ON website1.* TO 'user_website1'@'localhost';

Bước 2: Tạo file vhost NGINX domain

vi /etc/nginx/sites-available/website1.conf

Lưu ý: Thay server_name vpscanban; bằng server_name của bạn

server {
    server_name vpscanban.com;

    access_log /var/log/nginx/website1.access.log;
    error_log /var/log/nginx/website1.error.log;

    root /home/website1;

    index index.php;

    try_files $uri $uri/ /index.php?$query_string;

    location ~ .php$ {
            fastcgi_pass unix:/run/php/php8.1-fpm-website1.sock;
            include snippets/fastcgi-php.conf;
    }
}

Bước 3: Tải core mã nguồn WordPress và cài đặt

Bạn hãy di chuyển vào thư mục sau đó tải về mã nguồn từ trang chủ. Mình sẽ chủ thích từng lệnh sau.

cd /home/website1
wget https://wordpress.org/latest.zip
unzip latest.zip
mv /home/website1/wordpress/* /home/website1
chown -R website1:website1 /home/website1
anh 38

Bước 4: Cài đặt chứng chỉ SSL cho website

Lưu ý: Thay vpscanban.com bằng tên miền của bạn

certbot --nginx --agree-tos --redirect --hsts --staple-ocsp -d vpscanban.com --email [email protected]

Bước 5: Cài đặt Redis Cache cho website WordPress

Để cài đặt redis trên wordpress, bạn hãy cài đặt một Pluginc ó tên là Redis Object Cache. Sau đó mở file wp-config.php và thêm vào đoạn sau.

define('WP_CACHE_KEY_SALT', 'vpscanban.com');

Tiếp đến bạn vào admin WordPPress, Settings => Redis và kích hoạt lên.

anh 39

Như vậy mình đã hoàn tất bài Hướng dẫn cài LEMP Stack trên Ubuntu 22.04. Hy vọng bài viết trên sẽ giúp các bạn cài đặt một máy chủ web riêng thành công.

Ở bài viết tiếp theo, mình sẽ hướng dẫn bạn thiết lập NGINX FastCGI cache trên WordPress để tối ưu hiệu xuất cho website. Rất mong được sử ủng hộ của các bạn.

Chúc bạn thực hiện thành công

Đỗ Trung Quân
WRITTEN BY

Đỗ Trung Quân

Nguồn nội dung này đến từ Website DoTrungQuan.info

Trả lời