はじめに

本カテゴリーでは、Windowsにnginxをサービスを起動するまでの手順について説明します。 2017年4月29日時点、http://nginx.org/en/docs/windows.htmlに WindowsとLinux、Unixとの違いやWindowsバージョンについて以下の内容を明記しています。

  • Cygwinを用いずWin32APIを利用している点
  • select()接続処理メソッドのみ利用しているため、高いパフォーマンスとスケーラビティが期待できない点
  • 2017年4月29日時点のnginx1.12はWindowsバージョンにおけるβ版として認識して欲しい主旨
  • XSLTフィルタ、画像フィルタ、GeoIPモジュール、埋め込みPerlを除いてUnix版のnginxの基本機能を提供している点

2017年4月時点の筆者の見解としては、Windowsサーバを導入した時点で、 webサーバを立てる場合には、MicrosoftIISを利用した方が良いと思います。 本書では、WindowsPC以外にLinux、Unixサーバを保持していない方がnginxを学習することを目的として WindowsPC(又はサーバに)にnginxをインストールすることを想定しています。

本頁に利用した機器の設定です。

呼称 OS CPU バージョン IP その他
作業用PC兼Webサーバ Windows10 Intel Corei7 2コア Home Edition 192.168.109.2 ルーターに接続

インストール手順

Windows版のインストーラはシンプルです。本家nginxサイトからstableバージョン(安定版)のzipファイルをダウンロードし、解凍するだけです。 サービスとして常駐させる手順だけWindowsのサービスの知識が若干必要になります。

  1. 本体のダウンロード nginx:downloadから「nginx/Windows-1.12.0」(2017年4月末時点)のリンクを押下します。
  2. ダウンロードファイルの管理 「C:\Users\貴方のアカウント\Downloads」にダウンロードしたファイルを
    「C:¥downloads¥web¥nginx¥windows」に移動します。
  3. 展開先ディレクトリの作成 「C:¥developer¥web¥nginx」ディレクトリを作成します。
    ディレクトリ管理のポリシーを記載しています。
    サーバとして利用する場合には「c:¥nginx」でも問題ありません。
  4. 解凍 「C:¥downloads¥web¥nginx¥windows¥nginx-1.12.0 .zip」を
    「C:¥developer¥web¥nginx」ディレクトリに展開します。
  5. 展開後のnginx.exeの位置 「C:¥developer¥web¥nginx¥nginx-1.12.0¥nginx.exe」になります。

nginxの起動

  1. [Windows]メニュー右クリック-[コマンドプロンプト]を実行し、コマンドプロンプトを起動します。
  2. 「cd C:¥developer¥web¥nginx¥nginx-1.12.0¥」コマンドを実行します。
  3. 「nginx start」コマンドを実行します。
  4. Windows セキュリティの重要な警告ウィンドウが表示されます。
    個人学習用や開発のためのインストールのため「プライベートネットワーク・・・」のチェックボックスを選択します。
    「アクセス許可」ボタンを押下して下さい。
  5. ファイヤーウォールの確認画面
  6. コマンドプロンプトから「tasklist」コマンドを実行します。
    「nginx.exe」のプロセスが2つ起動されている事を確認します。
  7. webブラウザを起動し、URLに「http://localhost」を指定します。
    以下のデフォルト画面が表示されることを確認します。
  8. nginxのデフォルト画面(Windows)

nginxの停止

nginxを停止するには、カレントディレクトリを「C:¥developer¥web¥nginx¥nginx-1.12.0¥」して、
「nginx -s stop」を実行します。
nginxのプロセスは、バックグラウンドサービスのためコマンドプロンプトを終了してもnginxプロセスはOSに常駐します。

nginxサービスの登録

2017年4月末時点において、初めにWindowsをサービス化するには、

  1. Visual Studio 2012を利用してサービスexeの作成。MS Windows サービスを作成する参照
  2. nssm」を利用する

2.nssmを利用した方法について説明します。

  1. nssmダウンロードサイト頁のLatest release [nssm 2.24 ]リンクを押下します。
  2. 「nssm-2.24.zip」ファイルを「C:¥downloads¥tools」に保管します。
  3. 「nssm-2.24.zip」ファイルを「C:¥developer¥tools¥nssm」に解凍します。
  4. コマンドプロンプト(管理者)を起動し、「C:¥developer¥tools¥nssm¥nssm-2.24」に移動します。
  5. OSが32bitの場合には「win32」を64bitの場合には「win64」ディレクトリに移動します。
  6. コマンドプロンプトから「nssm install nginxを実行します。」
  7. 以下のようにnginxのインストール先を指定します。
  8. nginxのサービス化
  9. 「Install Service」ボタンを押下するとサービスが登録されます。
  10. nginxのサービス化2
  11. コマンドプロンプトから「services.msc」を実行し、サービスウィンドウを表示します。
  12. サービスウィンドウからnginxを選択し、「開始」ボタンを押下します。
  13. nginxのサービス化3
  14. webブラウザから「http://localhost」にアクセスし、nginxのindex.htmlが表示されることを確認します。
  15. PC(又はサーバ)を再起動し、nginxサービス(実際にはnssmプロセス経由のnginx)が起動しnginxプロセスが実行されていることを確認します。
  16. ※.サービスを削除したい場合には、「nssm remove nginx」を実行して下さい。

Windows10で動作確認しましたが、問題なくサービス化できました。
但し「nssm」サイトの継続性が怪しくnginxの動作保証をしていないのでこの方法は、nginx.incが
windows版の開発とサービスインストール用のインストーラができる暫定的な対象方法であると認識して下さい。

Windows版nginxの注意事項

nginx for windows頁の「Known issues(注意事項)」に以下の3点が明記されています。

  • 複数のworkerプロセスを起動することができますが、実際に処理を実行しているのは1つです。
  • workerプロセスは1024以上の同時接続を処理できません。
  • UDPプロキシ機能はサポートされていません。

このように2017年時点では、Windowsではnginxの良さである10000件以上の同時接続数の処理や
workerプロセスがコアに対応して(1コアに1worker)処理する機能が実行できないため、 nginxは本家サイトにも記載されているようにβ版で簡易学習用として捉えた方が良いでしょう。