1. Sử dụng systemd để tự khởi động lại
Nếu dịch vụ bạn dùng là systemd unit (như hầu hết hiện nay), chỉ cần sửa hoặc tạo override:
sudo systemctl edit nginx
Thêm vào nội dung sau:
[Service]
Restart=on-failure
RestartSec=5
Sau đó reload lại systemd:
sudo systemctl daemon-reexec
sudo systemctl restart nginx
Lưu ý: Bạn có thể thay
nginxbằngphp8.3-fpm,mysqlhoặc bất kỳ service nào.
2. Kiểm tra thủ công bằng cron + bash script
Nếu không dùng systemd (hoặc muốn kiểm tra ping đến site), bạn có thể dùng cron job và một đoạn shell script như sau:
#!/bin/bash
URL="https://tenmiencuaban.com"
STATUS=$(curl -o /dev/null -s -w "%{http_code}" "$URL")
if [[ "$STATUS" -ne 200 ]]; then
echo "$(date): Trang lỗi với mã $STATUS, khởi động lại nginx" >> /var/log/site_monitor.log
systemctl restart nginx
fi
Lưu lại file, ví dụ: /usr/local/bin/monitor-site.sh và cấp quyền thực thi:
chmod +x /usr/local/bin/monitor-site.sh
Thêm cron mỗi 5 phút:
crontab -e
*/5 * * * * /usr/local/bin/monitor-site.sh
3. Kiểm tra nhiều dịch vụ cùng lúc
Có thể dùng một script tổng quát để kiểm tra nhiều service:
for service in nginx php8.3-fpm mysql; do
systemctl is-active --quiet $service || systemctl restart $service
done
Kết luận
Việc giám sát và tự động xử lý các sự cố nhỏ sẽ giúp website hoạt động ổn định hơn, tránh downtime bất ngờ. Với các bước trên, bạn đã có thể thiết lập cơ chế tự phục hồi dịch vụ nhanh chóng, hiệu quả mà không cần dùng công cụ bên ngoài.
Bình luận