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