Apachをサービスとしてインストール&起動する.batを作りWin起動の度に実行する方法

Apachをサービスとしてインストール&起動するbatを作りWin起動の度に実行する方法 ソフトウェア

なぜかデカいWindowsのアプデのたびに自宅鯖として常時起動しているハズのApach24が、サービスの登録から外れてるので、OSの起動後自動でインストール&起動するようにbatファイルを作りました。

サービスのインストールには管理者権限が必要なため、batファイルは2つ用意しました。

  1. apachをインストール&起動するbatファイル
  2. 上記batファイルを管理者権限で実行するbatファイル

そして2つ目のbatファイルを起動時に実行すれば求めていた機能を実現できました。

わたしがやりたいこと

何故かWindowsの大型アップデートとともに、一度はhttpd -k installして、「自動」でスタートアップするハズのApacheがサービス一覧からいなくなるのをどうにかするための方策を考えました。

ここで、サービス登録後、少なくとも再起動しないうちはApacheが問題なく動いていることがわかりました。

したがって、解決策は、WindowsにログインするたびにApacheをサービスとして登録&起動すればよいということになります。

起動のたびに以下のコマンドを実行すればOK。

  • cd C:\apache\bin
  • httpd -k install
  • httpd -k start

ただし、サービスとして登録するには管理者権限でコマンドを実行する必要があるため、batファイルを2つ使って実現します。

コピペ可。2つのbatファイルと解説

1つ目のbat Apacheをサービスとして登録&起動

@echo off

rem  Apacheをインストールするディレクトリに移動する
cd C:\apache\bin

rem Apacheをインストールする
httpd -k install
httpd -k install


rem Apacheを起動する
httpd -k start

何故かhttpd -k installを実行する際、一度目はエラーが出て2度目は問題なくサービスへ登録できるので、2回書いてます。

上記コードを拡張子をbatにして保存し、管理者権限で実行するとApacheをサービスに登録して起動できます。

既にサービスとして登録されていてhttpd -k installした場合、
[Sun May 28 16:35:10.714379 2023] [mpm_winnt:error] [pid 17476:tid 364] AH00433: Apache2.4: Service is already installed.
と言われるだけなので特に支障はありません。

また、既にApacheが起動しているのにhttpd -k startすると、
(OS 10048)通常、各ソケット アドレスに対してプロトコル、ネットワーク アドレス、またはポートのどれか 1 つのみを使用できま す。 : AH00072: make_sock: could not bind to address [::]:80
(OS 10048)通常、各ソケット アドレスに対してプロトコル、ネットワーク アドレス、またはポートのどれか 1 つのみを使用できま す。 : AH00072: make_sock: could not bind to address 0.0.0.0:80
AH00451: no listening sockets available, shutting down
AH00015: Unable to open logs

と言われるだけで同じく問題ありません。

2つ目のbat 管理者権限でbatファイルを起動するbat

管理者権限でbatを起動するだけなら1つのファイルにまとめられそうですが、他にも複数管理者権限で起動したいものがあるので……

このコードを拡張子batで保存します。

powershell start-process C:\中略\apach_install_and_start.bat -Verb runas

黄色い部分1つ目のbatファイルのパスに置き換えてください。

2つ目のbatファイルをWindowsへログイン時に実行するには

まず2つ目のbatファイルのショートカットを作成します。

そして、できたショートカットを
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startupに配置します。

これだけで終了!!

Windowsにログインするたびに、「管理者権限で「Apacheをサービス登録&起動するbat」を起動するbat」を実行できます。

まとめ Apacheをサービスとして登録&起動するbatをログインのたびに実行するには

  1. 以下のコマンドを実行するbatファイルを作る
    • cd C:\apache\bin
    • httpd -k install
    • httpd -k start
  2. 上記batファイルを管理者権限で実行するbatファイルを作る
  3. 2番目のbatファイルがログイン時に実行されるようにする
  4. 完成!!

こうしてOSアプデのたびにサービス一覧にApache24があるかを目視確認する生活から解放されたのでした。

めでたしめでたし

関連して、読み込み高速化設定についてもごらん下さい

タイトルとURLをコピーしました