
Hello anh em,
Hôm nay, mình sẽ hướng dẫn chi tiết cách cài đặt và sử dụng WordOps – một công cụ quản lý server LEMP (Nginx, MariaDB, PHP) tuyệt vời dành cho WordPress. WordOps là fork từ EasyEngine v3, được tối ưu hóa cho hiệu suất cao, bảo mật tốt và dễ sử dụng, đặc biệt phù hợp cho các site single như vnrom.net. Nếu bạn đang dùng Webinoly như mình trước đây, WordOps sẽ là upgrade mượt mà với nhiều tính năng hơn như hỗ trợ PHP 8.3, HTTP/3 và cache Redis.
Mình sẽ chia hướng dẫn thành các phần rõ ràng: cài đặt, sử dụng cơ bản, quản lý site, và đặc biệt là phần restore/migrate website sẵn có từ setup cũ (như Webinoly) sang WordOps.
LƯU Ý:
Hướng dẫn này dành cho server Ubuntu (18.04 trở lên, khuyến nghị 22.04 hoặc 24.04 LTS). Bạn cần quyền root hoặc sudo, và server nên có ít nhất 1GB RAM.
Cài đặt WordOps trên Ubuntu
Trước khi cài, hãy đảm bảo server của bạn sạch sẽ. Nếu đang dùng Webinoly hoặc EasyEngine, WordOps có thể migrate trực tiếp mà không xung đột lớn (mình sẽ hướng dẫn ở phần sau).
Yêu cầu hệ thống
- Ubuntu 18.04, 20.04, 22.04 hoặc 24.04 LTS.
- Truy cập SSH với quyền sudo.
- Không có web server khác đang chạy (nếu có, uninstall trước).
- Kết nối internet ổn định.
Các bước cài đặt
1. Update hệ thống: Chạy lệnh để cập nhật packages.
sudo apt update && sudo apt upgrade -y2. Cài đặt WordOps: Sử dụng script chính thức từ trang docs.wordops.net.
wget -qO wo wops.cc && sudo bash wo- Script sẽ tự động cài Nginx, MariaDB, PHP (mặc định 8.1, có thể nâng sau), Redis, và các tools khác.
- Quá trình mất khoảng 5-10 phút. Nếu gặp lỗi, kiểm tra log ở
/var/log/wo/install.log.
3. Kiểm tra cài đặt: Sau khi xong, chạy lệnh để xem version và status.
wo --version
wo stack status- Nếu thấy các service như Nginx, MariaDB, PHP-FPM running, thì OK.
- Nếu các service báo
... not installedthì ae cần chạy lệnh sau để cài đặt:
wo stack installWordOps sẽ tạo thư mục chính ở /opt/wordops và configs ở /etc/nginx. Bạn có thể tùy chỉnh qua file /etc/wo/wo.conf nếu cần.
Sử dụng WordOps để tạo website WordPress mới
WordOps làm việc qua lệnh wo site – siêu đơn giản, chỉ cần vài lệnh để setup full site.
Tạo site WordPress cơ bản
- Tạo site với cache Redis (khuyến nghị cho tốc độ cao):
sudo wo site create vnrom.net --wp --wpredis--wp: Cài WordPress tự động.--wpredis: Enable Redis cache.- Thay
vnrom.netbằng domain của bạn. - Script sẽ tải WordPress mới nhất, tạo database, và config Nginx.
- Nếu muốn cache khác:
--wpfc: Sử dụng Nginx fastcgi_cache.--wpsc: WP Super Cache plugin.--wprocket: WP Rocket (cần license riêng).--wpce: Cache Enabler.- Tùy chỉnh admin:
sudo wo site create vnrom.net --wp --wpredis --user=admin --pass='matkhau@123' [email protected]- Chỉ tạo vhost (không install WP, dùng cho migrate):
sudo wo site create vnrom.net --wp --vhostonlySau khi tạo, truy cập domain để hoàn tất cài đặt WP (nếu không dùng tùy chỉnh admin). Files site ở /var/www/vnrom.net/htdocs/, DB credentials ở wo site info vnrom.net.
Quản lý website với WordOps
WordOps có nhiều lệnh để update, bảo mật và tối ưu.
Enable SSL (Let’s Encrypt)
- Tạo site với SSL ngay:
sudo wo site create vnrom.net --wp --letsencrypt- Hoặc update site cũ:
sudo wo site update vnrom.net --letsencrypt- Wildcard SSL (cho subdomain, cần DNS API như Cloudflare):
export CF_Key="your-cloudflare-key"
export CF_Email="[email protected]"
sudo wo site update vnrom.net --letsencrypt=wildcard --dns=dns_cf- Enable HSTS (bảo mật cao hơn):
sudo wo site update vnrom.net --hsts- Disable SSL:
--letsencrypt=off.
Cập nhật và tối ưu
- Update cache type (ví dụ từ wpfc sang wpredis):
sudo wo site update vnrom.net --wpredis- Update PHP version (từ 8.1 sang 8.3):
sudo wo site update vnrom.net --php83- Update multisite:
sudo wo site update vnrom.net --wpsubdir # Subdirectory- Enable bad bot blocker:
sudo wo site update vnrom.net --ngxblockerCác lệnh quản lý khác
- Xem info site:
sudo wo site info vnrom.net- List all sites:
sudo wo site list- Edit Nginx config:
sudo wo site edit vnrom.net # Mở bằng editor (Nano)- Disable/enable site:
sudo wo site disable vnrom.net
sudo wo site enable vnrom.net- Delete site:
sudo wo site delete vnrom.net --no-prompt- Kiểm tra stack:
sudo wo stack status
sudo wo stack upgrade # Update toàn bộ stackWordOps còn tích hợp Netdata cho monitoring (truy cập server_ip:19999) và WP-CLI cho quản lý WP qua CLI.
Restore/Migrate website sẵn có vào WordOps
Nếu bạn có site sẵn (như từ Webinoly), migrate sang WordOps khá dễ vì cả hai dùng stack LEMP tương tự. Mình sẽ hướng dẫn migrate từ server cũ sang server mới chạy WordOps, hoặc migrate in-place nếu cùng server.
Migrate In-Place (cùng server, từ Webinoly sang WordOps)
- Backup trước: Sao lưu files và DB.
sudo webinoly -backup # Nếu dùng WebinolyHoặc manual: Sao chép /var/www/vnrom.net/ và export DB qua phpMyAdmin.
- Cài WordOps: Chạy script cài đặt như phần 1. WordOps sẽ backup configs cũ vào
/var/lib/wo-backupvà sync Nginx. - Tạo vhost mới:
sudo wo site create vnrom.net --wp --vhostonly- Chuyển files và DB:
- Copy files từ backup vào
/var/www/vnrom.net/htdocs/. - Import DB: Sử dụng
mysqlcommand hoặc phpMyAdmin. - Update
wp-config.phpvới DB credentials mới (xemwo site info vnrom.net).
- Update config: Chạy
sudo wo site update vnrom.net --wpredis --letsencryptđể apply cache và SSL.
Migrate giữa servers (từ server cũ chạy Webinoly sang server mới chạy WordOps)
Dựa trên guide từ docs.wordops.net và các source khác:
- Setup server mới: Cài WordOps như phần 1, rồi tạo vhost:
sudo wo site create vnrom.net --wp --vhostonly --wpredis- Setup password-less SSH: Từ server mới, generate SSH key và copy sang server cũ.
ssh-keygen -t rsa
ssh-copy-id user@old-server-ip- Backup và transfer DB:
- Trên server cũ: Export DB.
mysqldump -u root -p db_name > backup.sql - Transfer:
scp backup.sql user@new-server-ip:/tmp/ - Trên server mới: Import.
mysql -u root -p db_name < /tmp/backup.sql
TIP:
Để xem lại password của
rootthì anh em dùng lệnh này:cat /etc/mysql/conf.d/my.cnf
Hoặc ae có thể import database qua phpMyAdmin bằng cách sau:
# 1. Cài thêm Admin Tool
wo stack install --admin
# 2. Kiểm tra nginx đang chạy
sudo systemctl status nginx
# 3. Kiểm tra port 22222 có listen không
sudo netstat -tulpn | grep 22222
# Nếu lỗi thiếu netstat thì chạy lệnh này để cài: sudo apt update && sudo apt install net-tools
# 4. Kiểm tra firewall nội bộ
sudo ufw status
# 5. Nếu ufw chưa allow 22222
sudo ufw allow 22222
sudo ufw reload
# 6. Truy cập vào WordOps dashboard theo đường dẫn này http://IP_SERVER:22222
# ở Dasboard > chọn Database > chọn phpMyAdmin > Đăng nhập bằng tài khoản root và import database vào đúng database name đang dùng cho WordPress
- Transfer files: Sử dụng rsync để sync files.
rsync -avz -e ssh user@old-server-ip:/var/www/vnrom.net/htdocs/ /var/www/vnrom.net/htdocs/- Fix permissions:
sudo chown -R www-data:www-data /var/www/vnrom.net/htdocs/- Update DNS: Trỏ domain sang IP server mới.
- Hoàn tất: Chạy
sudo wo site update vnrom.net --letsencryptđể renew SSL. Kiểm tra site và updatewp-config.phpnếu cần.
Nếu gặp lỗi (như permissions hoặc plugin conflict), kiểm tra log Nginx /var/log/nginx/vnrom.net.error.log. Mình migrate từ Webinoly sang WordOps mất khoảng 30 phút, site chạy mượt hơn nhờ Redis.
Cách dùng SSL có sẵn với WordOps, thay cho Let’s Encrypt.
1. Chuẩn bị file SSL
Giả sử bạn đã có từ nhà cung cấp SSL:
- Certificate chính:
vnrom.net.crt(hoặc tương tự) - CA bundle (intermediate + root):
vnrom.net.ca-bundle(hoặc vài file.crtphải ghép lại) - Private key:
vnrom.net.key
Bước 1 – Tạo thư mục chứa SSL
sudo mkdir -p /etc/nginx/ssl
cd /etc/nginx/sslCopy 3 file (từ local hoặc server cũ) vào thư mục này, tên ví dụ:
vnrom.net.crt # cert chính
vnrom.net.ca-bundle # CA bundle (nếu có)
vnrom.net.key # private keyBước 2 – Ghép cert + CA bundle
Nhiều nhà cung cấp (Comodo/Sectigo, Cloudflare Origin CA, v.v.) yêu cầu bạn ghép cert + CA chain vào 1 file .crt:
cat vnrom.net.crt vnrom.net.ca-bundle > fullchain-vnrom.net.crtKết quả dùng file:
/etc/nginx/ssl/fullchain-vnrom.net.crt/etc/nginx/ssl/vnrom.net.key
2. Tạo file SSL cho site WordOps
Giả sử WordOps site là vnrom.net (đã tạo trước đó bằng wo site create addrom.com --wp).
Bước 3 – Tạo file ssl.conf cho site
Tạo (hoặc sửa) file:
sudo mkdir -p /var/www/vnrom.net/conf/nginx
sudo nano /var/www/vnrom.net/conf/nginx/ssl.confNội dung:
listen 443 ssl;
listen [::]:443 ssl;
http2 on;
ssl_certificate /etc/nginx/ssl/fullchain-vnrom.net.crt;
ssl_certificate_key /etc/nginx/ssl/vnrom.net.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305;
ssl_prefer_server_ciphers off;
ssl_session_cache shared:MozSSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
# ---- DH params (sudo openssl dhparam -out /etc/nginx/dhparam.pem 2048) ----
# ssl_dhparam /etc/nginx/dhparam.pem;WordOps sẽ tự động include file ssl.conf này vào virtual host của vnrom.net, nên cách này an toàn qua các lần wo site update.
3. Redirect HTTP → HTTPS (tuỳ chọn)
Để toàn bộ truy cập về HTTPS:
Tạo file:
sudo nano /etc/nginx/conf.d/force-ssl-vnrom.net.confNội dung:
server {
listen 80;
listen [::]:80;
server_name vnrom.net www.vnrom.net;
return 301 https://$host$request_uri;
}(Lưu ý: nếu WordOps đã tạo redirect sẵn, không cần file này.)
4. Phân quyền & test Nginx
Bước 4 – Phân quyền cơ bản
sudo chmod 644 /etc/nginx/ssl/fullchain-vnrom.net.crt
sudo chmod 600 /etc/nginx/ssl/vnrom.net.key
sudo chown root:root /etc/nginx/ssl/*(Quan trọng: key không được world‑readable.)
Bước 5 – Test và reload Nginx
sudo nginx -t
sudo systemctl reload nginxNếu thấy warn kiểu ssl_stapling ignored, issuer certificate not found → chỉ là cảnh báo OCSP stapling, không ảnh hưởng HTTPS chạy.
5. Ghi chú riêng cho Cloudflare / Origin CA
- Nếu bạn dùng Cloudflare Origin CA:
- Certificate chỉ được dùng giữa Cloudflare → server, browser truy cập thẳng sẽ báo
ERR_CERT_AUTHORITY_INVALID. - Mode nên dùng trên Cloudflare:
FullhoặcFull (strict)(không phải Flexible).
- Khi test trực tiếp
https://vnrom.netqua IP/hosts mà bỏ Cloudflare, bạn sẽ luôn thấy warning (do Origin CA không public‑trusted) → chấp nhận hoặc dùng self‑signed/Let’s Encrypt riêng để test local.
- Certificate chỉ được dùng giữa Cloudflare → server, browser truy cập thẳng sẽ báo
Setup để backup tự động lên Google Drive
Dưới đây là script backup hoàn chỉnh cho server WordOps, tự động backup source + database, upload Google Drive qua Rclone, và gửi thông báo qua Telegram.
1. Cài Rclone và config Google Drive
# Cài Rclone
curl https://rclone.org/install.sh | sudo bash
# Config remote Google Drive (tên remote: gdrive)
rclone config
# Chọn: n (new remote) → name: gdrive → storage: drive (thường là số 24) → ...theo hướng dẫn2. Tạo Telegram Bot
- Nhắn tin
@BotFathertrên Telegram →/newbot→ lấy BOT_TOKEN. - Nhắn bot 1 tin bất kỳ → gọi API lấy CHAT_ID:
curl "https://api.telegram.org/bot<BOT_TOKEN>/getUpdates"3. Script backup
Cài đặt nhanh (lần đầu). Repo này nằm trong project tổng hợp auto, bạn cần clone về:
git clone https://github.com/duynghien/auto.git
cd auto/wordops
sudo bash setup.shSetup sẽ:
- Hỏi thông tin cấu hình và lưu vào
backup.env. - Cài script vào
/opt/scripts(hoặc đường dẫn bạn nhập). - Lưu
backup.envduy nhất ngay cạnhbackup.sh/restore.sh. - Tạo cron tự động (nếu bạn bật).
File chính sau setup:
/opt/scripts/backup.env(mặc định, quyền600)- Nếu bạn đổi thư mục cài script khi setup:
<INSTALL_DIR>/backup.env
Bạn có thể tham khảo mẫu biến tại:
config/backup.env.example
Chạy backup thủ công
sudo bash /opt/scripts/backup.shLog runtime:
tail -f /var/log/backup-*.log4. Script restore
Khôi phục full (files + DB):
sudo bash /opt/scripts/restore.sh YYYY-MM-DD domain.com --yesChỉ khôi phục files:
sudo bash /opt/scripts/restore.sh YYYY-MM-DD domain.com --files-only --yesChỉ khôi phục DB:
sudo bash /opt/scripts/restore.sh YYYY-MM-DD domain.com --db-only --yesChecklist restore hàng tháng:
- Xem file:
docs/RESTORE_CHECKLIST_MONTHLY.md - Khuyến nghị: test restore ít nhất 1 site/tháng trên môi trường staging.
5. Ví dụ Telegram notification
🔄 Backup WordOps bắt đầu
Server: addrom
Time: 28/02/2026 12:05:51
Scan path: /var/www
✅ Backup WordOps hoàn tất
Server: addrom
Thời gian: 28/02/2026 12:05:51
Runtime: 07m40s
Tổng dung lượng: 6.3G
Sites: 1 (✅ 1 | ❌ 0)
Google Drive: ✅ Thành công
Chi tiết theo site
addrom.com | ✅ Thành công | 7.0G | ⏱03m46s
DB: ✅
Source: ✅Nếu bạn muốn thêm tính năng gì cho script trên thì hãy cho mình biết và mình có thể bổ sung vào.
Tối ưu WordOps chống Bot dởm cào dữ liệu và lỗi quá tải 100% CPU/RAM
Dù WordOps đã tối ưu Nginx và Redis Cache rất tuyệt vời cho người dùng thật, nhưng khi website của bạn lớn lên, nó sẽ trở thành mục tiêu của hàng ngàn con Bot (từ Trung Quốc, Nga hoặc các Datacenter) cào dữ liệu mỗi ngày.
Những con Bot này có một “bài đánh” cực kỳ nguy hiểm: Cố tình truy cập các đường link không tồn tại (gây lỗi 404) hoặc spam công cụ Tìm kiếm (/?s=). Vì các trang rác này không có sẵn trong Cache, Nginx bắt buộc phải đẩy ngược yêu cầu về cho PHP-FPM và Database MySQL xử lý. Khi hàng ngàn request ảo ập đến cùng lúc, server của bạn cũng sẽ gục ngã với tình trạng 100% CPU và Load Average tăng phi mã.
Để rào kín lỗ hổng bypass cache này, bạn hãy thực hiện ngay 3 bước tối ưu sau:
1. Ép Nginx / Redis lưu cache cho cả các trang báo lỗi (404, 403)
Mặc định, cấu hình Redis Cache của WordOps (redis-php.conf) chỉ lưu lại các trang thành công (200, 301, 302). Để ép Nginx lưu luôn kết quả của trang lỗi (để bot cào trúng link ảo thì Nginx lấy luôn file rác trong RAM ném vào mặt nó, không cần gọi PHP), bạn chạy lệnh sau qua SSH:
# Tạo cấu hình ép Redis lưu cache cho HTTP trạng thái 404 và 403
echo "srcache_store_statuses 200 301 302 404 403;" > /var/www/ten-mien-cua-ban.com/conf/nginx/cache-404.conf
# Khởi động lại Nginx để nhận cấu hình mới
wo stack restart --nginx2. Tắt cơ chế ghi log các lỗi PHP vặt (Warning, Notice)
Khi Theme hoặc Plugin của bạn code không chuẩn (thiếu khai báo biến), mỗi lần khách hoặc Bot truy cập, PHP sẽ sinh ra một dòng cảnh báo (PHP Warning). Nếu lượng truy cập lớn, file error.log sẽ phình to hàng Gigabyte chỉ trong vài phút. Hậu quả là tốc độ Đọc/Ghi (I/O) của ổ cứng bị vắt kiệt, cả hệ thống phải xếp hàng chờ PHP ghi file xong mới được chạy tiếp.
Hãy ép PHP chỉ ghi nhận báo cáo các lỗi nghiêm trọng (Fatal Error – làm sập web) và bỏ qua các lỗi vặt bằng lệnh sau:
# Thay 8.3 bằng phiên bản PHP mà site bạn đang dùng (Vd: 7.4, 8.1, 8.2)
sed -i 's/^error_reporting = .*/error_reporting = E_ALL \& ~E_DEPRECATED \& ~E_STRICT \& ~E_NOTICE \& ~E_WARNING/' /etc/php/8.3/fpm/php.ini
# Khởi động lại PHP
wo stack restart --php833. Bật “Lớp khiên diệt Bot” từ Cloudflare (Bắt buộc)
Đừng bao giờ để rác lọt vào tận nhà rồi mới quét. Hãy để Cloudflare chặn chúng từ ngoài biên giới Internet.
- Trợ thủ đắc lực nhất: Đăng nhập Cloudflare -> chọn domain của ae -> Security -> Settings -> Bật chế độ Bot Fight Mode (ON). Tính năng AI này của Cloudflare đủ thông minh để chặn các cuộc cào dữ liệu từ máy chủ ảo (Datacenter) mà không ảnh hưởng tới người dùng.
- Ngăn chặn Bot nhồi nhét Tìm kiếm (Tạo Custom Rule): Khi Bot liên tục F5 tính năng tìm kiếm (Ví dụ:
/?s=keyword), nó sẽ Bypass toàn bộ hệ thống Caching để bắt PHP gọi vào Database MySQL. Hậu quả là 100% CPU. Để chặn đứng đòn đánh này tại rìa mạng Cloudflare, bạn làm theo các bước sau:- Đăng nhập Cloudflare, chọn Tên miền của bạn.
- Ở Menu bên trái, chọn Security -> Security rules -> Create rule -> Custom Rules:
- Rule name: Đặt tên gợi nhớ, ví dụ:
Block Spam Search Bots - Tại mục Field, click vào menu thả xuống và chọn URI Query String.
- Tại mục Operator, chọn starts with.
- Tại mục Value, gõ vào ký tự:
s=. Dòng này có nghĩa là “Nếu đường dẫn Query bắt đầu chữ s= (tức là đang dùng tính năng Search) thì áp dụng hình phạt phía dưới”. - Tại mục Then take action:
- Cột Choose action: Khuyến nghị chọn Managed Challenge (Bắt Bot tự giải mã Captcha ẩn, con người thật nếu có search cũng sẽ tự động lọt qua rất mượt). Nếu bạn đang bị tấn công DDoSs sập Server, có thể chọn thẳng Block để cấm luôn.
- Bấm Deploy để kích hoạt Rule. Ngay lập tức, Server của bạn sẽ được “bảo kê” khỏi dợt sóng Bot Search.
Chỉ với 3 thao tác trên, WordOps của bạn sẽ trở thành một “bức tường thành” thực sự, vững vàng trước mọi cơn bão Bot quét lỗ hổng rác.
WordOps là công cụ mạnh mẽ, giúp bạn quản lý WordPress mà không cần panel phức tạp. Với vnrom.net, mình thấy tốc độ load cải thiện rõ rệt sau khi dùng. Nếu bạn gặp vấn đề, comment bên dưới hoặc tham khảo docs.wordops.net. Nhớ backup thường xuyên nhé! Nếu cần hướng dẫn cụ thể hơn, hỏi mình thêm.








