Windows NT/2000 では Apache をサービスとして動かすことができます。 (Apache 1.3.13 で、非常に実験的にWindows 95/98 においても同様の動作をサポートをするようになりました)。
サービスとして Apache をインストールするためには、 うまくいけばコマンドラインで一度実行すればいいです。 Apache をサービスとしてインストールしたり、動かそうとする前に Microsoft Windows で Apache を動かすを参照してください。 コマンドラインで Apache を起動することによって、httpd.conf ファイルへの変更はいつも反映されます。 これでうまくいけば、サービスは成功するでしょう。
注意: バージョン 1.3.13 より前ではこの設定はテストされていません。 そして調整不足が原因で、コマンドラインではしばしばうまくいきますが、 サービスはまだ失敗します。Apache の 1.3.13 より前のバージョンを動かすときに 問題があるならば、後述の説明を参照してください。 バージョン 1.3.13 以降でこの問題があるなら、まず最初に Apache を アンインストール (-u) してから再インストール (-i) を試してみてください
Apache をサービスとして開始するためには、最初にサービスとしてインストールする必要があります。 それぞれ別の名前と設定にすることで Apache サービスを複数インストールすることができます。 デフォルトの "Apache" という名前で Apache サービスをインストールするには、 スタートメニューから "Install Apache as Service" オプションを実行してください。 これを一度行なえば、(コントロールパネルの) サービスウィンドウを開いて、 Apache を選択して、次に Start をクリックすることで、"Apache" サービスを開始できます。 これで Apache はバックグラウンドで動きます。 その後は Stop をクリックすることで、Apache を終了できます。 サービスウィンドウを使う代わりに、コマンドラインから、
NET START APACHE NET STOP APACHEとすることで、"Apache" サービスを開始、終了できます。
Apache サービスのインストールとコントロールに関するさらなる情報は、 Apache サービスのコントロールを参照してください。
Apache は、他の多くの Windows NT/2000 のサービスと異なり、 ほとんどのエラーは独自に Apache のサーバルートの logs フォルダにある error.log ファイルに記録します。ほとんどの Apache のエラーに関する詳細は Windows NT のイベントログでは分からないでしょう。 Apache を起動しようとしたときに発生したエラーだけがイベントログに記録されます。
Apache をサービスとして開始した後 (または、それを始めることに問題があれば)、 コマンドラインから同じ手順でテストできます。 デフォルトのサービス設定を確認するためには、このコマンド:
apache -n "service name"
を使うことを覚えておいてください。
注意: サービス名を指定する -n オプションは Apache 1.3.7 以降で利用可能です。 以前のバージョンの Apache では、デフォルトのサービス名 'Apache' だけがサポートされています。
以下のようにすることで、Apache を Windows NT サービスとしてインストールできます:
apache -i -n "service name"
特定の設定を使ってサービスをインストールするには、 インストールの際に設定ファイルを指定してください:
apache -i -n "service name" -f "\my server\conf\my.conf"
サーバルートディレクトリをデフォルトから変更するための -d、 設定ファイルを変更するための -D, -C や -c など、その他の属性は省略できます。 これらがレジストリに書き込まれていて変更が困難なときは、 このコマンドを使ってオプションをクリアし、新しいオプションに置き換えます。
apache -k config -n "service name" -f "\my server\conf\my.conf"
Apache サービスを削除するには、以下のようにします:
apache -u -n "service name"
サービス名が指定されない場合のデフォルトの「サービス名」は "Apache" となります。
サービスがインストールされると、 サービスの設定ファイルを示すのに他のオプションと同時に -n オプションを使用することができます。例:
サービスの設定ファイルをテストして、サービスのデフォルトのオプションを確認するには 次のようにします:
apache -n "service name" -t
サービスの設定ファイルとデフォルトのオプションを使用して、 コンソールから Apache を起動するには次のようにします:
apache -n "service name"
Apache リリース 1.3.15 で -k install オプションが -i オプションの、 また、-k uninstall オプションが -u オプションの別名として追加されました。 元の -i そして -u オプションは Apache 2.0 では使用しないようにしてください。 これらの別名は、両方のバージョンを運用する管理者が (訳注: Apache 2.0 に) 移行しやすくするために追加されました。
リリース 1.3.13 以前の Apache では、インストールされたサービスが うまく開始することが前提条件となる依存関係は構成されません。 Apache の以前のバージョンを使用してサービスをインストールした後に、 以下の手順を踏まなければなりません :
Run regedt32 Select Window - "HKEY_LOCAL_MACHINE on Local Machine" from the menu Double-click to open the SYSTEM, then the CurrentControlSet keys Scroll down and click on the Apache servicename Select Edit - Add Value... from the menu Fill in the Add Value dialog with Value Name: DependOnGroup Data Type: REG_MULTI_SZ and click OK Leave the Multi-String Editor dialog empty and click OK Select Edit - Add Value... from the menu Fill in the Add Value dialog with Value Name: DependOnService Data Type: REG_MULTI_SZ and click OK Type the following list (one per line) in the Multi-String Editor dialog Tcpip Afd and click OK
また、サードパーティーのモジュール、ISAPI、その他 ActiveState Perlなどによる、 COM や DCOM の構成要素を使用しているならば、DependOnService リストに Rpcss のエントリーを追加する必要があるかもしれません。 それが不要な場合に、TCP ポート 135 を露出するのを避けるために、 Apache はインストールのときにそのエントリーを作成しません。 上の指示に従って、DependOnService 値を確認、または作成してください。 既に存在しているならばその値をダブルクリックして、Rpcss のエントリーを リストに追加してください。
Apache が最初にサービス ( 例えば、-i オプション ) としてインストールされるとき、 "System" というユーザ (LocalSystem アカウント ) で動作するでしょう。 もし web サーバのすべてのリソースがローカルシステム上にあるなら ほとんど問題ありませんが、(LocalSystem アカウント ) はローカルマシンに 影響を与える幅広いセキュリティ特権を持っています。
LocalSystem は局所的に非常に特権アカウントなので、 どんなシェアウェアアプリケーションもそこで動作させるべきでは ありません。しかしながら、それはネットワーク特権を持たなくて、 NT の機密保持機能、ファイルシステム、パイプ、DCOM 、セキュア RPC を含めて そのままにしておくことはできません
決してシステムアカウントにネットワーク特権を与えてはいけません ! 代わりに新しいユーザアカウントを作成して、そのユーザに適切な権限を与えて、 'Log On As' というオプションを使ってください。スタートメニュー -> 設定 -> コントロールパネル -> サービス -> Apache Service と選択して、 「スタートアップ」ボタンをクリックして、この設定にアクセスしてください。
サービスは SCM 関連のセキュリティを LocalSystem アカウントに 引き継いで動作します。サービスはどのユーザアカウントとも 関連づけられなくて、またベリファイに使用されるべき証明 ( ドメイン名、ユーザ名、パスワード ) を持ちません。
SYSTEM アカウントはネットワークに特権を持たないので、共有されたページや 共有されたインストールはサービスからは見えません。 あなたがどんなネットワークリソースも使用するつもりであるならば、 以下のステップは役に立つかもしれません
そのアカウントでユーザとしてログインすることを許可したら、自分自身で ログインしてそのアカウントがスクリプトの実行、ウェブページの読み込みをする 権限を持っていること、コンソールから Apache を起動できること をテストすることができます。これがうまくいき、上記のステップに従って手順を踏めば、 Apache は問題なくサービスとして実行するはずです。
注意: エラーコード 2186 はサーバが必要なネットワークリソースに アクセスすることができないので 'Log On As' の設定を見直す必要がある、 という指示です。
サービスとして Apache を開始する場合、Windows service manager からエラーメッセージを 見ることになるかもしれません。例えば Control Panel の Services アプレットを使用して Apache を開始させようとする時に、以下のメッセージを見るかもしれません。
Could not start the apache service on \\COMPUTER Error 1067; The process terminated unexpectedly.
Apache の開始において何らかの問題がある場合、このエラーに遭います。 問題の原因を確認するためには、コマンド プロンプトで Apache をテストするの指示に従ってください。
また、Apache 1.3.13 では Windows NT/2000 でサービスとして動かすとき、 開始時のエラーを Application Event Log に記録します。Event Viewer を起動し、 Log ... Application と選択してイベントを確認することができます。
問題があった場合は、エラーが発生したことを警告のためのエラーメッセージが ポップアップされなくても、Event Viewer で Application Event Log を チェックしてください。
Apache は複数インストールして、サービスとして動かすことができます。 インストールされた Apache サービスを開始、再開、終了、停止するには 以下のようにします:
apache -n "service name" -k start apache -n "service name" -k restart apache -n "service name" -k shutdown apache -n "service name" -k stop
-n オプションのない -k コマンドはコンソールウィンドウで起動している Apache に 向けられるので、デフォルトの "Apache" サービスでは -n Apache オプションが 必要です。引用符はサービス名にスペースが含まれる場合に限り 必要になります。
注意: -k shutdown コマンドの別名の -k stop コマンドは Apache バージョン 1.3.13 で導入されました。 それより前のバージョンの Apache では -k shutdown オプションだけが認識されます。 1.3.3 より前の Apache ではどんな -k オプションも認識されませんでした。
-D, -C, -c オプションを含めた apache -k start コマンドで 起動時のオプションを指定することもできます。 これらはサービスの設定プロセスに影響します。 <IfDefine> ブロックで使うことで条件つきの指定をすることもできます。 サーバルートのパスや -d オプションや -f オプションを使って設定ファイルを上書きすることもできます。 これらのオプションは -k restart コマンドによっても読み込まれますが、 サービスの動作中には反映されず、サービスの起動時にのみ反映されます。
サービスは Windows NT/2000 の Service Control アプレットにも現れます。 NT の場合、Settings -> Control Panel -> Services エントリ、 2000 の場合、Settings -> Control Panel -> Administrative Tools -> Services エントリで参照できます。 そこから開始や終了させる Apache サービスを選択できます。 -D, -C, -c のような追加のオプションや、開始パラメータのデフォルトの -d や -f オプションの上書きは開始ボタンをクリックする前にしてください。 これらのオプションは apache -k start コマンドと全く同じように処理されます。
さらに、Apache サービスの開始、終了にネイティブの Windows NT/2000 の NET コマンドを使うこともできます:
NET START "service name" NET STOP "service name"
繰り返しますが、サービス名がスペースを含む場合のみ、引用符が 必要になります。-D, -c, -C などの追加オプションを NET START コマンドで指定する方法はありません。オプションが必要なときは、 他の 2 種類のメソッドのどちらかを使用してください。
注意: Windows 95 と 98 でのサービスオプションは Apache 1.3.13 以降でのみ 有効です。以前のバージョンの Apache では Windows 95/98 では コンソール窓でのみサポートされています。
Windows NT/2000 でのサービスと同じような Windows 95/98 上での Apache の動作をある程度サポートしています。それは非常に実験的なもので、 もし (すべて順調に) 動いたとしても Apache Software Foundation は、 信頼性や将来のサポートは保証しません。以降については自分自身のリスクで進んでください!
Apache が Command Prompt で 正常に動作することを確認したら、Windows NT/2000 の場合と同じコマンドで インストール、制御、アンインストールすることができます。
ただし、注意すべき重要な違いがあります:
Apache は、起動が成功すると、バックグラウンドで動作します。 デスクトップのショートカットを通して、コマンド
Apache -n "service name" -k start
を実行したら、例えば、サービスがうまく開始されれば、コンソール窓は 表示されますがすぐに見えなくなります。 Apache が開始時に、httpd.conf ファイルにおける不正なエントリのような エラーを見つけると、コンソール窓は表示されたままで残ります。 そこには問題の原因の追求に役に立つエラーメッセージが表示されているでしょう。 その際 Apache の logs ディレクトリの error.log ファイルを調べ直すべきです。
Windows 95/98 では NET START や NET STOP コマンドをサポートしていないので、 Command Prompt から Apache の Service Control オプションを 使用しなければなりません。 これらのコマンド毎にショートカットを用意し、スタートメニューやデスクトップからそれをただ選ぶことで必要な動作を 実行するようにするのはよい方法です。
Apache と Windows 95/98 は特定のユーザに対して、Apache サービスをネットワーク特権では提供しません。 実際、Windows 95/98 はどんなセキュリティもローカルマシンに提供していません。 Apache Software Fondation がパブリックな httpd サーバとして Windows 95/98 の使用を決して認めないのは、これが単純な理由です。 これらは、web コンテンツの制作や Apache サーバの学習、 または安全なイントラネット上のサーバ、プライベートネットワークの ユーザを補助するために便宜上存在しているにすぎません。