Windows Server に Nginx を導入する

Web Service//
  1. ホーム
  2. Web Service
  3. Windows Server に Nginx を導入する

社内で簡易ナレッジシステムを作ろうと思い、試しにWordpressで作ろうと思いました。
あいにくライセンスがWindows Server 2016、しかもVM Wareで動いてるので、メモリ割り当て等が最低限(最大4GB)という過酷な環境なので、今回は少しでも高速に動くように「Nginx」を利用することにしました。

Nginx の導入

Nginx のセットアップ

  1. 公式サイトより、Nginxをダウンロードします。
  2. 今回の導入対象OSは「Windows Server 2016」ですので、「stable Version」の「nginx/windows-*.**.*」を選択します。
  1. ダウンロードされたZIPファイルの中身を「c:\nginx」に格納します。
  2. 「c:\nginx」にある「nginx.exe」を起動します。
  3. ブラウザを開き、「http://localhost/」を開きます。

上記の画面が表示されれば終了です!
・・・Apacheというか昔はかなり導入に苦労した覚えがありましたし、IISの時は投げ出しましたが、「え?うそ・・・」って位簡単に導入ができてしまいました(笑

環境変数の追加

  1. 「win+R」で「ファイル名を指定して実行」を開きます。
  2. 「sysdm.cpl」と入力し、「OK」をクリックします。
  3. 「システムのプロパティ」ウィンドウが表示されるので、「詳細設定」>「環境変数」を開きます。
  4. 「システム環境変数」の「Path」を選択し、「編集」をクリックします。
  5. 「新規」をクリックし、「c:\nginx」を入力した後「OK」をクリックします。

アップロードサイズの変更

WordPress導入後に、テーマをアップロードしようとしたら、「データサイズが大きいよ」と怒られてしまいました。
その対処です。

  1. 「nginx.conf」を開きます。
  2. 以下の場所に「client_max_body_size」を追加します。
    今回は「20MB」にしてみました。
    server {
        client_max_body_size 20M;
        listen       80;
        server_name  localhost;

Nginx をサービス化して自動起動にする

このままでもいいのですけど、再起動時に手動でNginxを起動するのは面倒という事で、サービス化してみました。
このままではサービス化は出来ないので、「WinSW」と言うツールを使ってサービス化することにしました。

.NET Framework 3.5 を有効にする

Configファイルを作れば本frameworkは不要なのですが、導入することにしました。
(理由は後述)

  1. サーバーマネージャーを起動します。
  2. 「管理」>「役割と追加」を選択します。
  3. 「役割と機能の追加ウィザード」が起動します。
  4. 「開始する前に」の項目は「次へ」をクリックします。
  5. 「インストールの種類」の項目は「次へ」をクリックします。
  6. 「サーバーの選択」の項目は「次へ」をクリックします。
  7. 「サーバーの役割」の項目は「次へ」をクリックします。
  8. 「機能」の項目では「.NET Framework 3.5 Futures」にチェックをして「次へ」をクリックします。
  9. 「確認」の項目で「警告」が表示されますが、そのまま「インストール」をクリックします。
  1. 「結果」に遷移し、インストールが開始されます。「<サーバー名>でインストールが正常に完了しました。」が表示されたのを確認して、「閉じる」をクリックします。

WinSW の導入

  1. ダウンロードページより、winswの最新版「winsw-*.*.*-bin.exe」をダウンロードします。
  2. ダウンロードしたファイルを「nginx.exe」と同じ場所に格納します。
  3. PHPでも同じくサービス化で利用するため、リネームします。
    今回私は「winsw_290_nginx_svc.exe」という名前に変更しました。
  4. xmlファイルを作成します。名前は「3」でリネームした名前と同じ名前にします。
    今回は「winsw_290_nginx_svc.xml」にしました。
<service>
    <id>nginx</id>
    <name>nginx</name>
    <description>nginx</description>
    <logpath>c:\nginx\logs</logpath>
    <logmode>roll</logmode>
    <depend></depend>
    <executable>c:\nginx\nginx.exe</executable>
    <startargument></startargument>
    <stopexecutable>c:\nginx\nginx.exe</stopexecutable>
    <stopargument>-s</stopargument>
    <stopargument>stop</stopargument>
</service>
  1. Configファイルを作成します。名前は「3」でリネームした名前と同じ名前にします。
    今回の場合は「winsw_290_nginx_svc.config」にしました。
    ※ 「.NET framework 3.5」を導入している場合は不要です。
<configuration>
  <startup>
    <supportedRuntime version="v2.0.50727" />
    <supportedRuntime version="v4.0" />
  </startup>
</configuration>
  1. 「4」で作成した「xml」ファイル及び、「5」で作成した「config」ファイルを「nginx.exe」と同じフォルダーに格納します。

今回私がconfigファイルを作成せずに、「.NET Framework 3.5」で動作させた理由は、configファイルがうまく機能しなかったからです。
「Windows Server 2016」では「.NET Framework 4.6」ですので、恐らくバージョンの記述を変える必要ありそうです。

サービス登録

コマンドプロンプトもしくはPowerShellで以下のコマンドを実行します。

cd c:\nginx
winsw_290_nginx_svc install

これでサービスに登録が出来ます。
ちゃんと登録出来たか確認をします。

削除したい場合は上述の「install」を「uninstall」に変更して実行してください。