Port 80 の占有者
ここ二ヶ月ほど、会社から支給されていたノートPCがずっと故障中だったのですが、このたび出張にいくことになってようやく修理された物が手元に戻ってきました。
ちょっと出発までに時間がなかったので環境をいじる余裕がなく、OSもデフォルトであるWindows XPから変えていないのですが、暇つぶしのためにこの上にApacheを入れようとしたのが間違いの始まり。Apacheをポート80で動くように登録しようとすると、以下のエラーメッセージがDOS窓に出力されます。
(OS 10048)通常、各ソケット アドレスに対してプロトコル、ネットワーク アドレス、またはポートのどれか 1 つのみを使用できます。
: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
Note the errors or messages above, and press the <ESC> key to exit. 27...
エラーメッセージから推測するに、他のサービスが使用しているかなにかでポートがブロックされてしまっているようです。
まず実行したのが、Windowsセキュリティセンターでファイアウォールを無効にしてみましたがどうやらこれは原因ではないみたいです。確かにパケットのフィルターはサービスの登録とは関係なさそうです。
次に、コントロールパネルから「プログラムの追加と削除」の「Windowsコンポーネントの追加と削除」でIISがインストールされていないかを確認しましたが、やはり入っていませんでした。
そこで、本当にポート80がブロックされているのかを確認するために、DOS窓からnetstat -aを実行しました。
c:\> netstat -a
Proto Local Address Foreign Address State
TCP SHIRO3:http localhost:0 Listening
(略)
以上の実行結果をみるに、netstat コマンドでなんらかのサービスがポート80 (http)で動いているのはわかりましたが、それがなになのかはわかりません。
そこでGoogleで調べてみると、TCPViewなるツールがあることがわかりました。こちらを使用することで、やっとポート80を占有する犯人がSkypeだとわかりました。
最新バージョンの3.1をインストールしていたのですが、Skypeの接続設定を見てみると、着信の接続にポート80を使用するような設定になっていました。設定を変更することで、無事にApacheを80番で動かすことができるようになりました。
意外な犯人が見つかったところで今回はお終いにします。普通の人はApacheとSkypeを同じマシンで動かさないでしょうし、こういう落とし穴にはまる人は少ないんでしょうね。




コメント