Cách cài WordPress trên Ubuntu bằng LEMP: Hướng dẫn mới nhất 2026

Việc chuyển sang tự quản trị VPS Ubuntu với LEMP (Nginx, MariaDB, PHP) chính là bước ngoặt giúp website WordPress của bạn tải dưới 1 giây. Không cần Control Panel nặng nề, hệ thống sẽ chạy mượt mà và bảo mật tối đa khi tự tối ưu bằng tay.

Tóm tắt nhanh

Bộ khung thông số kỹ thuật chuẩn nhất cho LEMP stack cài đặt WordPress trong năm 2026:

  • Hệ điều hành: Ubuntu 22.04 trở lên.
  • Web Server: Nginx (bản Stable mới nhất).
  • Database: MariaDB Server (bảo mật hơn MySQL truyền thống).
  • PHP Engine: PHP 8.3-FPM hoặc 8.4-FPM (kèm module tối ưu cache).
  • Bảo mật bắt buộc: SSL Let’s Encrypt (HTTPS) và phân quyền chặt chẽ cho user www-data.

1. Chuẩn bị VPS Ubuntu và các cấu hình ban đầu

Cài WordPress bằng LEMP yêu cầu VPS chạy Ubuntu LTS, có quyền root (hoặc sudo) và một tên miền đã trỏ bản ghi A về IP VPS.

Để quá trình cài đặt diễn ra suôn sẻ, bạn cần một máy chủ ảo có đường truyền ổn định và IP sạch. Hãy cân nhắc đăng ký VPS giá rẻ tại InterData để sở hữu ngay hạ tầng máy chủ CPU đời mới, SSD NVMe U.2, băng thông lớn và hỗ trợ 24/7 trước khi bắt đầu.

Thao tác:

  • SSH vào VPS qua Terminal/MobaXterm/PuTTY.
  • Cập nhật toàn bộ package hệ thống để tránh xung đột thư viện:
sudo apt update && sudo apt upgrade -y
  • Cài đặt công cụ bổ trợ:
sudo apt install curl wget nano unzip -y

2. Cài đặt và tối ưu Web Server Nginx

Nginx là web server hoạt động theo cơ chế hướng sự kiện (event-driven). Khi kết hợp với WordPress, nó xử lý đồng thời hàng nghìn kết nối mà tiêu thụ RAM/CPU cực thấp so với Apache.

Thao tác:

  • Cài đặt Nginx:
sudo apt install nginx -y
  • Cấu hình Firewall (UFW) cho phép HTTP và HTTPS:
sudo ufw allow 'Nginx Full'

Xem thêm Hướng dẫn Thiết Lập Tường Lửa Cho VPS, nếu VPS của bạn chưa thiết lập tường lửa UFW trước đó.

  • Kiểm tra trạng thái Nginx:
sudo systemctl status nginx

Mẹo: Mở trình duyệt, truy cập địa chỉ IP VPS. Nếu thấy trang chào mừng “Welcome to nginx!” là thành công.

3. Cài đặt MariaDB và tạo Database cho WordPress

MariaDB là nhánh mã nguồn mở từ MySQL, cho tốc độ truy vấn nhanh và bảo mật nghiêm ngặt hơn. Đây là lựa chọn tối ưu nhất cho WordPress trên VPS Linux.

Thao tác:

  • Cài đặt MariaDB:
sudo apt install mariadb-server mariadb-client -y
  • Chạy script bảo mật (Đặt mật khẩu root, xóa user ẩn danh, tắt remote login root):
sudo mysql_secure_installation
  • Đăng nhập MariaDB và tạo database cho WordPress:
sudo mysql -u root -p

Chạy tuần tự các lệnh SQL (Nhớ thay mật khẩu thật phức tạp vào mat_khau_bao_mat):

CREATE DATABASE wordpress_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'mat_khau_bao_mat';
GRANT ALL ON wordpress_db.* TO 'wp_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

4. Cấu hình PHP 8.3-FPM để biên dịch mã nguồn

PHP-FPM (FastCGI Process Manager) được thiết kế riêng cho web server tải cao. Nó tách biệt xử lý script PHP khỏi file tĩnh, giúp web không bị quá tải khi truy cập đột biến.

Thao tác:

  • Thêm PPA và cài đặt PHP 8.3 cùng các extension bắt buộc:

Chạy lần lượt các lệnh sau:

sudo add-apt-repository ppa:ondrej/php -y
sudo apt update
sudo apt install php8.3-fpm php8.3-mysql php8.3-curl php8.3-gd php8.3-intl php8.3-mbstring php8.3-soap php8.3-xml php8.3-xmlrpc php8.3-zip -y
  • Tinh chỉnh file php.ini để tránh lỗi cạn kiệt tài nguyên hoặc không upload được file lớn. Mở file /etc/php/8.3/fpm/php.ini và sửa các dòng sau:

Lệnh mở file: sudo nano /etc/php/8.3/fpm/php.ini

Sửa các dòng sau:

upload_max_filesize = 64M
post_max_size = 64M
memory_limit = 256M
max_execution_time = 300

Bạn có thể dùng phím tắt Ctrl + W để tìm kiếm. Sau khi chỉnh sửa xong, sử dụng phím tắt Ctrl + O để lưu file > Enter để xác nhận > Ctrl + X để thoát.

  • Khởi động lại PHP-FPM:
sudo systemctl restart php8.3-fpm

5. Tải và thiết lập mã nguồn WordPress chuẩn bảo mật

Mã nguồn WordPress bắt buộc phải tải từ trang chủ để tránh mã độc. Quyền sở hữu thư mục phải giao cho user www-data để cập nhật tự động hoạt động mượt mà mà không lộ quyền root.

Thao tác:

  • Di chuyển đến thư mục web, tải và giải nén WordPress:

Chạy lần lượt các lệnh sau:

cd /var/www/
sudo wget https://wordpress.org/latest.tar.gz
sudo tar -xvzf latest.tar.gz
rm latest.tar.gz
  • Tạo file cấu hình từ file mẫu:
cd /var/www/wordpress
sudo cp wp-config-sample.php wp-config.php
  • Chỉnh sửa wp-config.php, điền thông tin database đã tạo ở Bước 3, đồng thời truy cập API của WordPress để lấy mã Salt thay thế vào phần tương ứng.
  • Phân quyền bảo mật tối đa:
sudo chown -R www-data:www-data /var/www/wordpress
sudo find /var/www/wordpress/ -type d -exec chmod 755 {} \;
sudo find /var/www/wordpress/ -type f -exec chmod 644 {} \;
Quá trình xử lý PHP và Database đòi hỏi VPS phải có CPU/RAM ổn định và ổ cứng NVMe tốc độ cao. Nếu thường xuyên bị quá tải, hãy săn ngay các Deals VPS hiệu năng cao tại trang Canh Me của InterData để tối ưu hóa hệ thống với chi phí tiết kiệm nhất.

6. Tạo Server Block Nginx để nhận diện tên miền

Server Block định tuyến lưu lượng truy cập. Khi có yêu cầu gửi tới tên miền, Nginx sẽ đọc file này để biết cần lấy mã nguồn WordPress từ thư mục nào để hiển thị.

Thao tác:

  • Tạo file cấu hình mới:
sudo nano /etc/nginx/sites-available/yourdomain.com
  • Dán mẫu cấu hình chuẩn sau (thay yourdomain.com bằng tên miền của bạn):
server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;
    root /var/www/wordpress;
    index index.php index.html;

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

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

    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
        expires max;
        log_not_found off;
    }

    # Chặn truy cập file nhạy cảm
    location ~ /\.(htaccess|htpasswd) { deny all; }
    location ~ /xmlrpc.php { deny all; }
}
  • Kích hoạt cấu hình và kiểm tra:
sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

7. Cài đặt chứng chỉ SSL Let’s Encrypt miễn phí

SSL mã hóa dữ liệu truyền tải giữa trình duyệt và VPS, tránh cảnh báo nguy hiểm và tối ưu thứ hạng SEO. Đây là tiêu chuẩn bắt buộc cho mọi website hiện đại.

Thao tác:

  • Cài đặt Certbot và plugin Nginx:
sudo apt install certbot python3-certbot-nginx -y
  • Cấp phát và tự động cấu hình SSL:
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
  • Thiết lập tự động gia hạn (SSL chỉ có hiệu lực 90 ngày):
sudo crontab -e

Thêm dòng: 0 3 * * * certbot renew --quiet


Hỏi đáp nhanh về lỗi thường gặp (FAQ)

Tại sao website WordPress gặp lỗi “Error Establishing a Database Connection”?

Lỗi này do WordPress không kết nối được tới MariaDB. Hãy kiểm tra lại tên Database, User, Mật khẩu và Hostname (localhost) trong file wp-config.php. Đồng thời đảm bảo dịch vụ MariaDB đang chạy: sudo systemctl status mariadb.

Tại sao WordPress yêu cầu tài khoản FTP khi cài Plugin/Theme?

Lỗi này do Nginx không có quyền ghi vào thư mục WordPress. Chạy lệnh sau để phân quyền lại: sudo chown -R www-data:www-data /var/www/wordpress.

Làm thế nào để tăng dung lượng upload file cho WordPress trên LEMP?

Bạn cần sửa ở 2 nơi:

  1. Tăng upload_max_filesize và post_max_size trong file php.ini của PHP-FPM, rồi khởi động lại PHP.
  2. Thêm dòng client_max_body_size 64M; vào block http hoặc server của cấu hình Nginx, rồi reload lại Nginx.

Checklist rà soát an toàn hệ thống trước khi chạy chính thức

Trước khi đưa website lên môi trường production, hãy đảm bảo bạn đã hoàn thành các mục sau:

  1.  Đã tắt quyền đăng nhập trực tiếp bằng tài khoản root qua SSH?
  2.  Đã bật tường lửa UFW và chỉ mở các cổng cần thiết (22, 80, 443)?
  3.  Mật khẩu database và tài khoản Admin WordPress đã đủ phức tạp (trên 12 ký tự gồm chữ, số, ký tự đặc biệt)?
  4.  Đã thiết lập cơ chế sao lưu (backup) cơ sở dữ liệu và mã nguồn định kỳ cho VPS?