Apache2をサービスに登録する

やっとサービスとしてApache2を登録できたので、忘れないうちにメモしとく。さあ、久しぶりのQWERTY配列だから気合いれて書くぞ。(普段はごぞんじ、dvorak配列。)

環境

  • Apache2はインストール済み & 設定済み。インストール手順はid:mzp:20060325:1143292784を参照
  • Windows XP Home Edition SP2

ユーザーの登録

サービスは、サービス専用のユーザーで動くので、まずは新しいユーザーを登録する。

$ net user httpd パスワード /add ?
/fullname:httpd /comment:'httpd service account' ?
/homedir:$(cygpath -w /home/httpd) 

$ mkpasswd -l -u httpd >> /etc/passwd

ユーザーを登録しなくても、SYSTEMというユーザーで動かせるらしいんだけど、なぜかうまく動かなかったので、httpdというアカウントを作ることにした。

権限の付加

httpdアカウントに、サービスを実行できる権限を付加してやる。

$ editrights -u httpd -a SeServiceLogonRight

Professional EditionだとGUIを使って設定できるらしい。

サービスのインストール/開始

Cygrunsrvコマンドを使うので、Setup.exeからインストールしてやる。Adminカテゴリに収録されている。

$ cygrunsrv --install apache2 ?
-d "CYGWIN apache2" ?
-p /usr/sbin/httpd2 ?
-a -DFOREGROUND --user httpd

Enter password of user `xxx?httpd':パスワード
Reenter, please:もういっかい

サービスを開始するには、コントロールパネルの「サービス」から開始するか、

$ cygrunsrv -S apache2



うまくいかなかった。

$ cygrunsrv --install apache2 ?
-d "CYGWIN apache2" ?
-p /usr/sbin/httpd2 ?
-a -DFOREGROUND --user 普段使っているユーザー名

で動く。たぶんパーミッション周りの問題。

あ、普段使っているアカウントにもSeSeiviceLogonを付加せんとあかんよ。

その他

サービスの情報確認
$ cygrunsrv -Q apache2
サービスの削除
$ cygrunsrv -R apache2