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 でリッスンしているプロセスを一覧表示します。原因が見つかったら、どのプロセスを実行するkillかがわかりますkill -9(スーパーユーザーの場合も同様)。

Apache インスタンスは、以前に起動していたと仮定すると、「古くなった」かゾンビになっている可能性があることに注意してください。後者の場合、場合によっては再起動が必要になることもあります。

それ以外の場合は、dedunumax からの回答に従ってください。

答え2

試すsudo service apache2 start

次に入力

sudo service apache2 status

2 番目のコマンドは、実行中かどうかを表示します。

答え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 を再起動することでこの問題を解決しました。

関連情報