Apache 2 無法綁定,位址已在使用中

Apache 2 無法綁定,位址已在使用中

我在 Ubuntu 12.10 上安裝了 Apache 2。當我嘗試使用 啟動服務時sudo /etc/init.d/apache2 start,我收到以下訊息。

*Starting web server apache2
(98)Address already in use: make_sock: could not bind to address 127.0.0.1:80
no listening sockets available, shutting down
Unable to open logs
Action 'start' failed.
The Apache error log may have more information.                                 [fail]

答案1

您很可能已經在該連接埠上運行(或“綁定”)某些東西。嘗試使用此命令查看有問題的進程:

sudo lsof -i :80

這列出了偵聽連接埠 80 的進程killkill -9

請記住,假設您較早啟動,Apache 實例可能已經「過時」或成為殭屍。在後一種情況下,在某些情況下甚至可能需要重新啟動。

否則請使用 dedunumax 的答案。

答案2

嘗試sudo service apache2 start

然後輸入

sudo service apache2 status

第二個命令將顯示它是否正在運行。

答案3

我透過以下配置收到此錯誤訊息:

# cat /etc/hosts
127.0.0.1   localhost
127.0.0.1   foo
...

# cat /etc/apache2/sites-enabled/foo
<VirtualHost foo:80>
...

# cat /etc/apache2/ports.conf 
...
NameVirtualHost *:80
Listen localhost:80
...

更改ports.conf為以下內容解決了問題:

NameVirtualHost *:80
Listen 127.0.0.1:80

答案4

其他一些軟體(例如 Nginx)可能正在運行並使用連接埠 80。

Apache2 在我的 VPS 上崩潰並出現相同的訊息錯誤,我發現伺服器上存在 Nginx,並且幾天後它啟動了一些東西(一個 cron 作業?)。這會引發衝突,因為它使用連接埠 :80 並且以某種方式優先於 Apache2。

若要檢查是否有任何內容已在使用連接埠 :80,請輸入:

netstat -tulpn

我透過卸載 Nginx(使用「remove --purge」)、終止 nginx 進程並重新啟動 Apache2 解決了這個問題。

相關內容