
我在 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 的進程kill
。kill -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 解決了這個問題。