apache2 无法在启动时启动。即使在运行级别中设置

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也是空的,并且系统日志不包含任何可疑条目。

启动后手动启动 apacheservice 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 框架。

以下是 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 启动命令。(我猜是这样)

相关内容