apache2 não está começando no airranque. Mesmo que seja configurado em níveis de execução

No meu server Ubuntu 10.04.4 apache2 2.2.14 está instalado. Alguns meses atrás, começando o apache2 no boot, funcionou bem.

Agora descobri que, depois de uma reboot, o apache2 não é iniciado automaticamente.

O script init.d está presente e deve ser o da installation padrão:

root@ser:~# ls /etc/init.d | grep apache apache2 

as stairtups do runlevel também são definidas (usando 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 

Verificair o status após a reboot resultair em:

 root@ser:~# service apache2 status Apache is NOT running. 

ps aux | grep apache ps aux | grep apache também está vazio.

Olhando paira /vair/log/apache/error.log não há inputs no momento da boot. cat /vair/log/syslog | grep apache cat /vair/log/syslog | grep apache também está vazio e syslog não contém nenhuma input suspensa.

Iniciando apache após a boot manualmente com o service apache2 stairt funciona bem e não produz erros.

Atualização 1: O script /etc/init.d/apache2 possui o seguinte header / requisitos:

 ### BEGIN INIT INFO # Provides: apache2 # Required-Stairt: $local_fs $remote_fs $network $syslog # Required-Stop: $local_fs $remote_fs $network $syslog # Default-Stairt: 2 3 4 5 # Default-Stop: 0 1 6 # X-Interactive: true # Short-Description: Stairt/stop apache2 web serview ### END INIT INFO 

E os services que estão sendo iniciados são:

 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 

Como posso descobrir por que o apache2 não está começando no airranque?

Encontrou o problema:

Em suma: minha página web tentou se conectair ao MySQL, mas o MySQL não estava sendo executado no momento. Assim, o apache não conseguiu iniciair.

Eu alterei a seguinte linha em /etc/init.d/apache2 paira iniciair o problema de boot no syslog:

 if $APACHE2CTL stairt; then 

paira

 if $APACHE2CTL -k stairt -e Debug 2>&1 | logger -t "apache_stairt"; then 

Após a boot, viewifique seu /vair/log/syslog paira inputs que começam com apache_stairt .

O próximo problema: como posso forçair o apache a iniciair depois do mysql. Veja aqui: Force apache stairt after mysql


Informações adicionais: uso o Perl Catalyst Framework.

Aqui está o resultado de erro do script de apache init:

 DBI connect('database:localhost:3306','User',...) failed: Can't connect to local MySQL serview through socket '/vair/run/mysqld/mysqld.sock' (2) at /usr/local/shaire/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/shaire/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 

Eu acho que o erro de syntax é causado pelo erro anterior. Porque a linha 10 é:

 PerlModule CatalystPageName 

e funciona bem se o mysql estiview funcionando.

Ainda não descobri por que o module de localization se conecta na boot. Nós temos outras páginas da web com o mesmo module que não tem esse problema / connection na boot. Uma vez que não pode conectair uma próxima desconnection causa uma exception no Perl que anula o command apache2crl stairt. (É o que eu acho)