Libra Media работает на хостинге Beget. Хочешь свой сайт? Регистрируйся и получи любой тариф бесплатно на месяц!
Bash-скрипт для перезагрузки веб-сервера

Bash-скрипт для перезагрузки веб-сервера

Опубликовано: 16.10.2019
Обновлено: 13.11.2021
2 минуты на чтение

Понадобилось автоматизировать перезагрузку VPS, на котором хостился сайт на самописной CMS. Особенность сайта заключалась в том, что он падал с ошибкой 500 Internal Server Error во время интенсивного краулинга поисковыми роботами. Поскольку CMS была очень нетипичной, проще было перезагружать сервер, чем вникать в суть проблемы и искать способы исправления.

Для этого был написан bash-скрипт следующего содержания:

#!/bin/bash
url='https://site.ru'
read -ra result $(curl -Is --connect-timeout 5 "${url}" || echo "timeout 500")
status=${result[1]}
touch /полный/путь/к/папке/public_html/log.txt
if [ $status -ge 400 ];
then
date /полный/путь/к/папке/public_html/log.txt
sudo reboot
fi
exit;

Логика его работы:

  1. Запрашиваем главную страницу сайта site.ru
  2. Проверяем код состояния HTTP
  3. Если получен HTTP-статус ≥400, то записываем факт события в лог-файл и перезагружаем сервер
Полная перезагрузка сервера — слишком жесткое решение, оно приведено исключительно в качестве примера. Правильнее будет перезапускать проблемный сервис — а это либо SQL-сервер, либо веб-сервер (Nginx, Apache), либо интерпретатор PHP.

Скрипт нужно сохранить в файл с расширением .sh, а затем сделать исполняемым:

chmod a+x reboot.sh

Проверяем запуск:

./reboot.sh

Если скрипт выдает ошибку, то пересохраняем его в правильной кодировке при помощи утилиты dos2unix:

apt install dos2unix
dos2unix reboot.sh

Настраиваем автоматическое выполнение скрипта раз в минуту:

crontab -e

В открывшийся файл вписываем новую строку:

*/1 * * * * /полный/путь/к/reboot.sh

Сохраняем файл. Проверяем, что изменения внесены:

crontab -l

Готово. Теперь при получении кода ответа 500, 502, 504 сервер будет автоматически перезагружаться, а время простоя будет составлять не более одной минуты.

Автор статьи:
Дмитрий
С 2013 года профессионально занимается созданием и продвижением коммерческих и информационных веб-сайтов. В 2018 году завел блог Libra Media, в котором делится опытом и практическими наработками в сфере SEO, администрирования серверов и доработок для сайтов на Bitrix и WordPress.
#Администрирование

Оставьте комментарий

Ваш адрес email не будет опубликован.