treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

ApacheがWindows Serverで起動しない=ポート80は

Windows ServerでApacheをインストールして使う必要があったのですが、初期セットアップが上手くいかなかったので、実際に実施した妥協案をご報告。

Apacheが必要になった

とあるWindows Serverのセットアップを実行するにあたって、UPSのソフトウェアがApacheを要求してきました。
フル機能を使うにはApacheインストールしてくださいね、ときたもんだ。
やむなくApacheをインストールしたのですが、Apacheが起動してこない…。

なぜだろうと確認してみることにしました。

イベントログでエラー

サービスで確認すると

f:id:treedown:20191113164104p:plain
自動起動するはずのサービスが起動していないことが分かります。
手動で起動しようとしたら、エラーで起動できないからイベントログでエラーを確認してね、ってメッセージが表示されましたので、早速イベントビューアを起動。

f:id:treedown:20191113164119p:plain
エラーが盛りだくさん
--------------------------------------------------------------
The Apache service named reported the following error:
>>> (OS 10013)????????????????????????????????? : AH00072: make_sock: could not bind to address [::]:80
--------------------------------------------------------------
The Apache service named reported the following error:
>>> (OS 10013)????????????????????????????????? : AH00072: make_sock: could not bind to address 0.0.0.0:80
--------------------------------------------------------------
The Apache service named reported the following error:
>>> AH00451: no listening sockets available, shutting down
--------------------------------------------------------------
The Apache service named reported the following error:
>>> AH00015: Unable to open logs
--------------------------------------------------------------

???の部分はどうも文字化けしているらしく、日本語(二バイト文字)が表示できていないらしい、調べたところでは「アクセス許可で禁じられた方法でソケットにアクセスしようとしました。」と記録されていると考えられました。

と、なると、「no listening sockets available」が怪しいってことになりそうです。
そういや前にこんなことあったんじゃないか、と以前の記事を思い出す。

blog.treedown.net

ポート80番のバッティングはありそうです。このときはApache以外にポート80を利用しないようにしていました。

しかし今回はApacheのほうにご遠慮いただくことにしました。

Apacheポート変更

Apacheはhttpd.confファイルで挙動が設定できます。
今回はUPSソフトウェア専用のApacheインストールということもあって、既存のサービスで利用しているポート80はそのままで、Apacheでは80以外のポートを利用することにしました。

まずはconfファイルの場所「C:\Program Files (x86)\Apache2.4.38\conf」からファイルを開きました。※ファイルを開く際、編集の権限は「管理者で開いたメモ帳」などで編集しないと上書き保存できません。

f:id:treedown:20191113164527p:plain
ファイルを開いて、既存の「Listen 80」とある箇所をコメントアウトし、新たに「Listen」行で新たな(使われていない、重複しない)ポート番号を割り当てました。

f:id:treedown:20191113164543p:plain
ポートを変更してからApacheサービスを起動すると、

f:id:treedown:20191113164600p:plain
無事サービスが起動するようになりました。やっぱりポート80番をサービス間で取り合いとなっていたため、ケンカしてApacheが負けていたようです。

ここまできたら、アクセスするURLの指定を(例えばローカルホストなら)
http://127.0.0.1/Dir/
と指定する場合、本来はポート番号付きで
http://127.0.0.1:80/Dir/
という指定をしているのと同意義となります。
そこで
http://127.0.0.1:%指定したポート番号%/Dir/
でURL指定をするようにすれば、ちゃんと80番以外で追加したApacheのコンテンツを参照することができるようになります。

UPS専用の管理アクセスなので、Apacheのポートを特別なものに変更して、上記のようにポート指定でUPSの管理サイトアクセスを実行するようにしました。

Windows Serverって、標準でWebサービス導入済(ポート80番使用済み)ってことなんですね。たぶん。