Encontrou o problema:
Em suma: minha página web tentou se conectar ao MySQL, mas o MySQL não estava rodando no momento. Assim, o apache falhou ao iniciar. Alterei a linha a seguir em /etc/init.d/apache2
para registrar o problema de inicialização no syslog:
if $APACHE2CTL start; then
para
if $APACHE2CTL -k start -e Debug 2>&1 | logger -t "apache_start"; then
Após a inicialização, verifique seu /var/log/syslog
das entradas que começam com apache_start
.
O próximo problema: como posso forçar o apache a iniciar após o mysql? Veja aqui: Forçar o início do apache após o mysql
Informação adicional: Eu uso o Perl Catalyst Framework.
Aqui está a saída de erro do script de inicialização do apache:
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
Acho que o erro de sintaxe é causado pelo erro anterior. Porque a linha 10 é:
PerlModule CatalystPageName
e funciona bem se o mysql estiver rodando.
Ainda não descobri por que o módulo de localização se conecta na inicialização. Temos outras páginas da Web com o mesmo módulo que não têm esse problema / conectam na inicialização. Como não é possível conectar uma desconexão a seguir, causa uma exceção no Perl que anula o comando apache2crl start. (Isso é o que eu acho)