Trang chủHướng dẫnCài WordPress lên VPS Ubuntu: trỏ tên miền, Nginx, MariaDB, PHP và SSL miễn phí (từng lệnh, thử thật)
Cài WordPress lên VPS Ubuntu: trỏ tên miền, Nginx, MariaDB, PHP và SSL miễn phí (từng lệnh, thử thật)

Cài WordPress lên VPS Ubuntu: trỏ tên miền, Nginx, MariaDB, PHP và SSL miễn phí (từng lệnh, thử thật)

Hướng dẫn CloudNest Team 01 tháng 11, 2026 7 lượt xem

Cài WordPress lên VPS cho bạn toàn quyền: tốc độ không bị chia với hàng trăm website khác như hosting chung, cài plugin gì cũng được, chạy bao nhiêu website tuỳ sức máy. Bài này đi từ một VPS Ubuntu 24.04 trống tới website WordPress tiếng Việt chạy https trên tên miền thật, với bộ Nginx + MariaDB + PHP 8.3 và chứng chỉ SSL miễn phí của Let's Encrypt. Mọi lệnh đã chạy thật ngày 01/11/2026 trên VPS 1 vCPU · 2 GB RAM, tên miền thử test-wp.cloudnest.vn.

TỪ VPS TRỐNG TỚI WEBSITE HTTPSUbuntu 24.04 · 1 vCPU · 2 GB RAM
01 · DNS
Trỏ tên miền
02 · SSH
Vào VPS
03 · LEMP
Nginx · MariaDB · PHP
04 · WP
Tải WordPress
05 · SSL
Let's Encrypt
06 · ✓
Cài trên web
Cài phần mềm
89 giây
apt update + cài Nginx, MariaDB, PHP
Lấy chứng chỉ SSL
14 giây
certbot, tự gia hạn
Trang chủ phản hồi
~0,2 giây
đo từ TP.HCM, chưa bật cache
RAM cả máy
549 MB
trên 2 GB, sau khi cài xong

1. Chuẩn bị

  • ✓Một VPS Ubuntu 24.04 mới cài, có IPv4 riêng. 1 vCPU · 1–2 GB RAM đủ cho một website WordPress vừa và nhỏ — chọn cấu hình.
  • ✓Một tên miền bạn quản lý được DNS (ví dụ tenmien.vn hoặc một tên miền phụ như shop.tenmien.vn).
  • ✓Cách vào VPS bằng SSH: Windows 10/11 mở PowerShell gõ ssh root@IP-cua-VPS rồi nhập mật khẩu.

Trong bài, thay test-wp.cloudnest.vn bằng tên miền của bạn, /var/www/test-wp bằng thư mục bạn muốn. Không muốn gõ lệnh? Dùng bảng điều khiển như aaPanel — đổi lại máy tốn thêm tài nguyên cho chính bảng điều khiển.

2. Trỏ tên miền về VPS

Vào trang quản lý DNS của nơi bạn mua tên miền, tạo bản ghi A: tên là @ (tên miền chính) hoặc tên phụ (ví dụ test-wp), giá trị là IP của VPS. Nếu tên miền đi qua Cloudflare, để biểu tượng đám mây xám (DNS only) trong lúc cài SSL. Kiểm tra trên máy bạn:

PowerShell trên máy của bạn
PS> nslookup test-wp.cloudnest.vn
Name:    test-wp.cloudnest.vn
Address:  180.93.194.71        ← đúng IP của VPS là xong

Bản ghi mới thường có hiệu lực sau vài phút; chưa ra đúng IP thì chờ thêm rồi mới làm bước SSL.

3. Cài Nginx, MariaDB, PHP

SSH vào VPS (root)
apt update
apt install -y nginx mariadb-server php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-zip php-intl php-imagick unzip

# đo thật: apt update 21 giây, cài 68 giây
nginx version: nginx/1.24.0 (Ubuntu)
mariadb  Ver 15.1 Distrib 10.11.14-MariaDB
PHP 8.3.6 (cli)

Ba dịch vụ tự chạy ngay và tự bật lại khi VPS khởi động lại (đã thử khởi động lại: website lên lại bình thường). Danh sách php-… là các tiện ích WordPress cần: kết nối CSDL, xử lý ảnh, nén, đa ngôn ngữ.

4. Tạo cơ sở dữ liệu cho WordPress

Gõ mariadb để vào MariaDB (trên Ubuntu, tài khoản root của máy vào thẳng, không cần mật khẩu), rồi chạy 4 lệnh — đổi MatKhauManh_123 thành mật khẩu của bạn và ghi lại:

mariadb
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'MatKhauManh_123';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Tài khoản wpuser chỉ có quyền trên CSDL wordpress và chỉ đăng nhập được từ chính VPS — website bị lỗi bảo mật cũng không đụng được CSDL khác.

5. Tải WordPress, cấu hình Nginx

tải bản tiếng Việt từ vi.wordpress.org
cd /tmp && curl -O https://vi.wordpress.org/latest-vi.tar.gz && tar -xzf latest-vi.tar.gz
mv /tmp/wordpress /var/www/test-wp
chown -R www-data:www-data /var/www/test-wp
# đo thật: tải + giải nén 6,2 giây, gói 35 MB — WordPress 7.1.4

chown giao thư mục cho người dùng www-data mà Nginx/PHP chạy — nhờ vậy WordPress tự tạo được tệp cấu hình, tự cài plugin và cập nhật. Tiếp theo tạo tệp cấu hình website cho Nginx (nano /etc/nginx/sites-available/test-wp.cloudnest.vn):

/etc/nginx/sites-available/test-wp.cloudnest.vn
server {
    listen 80;
    server_name test-wp.cloudnest.vn;
    root /var/www/test-wp;
    index index.php index.html;
    client_max_body_size 64M;

    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 ~ /\.ht {
        deny all;
    }
}
bật website + tăng giới hạn tải tệp lên 64 MB
ln -s /etc/nginx/sites-available/test-wp.cloudnest.vn /etc/nginx/sites-enabled/
rm /etc/nginx/sites-enabled/default
nginx -t && systemctl reload nginx
nginx: configuration file /etc/nginx/nginx.conf test is successful

sed -i "s/^upload_max_filesize = .*/upload_max_filesize = 64M/; s/^post_max_size = .*/post_max_size = 64M/" /etc/php/8.3/fpm/php.ini
systemctl restart php8.3-fpm

try_files giúp đường dẫn đẹp của WordPress (dạng /bai-viet/ten-bai) chạy đúng. Mặc định PHP chỉ cho tải tệp 2 MB — không nâng thì tải ảnh lớn, theme, plugin sẽ báo lỗi. Lúc này mở http://test-wp.cloudnest.vn đã thấy trang cài đặt WordPress, nhưng đừng cài vội — làm SSL trước để website dùng https ngay từ đầu.

6. Cài SSL miễn phí (Let's Encrypt)

certbot — xin chứng chỉ + tự chuyển http sang https
apt install -y certbot python3-certbot-nginx
certbot --nginx -d test-wp.cloudnest.vn -m [email protected] --agree-tos --redirect -n

Requesting a certificate for test-wp.cloudnest.vn
Successfully received certificate.
This certificate expires on 2027-01-30.
Certbot has set up a scheduled task to automatically renew this certificate in the background.
Congratulations! You have successfully enabled HTTPS on https://test-wp.cloudnest.vn
# đo thật: cài certbot 11 giây, xin + gắn chứng chỉ 14,3 giây
# lần thử dùng --register-unsafely-without-email (website thử); bạn nên điền email để Let's Encrypt báo khi có sự cố gia hạn

Certbot tự sửa cấu hình Nginx: thêm cổng 443 với chứng chỉ, và chuyển mọi truy cập http sang https (đo thật: http:// trả 301 về https://). Chứng chỉ có hạn 90 ngày và tự gia hạn — kiểm tra trước bằng lệnh chạy thử:

kiểm tra tự gia hạn
certbot renew --dry-run
Congratulations, all simulated renewals succeeded
systemctl list-timers certbot.timer
NEXT  ...  certbot.timer  certbot.service      ← chạy 2 lần mỗi ngày
Lỗi hay gặp: certbot báo không xác minh được tên miền ⇒ tên miền chưa trỏ đúng IP (làm lại mục 2), hoặc cổng 80 bị chặn (tường lửa / nhà cung cấp). Let's Encrypt cần vào được cổng 80 để xác minh.

7. Cài đặt WordPress trên trình duyệt

Mở https://test-wp.cloudnest.vn — trình cài đặt hiện ra bằng tiếng Việt.

Trang chào mừng cài đặt WordPress tiếng Việt, liệt kê thông tin cần có: tên database, tài khoản, mật khẩu, máy chủ, tiền tố bảng, nút Thực hiện ngay
① Bấm Thực hiện ngay!
Form thông tin kết nối cơ sở dữ liệu: Tên Database wordpress, Tên người dùng wpuser, Mật khẩu đã che, Máy chủ localhost, tiền tố wp_
② Điền CSDL ở mục 4: wordpress · wpuser · mật khẩu · localhost (mật khẩu đã che).
Thông báo kết nối cơ sở dữ liệu thành công, nút Bắt đầu cài đặt
③ Kết nối thành công → Bắt đầu cài đặt. WordPress tự tạo tệp wp-config.php và khoá bảo mật.
Thông báo Thành công, WordPress đã được cài đặt, tên người dùng quantri
⑤ Thành công — đăng nhập bằng tài khoản vừa tạo.
Form Thông tin: tên trang web Cửa hàng thử nghiệm, tên người dùng quantri, mật khẩu mạnh đã che, email, tuỳ chọn hiển thị trên Google
④ Đặt tên website, tài khoản quản trị (đừng dùng "admin"), mật khẩu mạnh, email.

Ô Hiển thị trên Google: để trống nếu muốn Google tìm thấy website; tích nếu đang làm thử (website thử của bài này để ẩn). Sau đó vào trang quản trị ở https://test-wp.cloudnest.vn/wp-admin:

https://test-wp.cloudnest.vn/wp-admin
Trang quản trị WordPress 7.1.4 tiếng Việt: Chào mừng bạn tới WordPress, menu Bài viết, Thư viện, Trang, Giao diện, Plugin
Trang quản trị WordPress 7.1.4 tiếng Việt.
Trang chủ website WordPress Cửa hàng thử nghiệm trên máy tính
Website chạy https trên máy tính…
Trang chủ website WordPress trên điện thoại
…và điện thoại.

8. Bật tường lửa (ufw)

Ubuntu có sẵn tường lửa ufw nhưng chưa bật. Mở SSH và web trước, rồi mới bật — làm ngược lại có thể tự khoá mình ngoài VPS:

ufw
ufw allow OpenSSH
ufw allow "Nginx Full"        # cổng 80 + 443
ufw --force enable
Firewall is active and enabled on system startup
# đo lại: website vẫn trả 200, SSH vẫn vào được

Đã đổi cổng SSH thì mở cổng mới thay cho OpenSSH. Thêm cổng khác: xem cách mở port và kiểm tra port.

9. Kết quả đo trên VPS 1 vCPU · 2 GB

Trang chủ
0,18–0,31 giây
5 lần đo từ TP.HCM tới VPS ở Hà Nội, gồm cả bắt tay SSL
RAM cả máy
549 MB / 2 GB
PHP-FPM 232 MB · MariaDB 113 MB · Nginx 18 MB
Ổ cứng
3,5 GB / 14 GB
hệ điều hành + toàn bộ phần mềm + WordPress
Khởi động lại VPS
Tự lên
Nginx, MariaDB, PHP tự chạy, website trả 200

Một website WordPress mới dùng chưa tới một phần ba RAM của gói 2 GB — còn chỗ cho plugin, bộ nhớ đệm và vài website nữa. Website đông khách hơn thì thêm plugin bộ nhớ đệm trang và theo dõi RAM trước khi nâng gói. Nên bật sao lưu tự động và làm 10 việc bảo mật VPS.

10. Câu hỏi thường gặp

VPS 1 GB RAM có chạy được WordPress không?

Chạy được với website nhỏ: cả máy sau khi cài chỉ dùng khoảng 550 MB. Nhưng còn ít chỗ cho lúc đông khách hoặc plugin nặng — 2 GB thoải mái hơn.

Một VPS chạy được bao nhiêu website?

Nhiều: mỗi website thêm một CSDL, một thư mục và một tệp trong /etc/nginx/sites-available, rồi chạy certbot cho tên miền đó. Giới hạn là RAM và CPU, không phải số website.

Chứng chỉ SSL có mất tiền, có phải gia hạn tay?

Không. Let's Encrypt miễn phí, certbot tự gia hạn trước khi hết hạn 90 ngày (lệnh certbot renew --dry-run báo thành công là yên tâm).

Mở website báo "Error establishing a database connection"?

Sai tên CSDL, tài khoản hoặc mật khẩu trong wp-config.php, hoặc MariaDB đang dừng. Kiểm tra bằng systemctl status mariadb và đăng nhập thử mariadb -u wpuser -p.

Tải ảnh lên báo vượt quá dung lượng cho phép?

Chưa nâng upload_max_filesize / post_max_size trong /etc/php/8.3/fpm/php.ini (mục 5) hoặc client_max_body_size trong Nginx. Sửa xong nhớ khởi động lại php8.3-fpm và nạp lại Nginx.

Có nên dùng bảng điều khiển như aaPanel?

Tiện nếu bạn ngại dòng lệnh và quản lý nhiều website — xem hướng dẫn aaPanel. Đổi lại máy chạy thêm phần mềm của bảng điều khiển.

VPS Linux cho website WordPress
Ubuntu, Debian, AlmaLinux cài sẵn, IPv4 riêng, giao máy sau vài phút.
ZaloGọi ngayTelegram