2011年6月14日火曜日

WindowsのサービスからApacheが起動しない

WindowsのサービスからApacheを起動しようとすると、エラーが出て起動しない。
焦ってはいけません。たいていの原因はこんなとこです。
  1. Apacheの設定(httpd.conf)が間違っている
  2. 別のアプリケーションが使っているポートと重複している

1. まず最初に、httpd.confの設定が間違っていないかを確認します。

Apacheをインストールすると、c:¥Program Files¥Apache2.2¥bin¥httpd.exeといったディレクトリが出来ます。binの下までコマンドプロンプトで移動して、下記のコマンドをたたく。

> cd c:¥Program Files¥Apache2.2¥bin
> httpd.exe -t

例えば、Syntax error on line ... といったエラーが出たら、エラーの内容に従って修正します。
Syntax がOKと出たら、httpd.confの設定は問題ないです。


2. それでも起動しなければ、次に疑うのは、ポート番号の重複です。

例えば、Apacheはデフォルトで80番ポートを使うので、先の80番ポートを使っているアプリケーションがあれば、Apacheは起動しません。
(Apacheが使うポートは、httpd.confのListenのとこで確認できる)

> netstat コマンドを使って、Apacheの使うポートで動いているアプリケーションがあれば、そのアプリケーションのプロセスを切るか、Apacheの使うポートを変更することでApacheは起動します。



ほかに僕が経験したのに下のようなこともあったけど、たいていの原因は1と2のようなことです。
・Apacheを起動するときの所有者が原因
        (ログすら出てこなかったことで気付く)
・Apacheをサービスに登録するときの設定ミス。
        (コマンドからは起動できるが、サービスからは起動できなかったことで気付く)

3 件のコメント:

  1. ありがとうございます。confの修正箇所がわかりました。

    返信削除
  2. 平岡 よしや2016年8月9日 12:05

    突然のコメントすみません。

    ひとつ覚えていらっしゃったら・・
    「Apacheをサービスに登録するときの、設定ミス」とは具体的に何をなさったのでしょうか?
    (私の環境もコマンドからは起動しますが、サービスでは起動しません (Windows2008 + Apache1.3)

    返信削除
  3. コマンドでは起動するがサービスでは起動しない、というのはアクセス権問題かも。
    Apacheとその必要とするファイル(htdocsのルートなど)に、SYSTEMのフルコントロールがついてるか再確認。

    返信削除