Бывают случаи, когда вас нет на рабочем месте, а вы получаете на свою почту письмо от системы аналитики о недоступности вашего сайта… Вероятнее всего упал сервер, неважно по каким причинам он упал, ввиду атаки или неправильной конфигурации установленных модулей, его необходимо перезагружать. Добраться до ближайшего компьютера с выходом в интернет проблематично, а с телефона это сделать не всегда удается возможным.
Мы решили поделиться с вами скриптом автоперезагрузки сервера в случае когда сайт не доступен!
Создаем файл с названием restart.sh и следующим содержанием:
#!/bin/bash
#ПОДСТАВЛЯЕМ НАЗВАНИЕ ВАШЕГО САЙТА
SITE=http://yoursite.com
rm -f test.file
#НАПРАВЛЯЕМ ЗАПРОС WGET с измененным user-agent, на случай если у вас заблокирован wget в настройках сервера
wget --header="Accept: text/html" --user-agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:21.0) Gecko/20100101 Firefox/21.0" -q $SITE -O test.file
file_size=$(stat -c%s test.file)
if [ $file_size == 0 ]
then
#Перезапускаем сервисы !!!ВНИМАНИЕ!!! Для NGINX и APACHE команды разные, оставить только необходимые
#NGINX + PHP-FPM
service nginx restart
service php5-fpm restart
#APACHE
service httpd restart
fi
*На случай если вы хотите полного перезапуска сервера необходимо между then и fi написать всего одну команду:
reboot
Закачиваем файл на ваш сервер (например в папку /etc) и по ssh даем ему права на запуск от root.
[root@server]# chmod 700 /etc/restart.sh
Теперь необходимо прицепить данный скрипт к планировщику cron:
[root@server]# crontab -e
со следующими параметрами:
*/5 * * * * /etc/restart.sh
Данный скрипт будет запускаться каждые 5 минут для проверки работы сайта, в случае его недоступности сервер будет перезагружаться. Для изменения частоты проверки работоспособности, вместо /5 подставляем свое значение в часах или минутах. Для значения в часах это целое число, в минутах со знаком дроби.
Данное решение является заплаткой и небольшой страховкой. В первую же очередь мы рекомендуем разобраться с причинами падения сервера и устранить их.