1. Kiểm tra dịch vụ có đang chạy hay không
Trên Linux sử dụng systemd (Ubuntu 18.04 trở lên), bạn có thể kiểm tra trạng thái dịch vụ bằng:
systemctl status nginx
systemctl status php8.3-fpm
systemctl status mysql
Nếu bất kỳ dịch vụ nào trong số này bị “inactive” hoặc “failed”, trang web có thể sẽ không truy cập được.
2. Thiết lập tự động restart với systemd
Systemd có thể tự động restart dịch vụ nếu nó bị crash. Để cấu hình, bạn chỉ cần chỉnh file unit tương ứng. Ví dụ với PHP-FPM:
sudo systemctl edit php8.3-fpm
Thêm vào nội dung sau (trong phần [Service]):
[Service]
Restart=on-failure
RestartSec=3
Lưu lại và reload:
sudo systemctl daemon-reexec
sudo systemctl restart php8.3-fpm
Thực hiện tương tự với Nginx và MySQL:
sudo systemctl edit nginx
sudo systemctl edit mysql
Chỉ cần bạn cấu hình `Restart=on-failure` và dịch vụ sẽ tự động bật lại nếu bị crash bất ngờ.
3. Sử dụng script giám sát đơn giản (cron + shell)
Nếu muốn kiểm soát kỹ hơn hoặc đang dùng hệ thống cũ không hỗ trợ systemd, bạn có thể dùng script cron để kiểm tra định kỳ:
#!/bin/bash
for service in nginx php8.3-fpm mysql
do
if ! systemctl is-active --quiet $service
then
echo "$(date): $service is down. Restarting..." >> /var/log/restart.log
systemctl restart $service
fi
done
Lưu lại dưới dạng /root/auto-restart.sh rồi cho phép thực thi:
chmod +x /root/auto-restart.sh
Thêm vào crontab để kiểm tra mỗi 5 phút:
*/5 * * * * /root/auto-restart.sh
4. Kiểm tra log và thông báo lỗi
Ngoài việc tự động restart, bạn nên thường xuyên xem log để xử lý tận gốc nguyên nhân gây crash:
- Nginx: /var/log/nginx/error.log
- PHP-FPM: /var/log/php8.3-fpm.log
- MySQL: /var/log/mysql/error.log
Nếu thấy lỗi lặp đi lặp lại (như memory exhausted, hoặc port conflict), hãy xử lý triệt để để tránh tình trạng “chết đi sống lại” liên tục.
5. Dùng Uptime Robot hoặc Healthchecks.io để cảnh báo
Bạn cũng có thể kết hợp các công cụ giám sát như:
- Uptime Robot: kiểm tra HTTP/HTTPS và gửi email/SMS nếu web down.
- Healthchecks.io: dùng để ping từ script cron, nếu không thấy thì cảnh báo.
Những công cụ này giúp bạn được thông báo ngay cả khi tự động restart không thể khắc phục sự cố.
6. Tổng kết
Tự động khởi động lại các dịch vụ backend là một phần quan trọng trong việc giữ ổn định cho website WordPress. Dù không thay thế được việc tối ưu hệ thống đúng cách, nhưng giúp giảm đáng kể rủi ro downtime. Kết hợp thêm việc theo dõi log, giám sát chủ động bằng cron hoặc tool bên ngoài sẽ giúp bạn yên tâm hơn khi vận hành VPS.
Bình luận