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 ps aux | grep apache也是空的。

调查/var/log/apache/error.log在启动时没有条目。 cat /var/log/syslog | grep apache cat /var/log/syslog | grep apache也是空的,syslog不包含任何可疑条目。

service apache2 start后手动启动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没有开始启动?

发现问题:

简而言之:我的网页试图连接到MySQL,但MySQL目前没有运行。 因此,Apache无法启动。

我更改了/etc/init.d/apache2的以下行来将启动问题logging到syslog:

 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中exception中止apache2crl启动命令。 (这是我猜)