windowsのnginx、phpをサービス化する

Windowsに移したのはいいのですが、nginx、phpが自動起動してくれません。
というわけで、サービス化をします。

WinSWを使う

Windowsのアプリをサービス化することができるソフトがありました。
(Googleさまありがとうございます)

A wrapper executable that can be used to host any executable as an Windows service, in a liberal license - kohsuke/winsw

使い方

  • 上記のgithubからWinSW.exeをダウンロード
  • サービス化したいサービスを実行するxmlを作る(例えば、nginx-service.xml、サンプルのパスは適時読替必要)
<service>
  <id>nginx</id>
  <name>nginx</name>
  <description>nginx</description>
  <logpath>C:\Web\nginx\logs</logpath>
  <logmode>roll</logmode>
  <depend></depend>
  <executable>C:\Web\nginx\nginx.exe</executable>
  <startargument></startargument>
  <stopexecutable>C:\Web\nginx\nginx.exe</stopexecutable>
  <stopargument>-s</stopargument>
  <stopargument>stop</stopargument>
</service>
  • WinSW.exeをxmlと同じ名前にする(今回は、nginx-service.exe)
  • 下記コマンドでサービスインストール
nginx-service.exe install
  • phi-cgiの場合はこんな感じ
<service>
  <id>PHPCGI</id>
  <name>PHPCGI</name>
  <description>PHP</description>
  <executable>C:\Web\php\php-cgi.exe</executable>
  <logpath>C:\Web\php\logs</logpath>
  <logmode>roll</logmode>
  <depend></depend>
  <startargument>-b127.0.0.1:9000</startargument>
  <startargument>-cC:\Web\php\php.ini</startargument>
  <stopexecutable>taskkill.exe</stopexecutable>
  <stopargument>/f</stopargument>
    <stopargument>/im</stopargument>
    <stopargument>php-cgi.exe</stopargument>
  <!--<stopargument>taskkill /f /IM php-cgi.exe</stopargument>  -->
</service>