NginxをWindowsサービスに登録する

広告

Nginx は Windows サービスに対応していないため、標準の方法ではサービスに登録することはできませんが、 WinSW を使用することで可能となります。ここでは WinSW を使って Nginx を Window サービスに登録する方法について解説します。

WinSWをダウンロードする

WinSW(Windows Service Wrapper)は Nginx のように Windows サービスに対応していないアプリを Windows サービスに登録するときに使用します。最初に NSSM をインストールします。次の URL へアクセスしてください。

https://github.com/winsw/winsw

WinSWをダウンロードする(1)

「Download」のところにある「GitHub Releases」をクリックしてください。

WinSWをダウンロードする(2)

次のような画面が表示されます。

WinSWをダウンロードする(3)

「WinSW v2.12.0」のブロックにある「WinSW-x64.exe」をクリックしてください。

WinSWをダウンロードする(4)

ダウンロードした「WinSW-x64.exe」ファイルを、 Nginx をインストールしたディレクトリに設置してください。

Nginxを起動する(5)

実行するファイルが Nginx 用と識別しやすいように WinSW-x64.exe ファイルの名前を変更します。今回は WinSW-x64.exe から WinSW-x64-nginx.exe に変更しました。(名前はご自分で分かればどのような名前にされても構いません)。

Nginxを起動する(6)

WinSWの設定ファイルを作成する

テキストエディタを使い、下記の内容で設定ファイルを XML ファイルとして作成します。各項目の役割は以下の通りです。

<service>
  <id>nginx0001</id>
  <name>Nginx-1.28.2</name>
  <description>Nginx-1.28.2</description>

  <executable>C:\pg\nginx-1.28.2\nginx.exe</executable>

  <stopexecutable>C:\pg\nginx-1.28.2\nginx.exe</stopexecutable>
  <stoparguments>-s stop</stoparguments>

  <log mode="roll-by-size">
    <sizeThreshold>10240</sizeThreshold>
    <keepFiles>4</keepFiles>
  </log>
</service>

id は Windows が内部でサービスを識別するための一意の ID です。他のサービスと重複しない半角英数字で指定します。 name はサービス一覧のところに表示されるサービスの名前です。他のサービスと同じにならないような任意の名前を指定します。 description はサービス一覧のところに表示されるサービスの説明です。

executablestartarguments は起動するプログラム(nginx.exe)をフルパスで指定します。 Nginx をインストールしたディレクトリに合わせて設定してください。起動時に引数を使用しないので startarguments は省略しています。

stopexecutablestoparguments はサービス停止時に実行するコマンドと引数を指定します。 Nginx は強制停止する場合に nginx -s stop と実行するのでこのように設定しています。

log の個所はログをどのように保存するかを設定しています。今回はログファイルが指定されたサイズを超えると自動的にローテーションするように設定しました。詳しくは「Logging and error reporting」を参照されてください。

XML ファイルの名前は WinSW の実行ファイル名と同じにしてください。リネームしていなければ WinSW-x64.xml となります。今回はリネームしているので WinSW-x64-nginx.xml となります。(文字コードは UTF-8 を使用されてください)。

WinSWの設定ファイルを作成する(1)

これで準備は完了です。

WinSWを使ってNginxをサービスに登録する

それでは WinSW を使って Nginx を Windows のサービスに登録します。コマンドプロンプトを管理者権限で起動し、 Nginx をインストールしたディレクトリに移動したあと次のように実行してください。

WinSW-x64-nginx install

※ ご自分が WinSW-x64.exe をリネームした名前で実行してください。

※ コマンドプロンプトを管理者権限で起動する方法は「管理者権限でコマンドプロンプトを起動する」を参照されてください。

次のように表示されれば Nginx の Windows サービスへの登録は完了です。

WinSWを使ってNginxをサービスに登録する(1)

それでは確認を行ってみます。タスクバー上の「スタート」を右クリックしてください。表示されたメニューの中から「コンピューターの管理」をクリックしてください。

WinSWを使ってNginxをサービスに登録する(2)

「コンピューターの管理」の画面が表示されたら「サービスとアプリケーション」の中にある「サービス」をクリックしてください。

WinSWを使ってNginxをサービスに登録する(3)

画面右側に表示されたサービス一覧の中に、今回作成した設定ファイルで指定したサービス名で Nginx が追加されています。

WinSWを使ってNginxをサービスに登録する(4)

サービスとしてNginxを開始する

それではサービス一覧の中にある Nginx のサービスをダブルクリックしてください。サービスの設定画面が表示されます。

サービスとしてNginxを開始する(1)

「サービスの状態」のところにある「開始」をクリックしてください。

サービスとしてNginxを開始する(2)

Nginx がサービスとして開始されます。

サービスとしてNginxを開始する(3)

それでは確認してみます。ブラウザを起動し次の URL へアクセスしてください。

http://localhost/

ブラウザに次のように表示されれば Nginx が正常に起動しています。

サービスとしてNginxを開始する(4)

サービスの設定画面では、開始したサービスを停止したり、 Windows 起動時に自動的にサービスが開始されるように設定することができます。

サービスとしてNginxを開始する(5)

サービスを削除する

サービスとして登録した Nginx を削除する方法です。コマンドプロンプトを管理者権限で起動し、 Nginx をインストールしたディレクトリに移動したあと次のように実行してください。

WinSW-x64-nginx uninstall

※ ご自分が WinSW-x64.exe をリネームした名前で実行してください。

次のように表示されれば登録したサービスの削除が完了です。

サービスを削除する(1)

-- --

WinSW を使って Nginx を Window サービスに登録する方法について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。