社内で簡易ナレッジシステムを作ろうと思い、試しにWordpressで作ろうと思いました。
あいにくライセンスがWindows Server 2016、しかもVM Wareで動いてるので、メモリ割り当て等が最低限(最大4GB)という過酷な環境なので、今回は少しでも高速に動くように「Nginx」を利用することにしました。
Nginx の導入
Nginx のセットアップ
- 公式サイトより、Nginxをダウンロードします。
- 今回の導入対象OSは「Windows Server 2016」ですので、「stable Version」の「nginx/windows-*.**.*」を選択します。

- 今回はサーバーツール関連をまとめるため、「c:\dev\server」を作成します。
- ダウンロードされたZIPファイルの中身を「c:\dev\server\nginx」に格納します。
- 「c:\nginx」にある「nginx.exe」を起動します。
- ブラウザを開き、「http://localhost/」を開きます。

上記の画面が表示されれば終了です!
・・・Apacheというか昔はかなり導入に苦労した覚えがありましたし、IISの時は投げ出しましたが、「え?うそ・・・」って位簡単に導入ができてしまいました(笑
環境変数の追加
- 「win+R」で「ファイル名を指定して実行」を開きます。
- 「sysdm.cpl」と入力し、「OK」をクリックします。
- 「システムのプロパティ」ウィンドウが表示されるので、「詳細設定」>「環境変数」を開きます。
- 「システム環境変数」の「Path」を選択し、「編集」をクリックします。
- 「新規」をクリックし、「c:\dev\server\nginx」を入力した後「OK」をクリックします。

アップロードサイズの変更
WordPress導入後に、テーマをアップロードしようとしたら、「データサイズが大きいよ」と怒られてしまいました。
その対処です。
- 「nginx.conf」を開きます。
- 以下の場所に「client_max_body_size」を追加します。
今回は「20MB」にしてみました。
server {
client_max_body_size 20M;
listen 80;
server_name localhost;
公開フォルダーを変更する。
デフォルトではWEBの公開ディレクトリーは「nginx\html」になっています。
これを、「c:\dev\server\htdocs」に変更します。
location / {
root c:/dev/server/htdocs;
その他の設定
実際にこの後、WordpressのインストールやなんちゃってSSL化をします。
テスト環境で運用しているnginx.confの設定は以下となります。
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
sendfile on;
keepalive_timeout 130;
gzip on;
server {
listen 80;
listen 443 ssl;
ssl on;
ssl_certificate server.crt;
ssl_certificate_key secret.key;
ssl_session_timeout 5m;
ssl_prefer_server_ciphers on;
server_name exsample.com; #crt と合わせる
client_max_body_size 20M;
location / {
root c:/dev/server/htdocs;
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?$args; #wordpress で デフォルト以外のパーマリンクを利用する場合の設定
}
location ~ \.php$ {
root c:/dev/server/htdocs;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
}
尚、今回はReverseproxy機能を利用しないので、記述していません。
Nginx をサービス化して自動起動にする
このままでもいいのですけど、再起動時に手動でNginxを起動するのは面倒という事で、サービス化してみました。
このままではサービス化は出来ないので、「WinSW」と言うツールを使ってサービス化することにしました。
.NET Framework 3.5 を有効にする
Configファイルを作れば本frameworkは不要なのですが、導入することにしました。
(理由は後述)
- サーバーマネージャーを起動します。
- 「管理」>「役割と追加」を選択します。
- 「役割と機能の追加ウィザード」が起動します。
- 「開始する前に」の項目は「次へ」をクリックします。
- 「インストールの種類」の項目は「次へ」をクリックします。
- 「サーバーの選択」の項目は「次へ」をクリックします。
- 「サーバーの役割」の項目は「次へ」をクリックします。
- 「機能」の項目では「.NET Framework 3.5 Futures」にチェックをして「次へ」をクリックします。
- 「確認」の項目で「警告」が表示されますが、そのまま「インストール」をクリックします。

- 「結果」に遷移し、インストールが開始されます。「<サーバー名>でインストールが正常に完了しました。」が表示されたのを確認して、「閉じる」をクリックします。

WinSW の導入
- ダウンロードページより、winswの最新版「winsw-*.*.*-bin.exe」をダウンロードします。
- ダウンロードしたファイルを「nginx.exe」と同じ場所に格納します。
- PHPでも同じくサービス化で利用するため、リネームします。
今回私は「winsw_290_nginx_svc.exe」という名前に変更しました。 - xmlファイルを作成します。名前は「3」でリネームした名前と同じ名前にします。
今回は「winsw_290_nginx_svc.xml」にしました。
<service>
<id>nginx</id>
<name>nginx</name>
<description>nginx</description>
<logpath>c:\dev\server\nginx\logs</logpath>
<logmode>roll</logmode>
<depend></depend>
<executable>c:\dev\server\nginx\nginx.exe</executable>
<startargument></startargument>
<stopexecutable>c:dev\server\nginx\nginx.exe</stopexecutable>
<stopargument>-s</stopargument>
<stopargument>stop</stopargument>
</service>
- Configファイルを作成します。名前は「3」でリネームした名前と同じ名前にします。
今回の場合は「winsw_290_nginx_svc.config」にしました。
※ 「.NET framework 3.5」を導入している場合は不要です。
<configuration>
<startup>
<supportedRuntime version="v2.0.50727" />
<supportedRuntime version="v4.0" />
</startup>
</configuration>
- 「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」に変更して実行してください。
参考サイト様
この後は、「PHPの導入」、「mySQLの導入 (MariaDBに変更しました)」、「Wordpressの導入」、「本格的なシステム構築」の順に進めていっております。
改版履歴
- 2020年8月24日:全体構成変更及びSSL化、Wordpressの導入に伴い修正