Hoàn Chỉnh Cấu Hình VPS Ubuntu Chạy WordPress Từ Đầu [Bước Từng Bước]

Mệt mỏi với hosting dùng chung ì ạch và muốn toàn quyền kiểm soát “ngôi nhà” số của mình? Mình cũng từng như bạn. Tự tay cấu hình VPS Ubuntu chạy WordPress từ đầu nghe có vẻ đáng sợ, nhưng tin mình đi, nó dễ hơn bạn nghĩ nhiều. Chỉ với một buổi chiều rảnh rỗi, bạn sẽ có ngay một website chạy trên server riêng, nhanh như gió, bảo mật và hoàn toàn là của bạn. Mình sẽ chỉ cho bạn con đường ngắn nhất, không lòng vòng.

Quyết định nền tảng: Chọn LEMP Stack (Nginx) để bứt tốc ngay từ đầu

LEMP Stack (Linux, Nginx, MariaDB/MySQL, PHP) là sự lựa chọn tối ưu để chạy WordPress trên VPS nhờ khả năng xử lý đồng thời lượng truy cập lớn vượt trội so với các hệ thống cũ.

Trước khi bắt tay vào gõ lệnh, chúng ta cần thống nhất về nền tảng. Đối với những người mới tìm hiểu, việc nắm rõ wordpress là gì là bước đầu tiên quan trọng. Tuy nhiên, khi bạn đã hiểu rõ công cụ này, việc chọn “đất” để xây nhà lại càng quan trọng hơn. Nếu bạn vẫn đang phân vân về các loại máy chủ, bài viết phân tích Shared hosting vs VPS vs Dedicated khác gì sẽ giúp bạn nhận ra VPS chính là điểm cân bằng hoàn hảo giữa chi phí và hiệu năng.

Tại sao không phải là LAMP (Apache) mà lại là LEMP (Nginx)? Kinh nghiệm xương máu của mình

Mặc dù cấu hình LAMP stack cho WordPress trên Ubuntu rất phổ biến, nhưng cấu hình LEMP stack cho WordPress trên Ubuntu lại mang đến hiệu suất vượt trội nhờ Nginx xử lý các yêu cầu tĩnh nhanh hơn Apache2.

Trong suốt hơn 10 năm làm việc tại Phạm Hải, mình đã “cấp cứu” cho vô số website bị sập do quá tải. Đa phần các bài hướng dẫn cũ đều chỉ bạn cài đặt Apache2 và PHP cho WordPress Ubuntu. Tuy nhiên, Apache2 tiêu tốn rất nhiều RAM khi lượng truy cập tăng đột biến.

Thay vào đó, Nginx (chữ E trong LEMP) sử dụng kiến trúc hướng sự kiện (event-driven), giúp nó phục vụ hàng ngàn kết nối cùng lúc mà server vẫn nhẹ tênh.

Tiêu chí LAMP Stack (Apache2) LEMP Stack (Nginx)
Xử lý file tĩnh (Ảnh, CSS) Chậm, tốn nhiều RAM Cực nhanh, tối ưu tài nguyên
Kiến trúc hoạt động Tạo process mới cho mỗi request Xử lý đồng thời (Event-driven)
Phù hợp cho VPS cấu hình thấp Trung bình Rất xuất sắc

Bước 1: Chuẩn bị những thứ cần thiết – VPS, tên miền và một ly cà phê

Yêu cầu cấu hình VPS chạy WordPress hiệu quả tối thiểu cần 1GB RAM, 1 CPU core và hệ điều hành Ubuntu Server, cùng với một tên miền đã trỏ DNS về IP address của server.

Bạn không cần một cỗ máy quá khủng để bắt đầu. Một gói VPS cơ bản từ các nhà cung cấp uy tín là đủ. Hãy chắc chắn bạn chọn hệ điều hành Ubuntu Server (phiên bản 22.04 LTS hoặc 24.04 LTS mới nhất).

Tiếp theo, hãy truy cập trang quản lý Tên miền của bạn và cấu hình bản ghi DNS (A Record) trỏ thẳng về IP address của VPS. Cuối cùng, mở Terminal (trên Mac/Linux) hoặc PuTTY (trên Windows) và kết nối vào server thông qua SSH. Lệnh cơ bản sẽ trông như thế này: ssh root@ip_của_bạn. Từ đây, chúng ta sẽ làm việc hoàn toàn bằng Dòng lệnh.

Bước 2: Cài đặt bộ ba quyền lực Nginx, MariaDB (thay cho MySQL) và PHP-FPM

Việc cài đặt Nginx, MariaDB (nhẹ và nhanh hơn MySQL) cùng PHP-FPM và các PHP extensions cần thiết là cốt lõi của một hệ thống máy chủ web mạnh mẽ.

Khi đã có Root access (hoặc thông qua lệnh Sudo nếu dùng user thường), việc đầu tiên luôn là cập nhật hệ thống. Gõ lệnh:
sudo apt update && sudo apt upgrade -y

Tiếp theo, chúng ta cài đặt Nginx:
sudo apt install nginx -y

Thay vì dùng MySQL truyền thống, mình luôn ưu tiên MariaDB vì nó tối ưu hiệu năng tốt hơn. Cài đặt nó bằng lệnh:
sudo apt install mariadb-server mariadb-client -y

Cuối cùng là PHP. WordPress cần PHP-FPM để giao tiếp với Nginx. Chạy lệnh sau để cài đặt PHP và các PHP extensions bắt buộc:
sudo apt install php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip -y

Bước 3: Cấu hình Nginx Virtual Host để “chỉ đường” cho tên miền của bạn

Virtual host trong Nginx đóng vai trò như biển chỉ dẫn, giúp server biết thư mục nào chứa mã nguồn khi người dùng truy cập vào tên miền của bạn.

Mặc định, Nginx chưa biết phải làm gì với tên miền của bạn. Bạn cần tạo một file cấu hình Virtual host mới. Sử dụng trình soạn thảo nano:
sudo nano /etc/nginx/sites-available/tenmien.com

Trong file này, bạn sẽ khai báo server_name (tên miền của bạn), root (đường dẫn chứa mã nguồn, ví dụ /var/www/tenmien.com), và khối location ~ \.php$ để Nginx biết cách chuyển giao file PHP cho PHP-FPM xử lý. Sau khi lưu lại, hãy tạo một symbolic link sang thư mục sites-enabled và khởi động lại Nginx:
sudo systemctl restart nginx

Gieo mầm WordPress: Các bước cài đặt thủ công chuẩn không cần chỉnh

Các bước cài đặt WordPress trên Ubuntu Server bao gồm tạo cơ sở dữ liệu, tải mã nguồn CMS, cấu hình kết nối và thiết lập quyền sở hữu file chuẩn xác.

Nếu bạn đang tìm một hướng dẫn tạo website wordpress thực sự chuyên sâu, thì đây chính là phần quan trọng nhất. Mình không thích dùng các script cài tự động vì nó tạo ra nhiều file rác. Việc hướng dẫn cài đặt WordPress thủ công trên Ubuntu giúp bạn nắm rõ từng ngóc ngách của hệ thống. Cách cài WordPress trên VPS Ubuntu chi tiết dưới đây sẽ giúp bạn tránh được 99% các lỗi vặt về sau.

Tạo “kho chứa” dữ liệu với Database và User trên MariaDB

Tạo database MySQL cho WordPress Ubuntu (hoặc MariaDB) là bước bắt buộc để lưu trữ toàn bộ bài viết, cài đặt và thông tin người dùng của trang web.

Mở giao diện dòng lệnh của MariaDB:
sudo mariadb

Tại đây, chúng ta sẽ tạo một Database mới, một User mới và cấp quyền. Hãy thay thế các thông tin bên dưới bằng thông tin bảo mật của riêng bạn:

  • CREATE DATABASE wp_data;
  • CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'mat_khau_sieu_kho';
  • GRANT ALL PRIVILEGES ON wp_data.* TO 'wp_user'@'localhost';
  • FLUSH PRIVILEGES;
  • EXIT;

Tuyệt đối không sử dụng tài khoản root của Database cho WordPress. Việc tách biệt User này giúp bảo vệ hệ thống nếu chẳng may website bị tấn công.

Tải mã nguồn WordPress mới nhất và giải nén đúng chỗ

Sử dụng lệnh wget để tải trực tiếp file nén mã nguồn CMS WordPress từ trang chủ về VPS và giải nén vào thư mục root của web.

Bây giờ, hãy di chuyển vào thư mục web:
cd /var/www/

Dùng lệnh tải mã nguồn CMS WordPress trực tiếp từ máy chủ của họ:
sudo wget https://wordpress.org/latest.tar.gz

Giải nén file vừa tải:
sudo tar -xzvf latest.tar.gz

Hệ thống sẽ tạo ra một thư mục tên là wordpress. Hãy đổi tên nó thành tên miền của bạn để dễ quản lý:
sudo mv wordpress tenmien.com

Tinh chỉnh file wp-config.php – Khai báo thông tin “hộ khẩu” cho website

File wp-config.php là trái tim của website, nơi chứa thông tin kết nối Database, các khóa bảo mật và các thiết lập hệ thống quan trọng khác.

Di chuyển vào thư mục chứa mã nguồn vừa đổi tên. Bạn sẽ thấy một file mẫu. Hãy copy nó thành file cấu hình chính thức:
cp wp-config-sample.php wp-config.php

Mở file wp-config.php lên bằng nano. Bạn cần điền chính xác Tên Database, User và Password mà bạn đã tạo ở bước MariaDB vào các trường DB_NAME, DB_USER, và DB_PASSWORD.

Đừng quên truy cập API của WordPress để lấy các chuỗi khóa bảo mật (Authentication Unique Keys) và dán đè vào file này. Nó giúp mã hóa cookie và tăng cường bảo mật cho phiên đăng nhập.

Phân quyền thư mục và file – Bước nhỏ nhưng hay gây lỗi nhất

Thiết lập File permissions chuẩn (thư mục 755, file 644) và cấp quyền sở hữu cho user www-data giúp WordPress có thể tự động cập nhật và cài đặt plugin mà không gặp lỗi.

Rất nhiều người mới cấu hình VPS Ubuntu chạy WordPress từ đầu hay gặp lỗi không upload được ảnh, không cài được Theme hay Plugin. Nguyên nhân 100% là do sai quyền. Hãy trao quyền sở hữu toàn bộ thư mục web cho user của Nginx (www-data):
sudo chown -R www-data:www-data /var/www/tenmien.com/

Tiếp theo, set quyền chuẩn cho thư mục (755) và file (644):
sudo find /var/www/tenmien.com/ -type d -exec chmod 755 {} \;
sudo find /var/www/tenmien.com/ -type f -exec chmod 644 {} \;

Xây “pháo đài” và “tên lửa”: Bảo mật và Tối ưu hóa cho VPS

Bảo mật WordPress trên VPS Ubuntu và Tối ưu WordPress trên VPS Ubuntu là hai nhiệm vụ song hành giúp website chống lại hacker và chịu tải hàng ngàn người truy cập cùng lúc.

Cài đặt xong chưa phải là hết. Để có một hệ thống vững chắc, bạn cần quan tâm đến việc bảo mật website wordpress ngay từ cấp độ máy chủ. Đồng thời, các kỹ thuật tăng tốc độ website wordpress cũng cần được triển khai quyết liệt để mang lại trải nghiệm mượt mà nhất cho người dùng.

Dựng lớp tường lửa đầu tiên với UFW (Uncomplicated Firewall)

Kích hoạt UFW Firewall và chỉ mở các port cần thiết (80, 443, 22) giúp ngăn chặn hiệu quả các cuộc tấn công Brute-force và rà quét Malware từ bên ngoài.

UFW Firewall được tích hợp sẵn trên Ubuntu Server và cực kỳ dễ dùng. Bạn chỉ cần cho phép các dịch vụ cần thiết đi qua:

  • sudo ufw allow OpenSSH (Để giữ kết nối SSH)
  • sudo ufw allow 'Nginx Full' (Mở port 80 cho HTTP và 443 cho HTTPS)

Sau đó, kích hoạt tường lửa: sudo ufw enable. Chỉ vài dòng lệnh ngắn ngủi này đã giúp bạn chặn đứng hàng ngàn bot tự động dò quét IP address và nhăm nhe cấy Malware vào server mỗi ngày. Để an tâm hơn, bạn có thể cài thêm Fail2Ban để tự động block các IP cố tình Brute-force mật khẩu SSH hoặc Trang quản trị WordPress.

Cài đặt chứng chỉ SSL miễn phí từ Let’s Encrypt – Vừa bảo mật vừa tốt cho SEO

Sử dụng Certbot để tự động cấp phát và cấu hình Chứng chỉ SSL từ Let’s Encrypt, chuyển đổi website từ HTTP sang HTTPS an toàn tuyệt đối.

Website ngày nay bắt buộc phải có ổ khóa xanh HTTPS. Rất may, Let’s Encrypt cung cấp Chứng chỉ SSL hoàn toàn miễn phí. Cài đặt công cụ Certbot:
sudo apt install certbot python3-certbot-nginx -y

Sau đó, chạy lệnh:
sudo certbot --nginx -d tenmien.com -d www.tenmien.com

Certbot sẽ tự động xác thực tên miền, tải chứng chỉ về, cấu hình lại file Virtual host của Nginx và thiết lập cronjob tự động gia hạn trước khi chứng chỉ hết hạn. Quá nhàn hạ!

Tối ưu hiệu suất PHP-FPM và Nginx cho WordPress – Vài tinh chỉnh nhỏ, hiệu quả lớn

Tối ưu hiệu suất thông qua việc điều chỉnh workerprocesses của Nginx và pm.maxchildren của PHP-FPM giúp khai thác tối đa sức mạnh phần cứng VPS.

Bạn có biết rằng việc cấu hình đúng thông số server sẽ giúp giảm thời gian phản hồi máy chủ đáng kể? Nếu bạn đang đau đầu với các chỉ số Core Web Vitals, việc tối ưu ttfb cho wordpress trên vps là điều bắt buộc phải làm.

Với PHP-FPM, hãy mở file php.ini và tăng các thông số như memory_limit (lên 256M hoặc 512M), upload_max_filesize (lên 64M) để không bị lỗi khi tải file nặng. Trong pool config của PHP-FPM (www.conf), hãy điều chỉnh pm.max_children dựa trên số lượng RAM trống của VPS để tránh tình trạng sập web khi traffic tăng vọt.

Gợi ý các plugin Cache nên dùng để tăng tốc độ tải trang

Kết hợp Nginx FastCGI Cache cấp độ server hoặc các plugin Cache chuyên dụng giúp giảm tải cho Database và phục vụ nội dung ngay lập tức cho người dùng.

Trên môi trường LEMP stack, bạn có thể tận dụng Nginx FastCGI Cache để lưu trữ bản sao HTML của trang web ngay trên RAM hoặc ổ cứng SSD, bỏ qua hoàn toàn việc truy vấn Database.

Nếu bạn muốn một giải pháp dễ cấu hình hơn từ Trang quản trị, các Plugin như WP Rocket hay W3 Total Cache kết hợp với Redis Object Cache là lựa chọn tuyệt vời. Đáng chú ý, nếu trong tương lai bạn muốn thử nghiệm chuyển sang dùng OpenLiteSpeed thay vì Nginx, việc cấu hình litespeed cache wordpress sẽ mang lại một trải nghiệm tốc độ hoàn toàn khác biệt.

Cuối cùng, dù hệ thống có được tối ưu hiệu suất hay bảo mật website tốt đến đâu, phần cứng vẫn có thể hỏng hóc. Đừng bao giờ quên thiết lập một lịch trình backup website wordpress định kỳ (tốt nhất là đẩy file backup lên Google Drive hoặc Amazon S3) để kê cao gối ngủ mỗi đêm.

Vậy là xong! Bạn đã tự tay hoàn thành việc cấu hình VPS Ubuntu chạy WordPress từ đầu một cách cực kỳ chuyên nghiệp. Từ giờ, bạn đã có toàn quyền kiểm soát hiệu suất, bảo mật và khả năng mở rộng của website. Cảm giác tự tay gõ từng dòng lệnh và nhìn “đứa con tinh thần” chạy vù vù trên server riêng thật tuyệt phải không? Đây chính là nền tảng vững chắc để bạn xây dựng bất cứ dự án web lớn nhỏ nào trong tương lai. Chúc mừng bạn đã bước lên một tầm cao mới trong việc quản trị hệ thống!

Bạn thấy các bước trên có phức tạp không, hay gặp khó khăn ở dòng lệnh nào? Để lại bình luận bên dưới, mình sẽ vào hỗ trợ ngay nhé!

Lưu ý: Các thông tin trong bài viết này chỉ mang tính chất tham khảo. Để có được lời khuyên tốt nhất, vui lòng liên hệ trực tiếp với chúng tôi để được tư vấn cụ thể dựa trên nhu cầu thực tế của bạn.

Categories: Hosting & VPS Lập Trình Web TypeScript VPS & Cloud

mrhai

Để lại bình luận