Перейти к содержимому

Сайт не поднялся после перезагрузки - разбор причин

Сервер перезагрузили, а сайт не открывается. Разбираем причины в порядке убывания частоты - все проверки делаются с консоли за пару минут.

С чего начать

Смотрим, какие службы поднялись:

Окно терминала
systemctl status nginx httpd php-fpm mysqld --no-pager | grep -E 'Active|●'
systemctl is-enabled nginx httpd php-fpm mysqld # включены ли в автозапуск

Три состояния различаются сразу: служба работает, служба остановлена, служба не включена в автозапуск. Последнее и есть самая частая причина «после перезагрузки всё пропало».

Проверяем, отвечает ли сервер вообще:

Окно терминала
curl -sI http://127.0.0.1/ | head -3 # изнутри машины
ss -lntp | grep -E ':80|:443|:3306' # кто слушает нужные порты

Ответ изнутри при недоступности снаружи означает сетевую проблему, а не сбой сайта. На виртуальной машине это обычно потерянный сетевой адрес после перезапуска.

Смотрим журналы за время старта:

Окно терминала
journalctl -b -p err --no-pager | tail -30 # ошибки текущей загрузки
tail -30 /var/log/mysqld.log
df -h / /var /home # место, кончившееся до перезагрузки
mount | grep -E ' / | /home ' | grep -o 'ro,\|rw,' # раздел на чтение или на запись
dmesg | grep -iE 'i/o error|read-only' | tail -5

Журнал загрузки отвечает на вопрос, пыталась ли служба стартовать и почему отказалась. Пустой журнал при остановленной службе означает, что её просто никто не запускал.

Причины

  1. Службы не включены в автозапуск примерно 30% случаев

    ПризнакПосле ручного запуска всё работает, после перезагрузки снова нет.

    ПроверкаСмотрим, включены ли веб-сервер, PHP и база в автозапуск системы.

    Что делатьВключаем автозапуск для всех служб окружения: ручные эксперименты его нередко снимают.

  2. База не стартовала примерно 25% случаев

    ПризнакСайт отдаёт ошибку подключения к базе, веб-сервер при этом работает.

    ПроверкаЧитаем журнал базы: там указана причина отказа старта.

    Что делатьОсвобождаем место, чиним права на каталог данных или восстанавливаем таблицы по сообщению из журнала.

  3. Кончилось место на диске примерно 20% случаев

    ПризнакСлужбы падают одна за другой, журналы обрываются на середине.

    ПроверкаСмотрим свободное место на всех разделах, включая раздел с журналами.

    Что делатьЧистим журналы и старые резервные копии, затем перезапускаем службы по очереди.

  4. Виртуальная машина потеряла сеть примерно 15% случаев

    ПризнакИзнутри сайт открывается, снаружи недоступен.

    ПроверкаСмотрим сетевые интерфейсы и их адреса, сверяем с тем, что ожидает хост.

    Что делатьПоднимаем интерфейс и закрепляем адрес: динамический адрес после перезапуска нередко меняется.

  5. Файловая система смонтирована только на чтение примерно 10% случаев

    ПризнакСайт открывается, но ничего не сохраняется, а журналы пусты.

    ПроверкаПроверяем режим монтирования разделов и сообщения ядра о сбоях диска.

    Что делатьПеремонтируем раздел на запись после проверки диска: чаще всего это следствие некорректного выключения.

Частые вопросы

Почему после ручного запуска всё работает?

Служба стартует, но не включена в автозапуск. При следующей перезагрузке ситуация повторится, поэтому автозапуск возвращают сразу.

Что проверять на виртуальной машине в первую очередь?

Сеть: адрес после перезапуска мог измениться. Только потом смотрят службы внутри машины.

Как избежать таких сюрпризов?

Проверять сайт после каждой плановой перезагрузки, а не узнавать о сбое от посетителей. Проверка занимает минуту.

Можно ли автоматически поднимать упавшие службы?

Да, штатным перезапуском при отказе в настройках службы. Это лечит симптом, а не причину, поэтому журнал всё равно читают.

Смежное

Первоисточник