在我的 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 没有在启动时启动?
发现问题:
简而言之:我的网页试图连接到 MySQL,但此时 MySQL 没有运行。因此 apache 无法启动。
我更改了以下行以
/etc/init.d/apache2
将启动问题记录到系统日志:至
启动后检查您
/var/log/syslog
的条目以apache_start
.下一个问题:如何强制 apache 在 mysql 之后启动。请参阅此处:在 mysql 之后强制启动 apache
附加信息:我使用 Perl Catalyst Framework。
这是 apache init 脚本的错误输出:
我认为语法错误是由先前的错误引起的。因为第 10 行是:
如果 mysql 正在运行,则工作正常。
我还没有发现为什么本地化模块在启动时连接。我们有其他具有相同模块的网页,这些网页在启动时没有这个问题/连接。由于它无法连接,因此以下断开连接会导致 Perl 中出现异常,从而中止 apache2crl 启动命令。(这是我猜的)