В логах /var/log/apache2/error.log Апач внезапно падает
[timestamp] [mpm_event:notice] [pid 20056:tid 140176783820672] AH00493: SIGUSR1 received. Doing graceful restart [timestamp] [core:notice] [pid 20056] AH00060: seg fault or similar nasty error detected in the parent process
Соответсвенно сайты уходят в 502 Bad Gateway.
У меня эта проблема была из-за программы logrotate и в неточности в насройках.
$ sudo nano /etc/logrotate.d/apache2
В этом файле нежно сменить apache2 reload на apache2 restart !
После данных правок глюки с вылетанием закончились.
или
Создадим файл dbmonitor.sh с таким содержимым:
#!/bin/bash
# APACHE SECTION
RESTART="/etc/init.d/apache2 restart"
PGREP="/usr/bin/pgrep"
HTTPD="apache"
$PGREP ${HTTPD}
if[ $?-ne 0];then
$RESTART
fi
# MYSQL SECTION
RESTARTM="/etc/init.d/mysql restart"
MYSQLD="mysqld"
$PGREP ${MYSQLD}
if[ $?-ne 0];then
$RESTART
$RESTARTM
fi
Скрипт проверяет работоспособность сервисов, и в случае их падения инициирует перезапуск.
Даем скрипту права на выполнение:
chmod +x dbmonitor.sh
Теперь поставим скрипт на автоматическое выполнение в cron. Для этого, в файле /etc/crontab
nano /etc/crontab
в конец добавим строку:
*/1 * * * * /bin/sh /file_catalog/dbmonitor.sh
где file_catalog — каталог, в котором находится файл dbmonitor.sh
и сохраним файл.
Теперь каждую минуту на сервере будет запускаться скрипт, проверять работу сервисов, и автоматически их перезапускать при необходимости.
Конечно, решение не самое лучшее, и при любых неполадках лучше разобраться в их причине и наладить бесперебойную работу. Но во многих случаях такой подход может оказаться очень полезным.
Что бы узнать полный путь от корня, используем: pwd