サービス化手順:Windows版nginx・PHP8のインストール(2024年9月版)
目次
Windows版nginx・PHP8のインストール・サービス化(2024年9月)
Windows上にnginxとPHPをダウンロードしてWindowsのサービス化する手順です。
2024年9月時点の情報に更新します。
環境は「c:\web2」フォルダに作る想定で説明はすすめます。
nginxのダウンロードとインストール
nginxのダウンロードは以下から行います。
この時点での最新版は「nginx/Windows-1.27.1 」でした。
これをダウンロードして、解凍します。
解凍するとフォルダにバージョン名がついているので「nginx」にリネームします。
解凍すると同じ名前のフォルダが2層できます。
名称変更して、C:\web2フォルダに移動するのはサブフォルダのほうです。
PHP8のダウンロードとインストール
PHPのダウンロードは以下から行います。
ちょっとわかりづらいですが、ダウンロードするのは、Threadsafe版のZIPです。
時点の最新版は「php-8.3.11-Win32-vs16-x64.zip」でした。
解凍後フォルダ名を「php」に変更し、「c:\web2」フォルダに移動します。
異動後、phpフォルダの下に「logs」フォルダを作っておきます。
PHP8を動かすためのVCのランタイム
は既にはいっている場合はいりません。
これがないと、PHPをサービス化して起動するときエラー終了します。
サービス化プログラムのダウンロードとコピー
nginxとPHPはWindowsではそのままサービス化できません。
winsw.Exeを使います。
下記から、最新版をダウンロードします。
時点の最新版は2.12.0でした。
とりあえず「WinSw-x64.exe」をダウンロードします。
ダウンロードしたWinSw.exeはC:\web2にコピーした「nginx」と「php」フォルダの直下にコピーして、リネームします。
今回は「winsw_php.exe」と「winsw_nginx.exe」にしました。
nginxの設定
nginxを動かす最低限の設定をします。
nginxフォルダ直下confフォルダの「nginx.conf」を編集します。
① ポートとサーバー名の設定
listen 8090;
server_name localhost;
デフォルトは「80」ですが、今回は開発環境なので、あえて「8090」にしました。
この設定であれば、以下のURLでアクセスできます。
② ドキュメントルートの設定
HTMLの置場所です。
”http://localhost:8090/”とすると、ドキュメントルートに探しにいきます。
デフォルトは「html」・・つまり「nginx\html」フォルダです。
以下の例は「C:\web2\src\htdocs」をルートフォルダに変更する例です。
location / {
root C:/web2/src/htdocs
index index.html index.htm;}
PHPを使えるようにするには「location ~ \.php$」の部分のコメントアウト「#」を消して有効にする必要があります。
上記のドキュメントルートに指定したフォルダ名に2ケ所書き換えます。
location ~ \.php$ {
root C:/web2/src/htdocs;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME C:/web2/src/htdocs$fastcgi_script_name;
include fastcgi_params;
}
最低限ならこれだけです。
<注意点:パス区切りの書き方>
「C:/src/htdocs」のように「/」区切りでも、「C:\src\htdocs」のように「\(¥)」区切りのどちらでも使えますが、「C:\src\nhtdocs」みたいに、[\」の後ろに「n」が来たりすると、改行コードと認識されてエラーになり、サービスの起動に失敗します。
なので、「/」にしておくのが安全です。
PHPの設定
php.iniを作る必要があります。
とりあえず動かすだけなら、phpフォルダ直下にある「php.ini-development」を、「php.ini」にリネームすれば動きます。
nginxをサービス化
EXEと同じ名前でXMLファイルを作ります。
winsw_nginx.exe なら winsw_nginx.xml のようにします。
<service> <id>nginx</id> <name>nginx</name> <description>「nginx」で起動する。「nginx -s stop」で停止する。</description> <logpath>C:\web2\nginx\logs</logpath> <logmode>roll</logmode> <depend></depend> <executable>C:\web2\nginx\nginx.exe</executable> <startarguments></startarguments> <stoparguments>-s stop</stoparguments> </service>
基本的にはログフォルダとnginx.exeのパスを環境にあわせて書き換えてください。
準備ができたら、コマンドプロンプトを管理者で開いて以下を実行します。
WinSw_nginx.exe install
成功すると以下のようなメッセージが表示されます。
2024-09-07 17:47:07,959 INFO - Installing service 'nginx (nginx)'...
2024-09-07 17:47:08,038 INFO - Service 'nginx (nginx)' was installed successfully.
php-cgiをサービス化
EXEと同じ名前でXMLファイルを作ります。
<service> <id>php-cgi</id> <name>php-cgi</name> <description>「php-cgi -b 127.0.0.1:9000 -q」を実行する</description> <logpath>C:\web2\php\logs</logpath> <logmode>roll</logmode> <depend></depend> <executable>C:\web2\php\php-cgi.exe</executable> <startarguments>-b 127.0.0.1:9000 -q</startarguments> </service>
PHPフォルダ直下に「logs」フォルダを作る前提で書いているので、ない場合は変更してください。他のexeのパスなどは環境にあわせて書き換えてください。
準備ができたら、コマンドプロンプトを管理者で開いて以下を実行します。
WinSw_php.exe install
成功すると以下のようなメッセージが表示されます。
2024-09-07 17:49:01,691 INFO - Installing service 'php-cgi (php-cgi)'...
2024-09-07 17:49:01,775 INFO - Service 'php-cgi (php-cgi)' was installed successfully.
サービスの起動
サービスを起動します。
ファイル名を指定して実行で「services.msc」をうつと、以下のような画面が立ち上がってきます。
ここで、nginxとphp-cgiを探して、右クリック→開始とやれば、実行中のステータスになります。
これで動かす準備はOKです。
動作確認
すでにソースがある場合はそれを使います。
ない場合は、ドキュメントルートに指定したフォルダに、以下の内容をコピーして「index.php」の名前で保存します。
<?php
phpinfo();
?>
ブラウザで以下のURLをたたきます。
これで、以下のように表示されればOKです。
ではでは。