apache2 не запускается при загрузке. Даже если настроен на уровне запуска
На моем Ubuntu 10.04.4 установлен сервер apache2 2.2.14. Несколько месяцев назад запуск apache2 при загрузке работал нормально.
Теперь я обнаружил, что после перезагрузки apache2 больше не запускается автоматически.
Сценарий init.d присутствует и должен быть тем из установки по умолчанию:
root@ser:~# ls /etc/init.d | grep apache
apache2
также запускаются уровни запуска (используя update-rc.d apache2 defaults
):
root@ser:~# find /etc/rc* -name *apache*
/etc/rc0.d/K20apache2
/etc/rc1.d/K20apache2
/etc/rc2.d/S20apache2
/etc/rc3.d/S20apache2
/etc/rc4.d/S20apache2
/etc/rc5.d/S20apache2
/etc/rc6.d/K20apache2
Проверка состояния после перезагрузки приводит к:
root@ser:~# service apache2 status
Apache is NOT running.
ps aux | grep apache
тоже пусто.
Глядя в /var/log/apache/error.log
нет никаких записей во время загрузки. cat /var/log/syslog | grep apache
также пуст и системный журнал не содержит подозрительных записей.
Запуск apache после загрузки вручную с service apache2 start
работает нормально и не выдает никаких ошибок.
Обновление 1:/etc/init.d/apache2
скрипт имеет следующий заголовок / требования:
### BEGIN INIT INFO
# Provides: apache2
# Required-Start: $local_fs $remote_fs $network $syslog
# Required-Stop: $local_fs $remote_fs $network $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# X-Interactive: true
# Short-Description: Start/stop apache2 web server
### END INIT INFO
И запускаемые услуги:
root@ser:~# ls /etc/rc2.d/
README S10sysklogd S20apache2 S20denyhosts S20hashcash-milter S20ido2db S20modules_dep.sh S20postfix S20saslauthd S20vzquota S50rsync S99rc.local
S09hostname_vps S15bind9 S20exim4 S20icinga S20memcached S20opendkim S20psad S20xinetd S23ntp S99ondemand
Как я могу узнать, почему apache2 не запускается при загрузке?
1 ответ
Нашел проблему:
Вкратце: моя веб-страница пыталась подключиться к MySQL, но MySQL в это время не работал. Таким образом, Apache не удалось запустить.
Я изменил следующую строку в /etc/init.d/apache2
войти проблема запуска в системный журнал:
if $APACHE2CTL start; then
в
if $APACHE2CTL -k start -e Debug 2>&1 | logger -t "apache_start"; then
После загрузки проверьте ваш /var/log/syslog
для записей, начинающихся с apache_start
,
Следующая проблема: как я могу заставить apache запускаться после mysql. Смотрите здесь: принудительный запуск apache после mysql
Дополнительная информация: я использую Perl Catalyst Framework.
Вот вывод ошибки из скрипта apache init:
DBI connect('database:localhost:3306','User',...) failed: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) at /usr/local/share/perl/5.10.1/Catalyst/Plugin/I18N/DBI.pm line 196.
Syntax error on line 10 of /etc/apache2/sites-available/mysite:
Can't call method "disconnect" on an undefined value at /usr/local/share/perl/5.10.1/Catalyst/Plugin/I18N/DBI.pm line 263, <DATA> line 998.\nCompilation failed in require at (eval 4) line 3, <DATA> line 998.\n
Я думаю, что ошибка синтаксиса вызвана предыдущей ошибкой. Потому что строка 10 это:
PerlModule CatalystPageName
и работает нормально, если MySQL работает.
Я еще не выяснил, почему модуль локализации подключается при запуске. У нас есть другие веб-страницы с тем же модулем, которые не имеют этой проблемы / подключаются при запуске. Поскольку он не может подключиться, последующее отключение вызывает в Perl исключение, которое прерывает команду запуска apache2crl. (Это то, что я думаю)