2013-02-23 102 views
5

因此,我一直在使用OS X 10.8.2上的多個虛擬主機。我正在使用Apache2安裝和MySQL來運行基於名稱的虛擬主機。他們一直工作得很好,直到昨晚。突然,我的所有虛擬主機都重定向到「無法連接到」頁面。Apache無法啓動 - 說httpd模塊已加載,但未運行

在擺弄並最終檢查錯誤日誌後,我斷定Apache實際上並未運行。例如,ps aux | grep apache只返回grep進程。但是,如果我嘗試使用sudo/usr/sbin/apachectl start,則會收到「org.apache.httpd:已加載」的響應。

我檢查了我的httpd.conf文件,它看起來非常好。我看不到任何更改。我也運行了語法檢查命令(在確切的時刻逃離了我的大腦),它返回OK。在我的錯誤日誌中發現的唯一一件最後一件事是從昨天2月21日起,它說:「[Thu Feb 21 21:46:02 2013] [notice] caught SIGTERM,shutting down」

從那以後,我的Apache錯誤日誌就沒有包含任何內容(因爲它沒有運行)。我重新啓動,嘗試重新啓動Apache;儘管事實並非如此,但我爲什麼認爲它正在運行呢?

任何想法?

在/var/logs/system.log當我嘗試啓動和重啓Apache:重啓後

Feb 23 09:27:00 Baileys-MacBook-Pro com.apple.launchd[1] (org.apache.httpd[8766]): Exited with code: 1 
Feb 23 09:27:00 Baileys-MacBook-Pro com.apple.launchd[1] (org.apache.httpd): Throttling respawn: Will start in 10 seconds 
Feb 23 09:27:10 Baileys-MacBook-Pro com.apple.launchd[1] (org.apache.httpd[8767]): Exited with code: 1 
Feb 23 09:27:10 Baileys-MacBook-Pro com.apple.launchd[1] (org.apache.httpd): Throttling respawn: Will start in 10 seconds 
Feb 23 09:27:16 Baileys-MacBook-Pro.local sudo[8769]: bailey : TTY=ttys000 ; PWD=/private/var/log ; USER=root ; COMMAND=/usr/sbin/apachectl start 
Feb 23 09:27:20 Baileys-MacBook-Pro com.apple.launchd[1] (org.apache.httpd[8772]): Exited with code: 1 
Feb 23 09:27:20 Baileys-MacBook-Pro com.apple.launchd[1] (org.apache.httpd): Throttling respawn: Will start in 10 seconds 
Feb 23 09:27:20 Baileys-MacBook-Pro.local sudo[8773]: bailey : TTY=ttys000 ; PWD=/private/var/log ; USER=root ; COMMAND=/usr/sbin/apachectl restart 
Feb 23 09:27:20 Baileys-MacBook-Pro com.apple.launchd[1] (org.apache.httpd[8777]): Exited with code: 1 
Feb 23 09:27:20 Baileys-MacBook-Pro com.apple.launchd[1] (org.apache.httpd): Throttling respawn: Will start in 10 seconds 
Feb 23 09:27:26 Baileys-MacBook-Pro.local sudo[8778]: bailey : TTY=ttys000 ; PWD=/private/var/log ; USER=root ; COMMAND=/usr/bin/vi system.log 

這個問題仍然存在。從那天起,它不會啓動,但相信httpd模塊已加載。

我試圖通過谷歌找出,但 - 有人知道如何檢查Apache是​​否加載?我知道很多服務鎖定文件要運行;是否有可能Apache有一個鎖定文件,儘管Apache目前沒有運行,但它仍然被鎖定了。



注:我已爲這對ServerFault,以及 - 我在這裏張貼這也因爲到目前爲止我沒有收到關於ServerFault任何東西,我一直在Apache的職位上找StackOverflow,所以我假設Apache的問題對Stack來說很好。

回答

19

當有另一個進程正在監聽Apache想要綁定到的端口(通常是端口80)時,我可以通過啓動Apache來重現問題(有點兒)。所以,檢查是否有可能是另一個進程偵聽該端口:

sudo lsof -i tcp:80 | grep LISTEN 

編輯:也許更容易:你可以啓動Apache在調試模式下手動看到的原因是它不會啓動什麼:

sudo /usr/sbin/httpd -k start -e Debug -E /dev/stdout 

在我的情況(東西已經偵聽端口80),它會產生:

(48)Address already in use: make_sock: could not bind to address 0.0.0.0:80 
+0

當我運行該輸出是什麼。 – 2013-02-23 21:13:08

+0

您的Apache在端口80上偵聽?否則,您將不得不在'tcp:'之後更改端口號。你正在運行內置的Apache 2,還是安裝了MAMP? – robertklep 2013-02-23 21:16:09

+0

我的Apache確實在端口80上運行。 這是OS X 10.8.2的內置Apache 2。 – 2013-02-25 17:36:18

0

robertklep的指針:

須藤/ usr/sbin目錄/的httpd -k開始-e調試-E的/ dev /標準輸出

解決相關問題的我。我想,同樣的症狀,不同的原因。 我使用SSL &設置了一個自簽名證書的測試虛擬主機。

我已經用密碼生成了一個私鑰。 所以httpd正在等待密碼(我沒有提供)。 當我開始使用調試選項時,我得到了提示,提供了密碼& httpd啓動。

因此,將重做沒有密碼的私鑰...

1

在我來說,我得到:

(2)沒有這樣的文件或目錄:的httpd:無法打開錯誤日誌文件 /private/var/log/apache2/error_log。無法打開日誌

創建目錄apache2使其運行。

+0

這對我有效,/mnt/apache2所以我在mnt中創建了一個「apache2」目錄,它工作正常! – 2013-11-20 10:23:32

0

不知道這是否相關,但由於我面臨同樣的問題,我找到了一個替代解決方案,讓我把我的2c無論如何。

看到這篇文章,當我有同樣的問題。原來,httpd.conf文件是罪魁禍首。我改變了它來安裝一些東西。儘管我刪除了安裝程序文件,但我忘了更改httpd.conf。我希望你不會面臨同樣的問題。

關於80端口的問題,我已經看過Skype和443端口(天知道什麼),並且在關閉它之後我有更好的結果。確保你沒有在80端口上運行Skype。

相關問題