クリーンインストールした Windows 2012R2 に、サードパーティーの WEB サーバをインストールしようとしたとき、インストーラが "Port 80 がすでに使われているのでインストールできない" とエラーを出してきた。
おいおいまだ何もいれてねえしIISも有効化してねえし、どうしたことだ?と思って Port 80 を使っているプロセスを調べてみた。
C:\Users\Administrator>netstat -oan | findstr ":80 PID"
プロトコル ローカル アドレス 外部アドレス 状態 PID
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 4
TCP [::]:80 [::]:0 LISTENING 4
まじか… PID 4 といえば System の PID じゃねえか。何かのサービスが使ってるのだろう。
検索してみたらいっぱい出てきた。こちらのサイトがとても分かりやすかった。
Opening Up Port 80 For Apache to Use On Windows
以下のサービスが起動してたら止めてみな、とのこと。
- SQL Server Reporting Services (ReportServer)
- Web Deployment Agent Service (MsDepSvc)
- BranchCache (PeerDistSvc)
- Sync Share Service (SyncShareSvc)
- World Wide Web Publishing Service (W3SVC)
- Internet Information Server (WAS, IISADMIN)
ぼくの環境では BranchCache が起動してたので止めてみた。
C:\Users\Administrator>net stop PeerDistSvc
BranchCache サービスを停止中です.
BranchCache サービスは正常に停止されました。
さあどうだ。
C:\Users\Administrator>netstat -oan | findstr ":80 PID"
プロトコル ローカル アドレス 外部アドレス 状態 PID
わあい! Port 80 が解放された!
先ほどのサイトに、この Port 80 を System が使ってしまうドライバである HTTP.SYS の止め方も載ってる。とても参考になる。