Apache-2.2

apache2 沒有在啟動時啟動。即使在執行級別中設置

  • June 5, 2013

在我的 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將啟動問題記錄到 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 之後啟動。請參見此處:在 mysql 之後強制啟動 apache


附加資訊:我使用 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 start 命令。(這是我猜的)

引用自:https://serverfault.com/questions/513401