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.
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.vnhoặ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-VPSrồ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:
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
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:
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
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):
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 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ử:
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.
Ô 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:
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:
Đã đổ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
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.











