Tự động restart dịch vụ khi gặp lỗi (PHP, MySQL, Nginx)

Việc tự quản lý VPS nghĩa là bạn phải chịu trách nhiệm khi bất kỳ dịch vụ nào (như PHP, MySQL, Nginx) bị treo hoặc crash. Một website WordPress sẽ không thể hoạt động nếu bất kỳ dịch vụ nào ngừng chạy. Bài viết này hướng dẫn cách thiết lập hệ thống tự động khởi động lại các dịch vụ quan trọng khi phát hiện lỗi, đảm bảo uptime và giảm thời gian downtime ngoài ý muốn.

Tự động restart dịch vụ khi gặp lỗi (PHP, MySQL, Nginx)

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


  • Không có bình luận.

Init Toolbox

Nhấn Ctrl + \ trên máy tính, hoặc vuốt sang trái ở bất kỳ đâu trên mobile.

Đăng nhập





Đang tải...