WindowsにnginxとPHPを入れる


PHPの勉強を行うついでに、気になっていたnginxを使ってみる。PHPとnginxのインストールをメモ。環境は次の通り。

OS
Windows7
nginx
1.7.0
PHP
5.5.12

PHPのインストール

ダウンロード

公式のインストールマニュアルに従い、インストールを行う。バイナリはここからダウンロード可能。Windows7 64bitなのでx64版パッケージを選択。PHPのマニュアルにPHP を CGI として動かすつもりなら、スレッドセーフでなくてもかまいませんとあるので、VC11 x64 Non Thread Safeを選択。よし、君に決めた。

展開

zip型式でダウンロードされるので、とりあえず”C:\tools”下あたりに展開しておく。ドキドキしながらインストールディレクトリ直下にあるphp.exeをダブルクリック。
ジョンッ!
php_run_error

そういうことね。MSVCR110.dllがないとね。というわけで、MicrosoftのサイトからMS C++ Runtimeを取得する。ちなみに、MSVCRは”MicroSoft Visual C++ Runtime”の略っぽい。そして110はVisual Studio 2012の再頒布可能型式のことらしい。Visual Studio 2013の場合は120の数字になるらしい。なんで数字がずれてるんだろう。

MSVCR110.dllのインストールを行って、php.exeを再度ダブルクリック。エラーがなく動いている模様。とはいえ、コンソールにキャレットがピッコンピッコンしているだけではよくわからない。のでコマンドプロンプトでインストールディレクトリに移動し、次のコマンドを実行。

php.exe --version

単純にバージョン情報を表示するだけのコマンド。実行して次のようにバージョン情報が出力されると問題なしとする。

PHP 5.5.12 (cli) (built: Apr 30 2014 11:19:55)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies

nginxのインストール

ダウンロード

公式のドキュメントを見ても、Windowsのインストールマニュアルはなかった。ので、おもむろにダウンロードページからWindows版をダウンロードする。

Mainline VersionとStable Versionとあるが、これはそれぞれメイン開発バージョンと安定バージョンらしい。つまり今後機能の開発とかが行われていくのがMainlineとなり、Stableの方はバグパッチのみ対応するバージョンということだろう。そしてMainlineは開発バージョンなので完全な動作保証はないだろう。ということで、今回はStable Versionをダウンロードした。

展開

zipファイルになっているので、これまた”C:\tools”あたりに展開する。そしてnginx.exeをダブルクリック。ウィンドウが一瞬で消える。タスクマネージャーでプロセスを見てみると、nginx.exeがいらっしゃる。ので、ブラウザに”http://localhost”を入力する。
nginx_welcome
このシンプルな画面が表示されれば成功。インストール終了。

で、終了方法は?

コマンドプロンプトで、次のコマンドを入力。

nginx.exe -s stop

これで終了出来た。-sは-signalの意味らしい。

nginx.exe -s quit

こちらのほうがよりエレガントな終了方法。Woker Processの終了を待ってからプロセスを終了させる。普段はこっち。

nginxとPHPの連携

nginxとPHPはFastCGIで連携する。nginx wikiに書いてあった。ConfigureのページにPHP via FastCGIとあったので、これに従い設定を行う。

PHP側の準備

と言っても、FastCGI Daemonで起動するだけっぽい。

php-cgi.exe -b 127.0.0.1: <port>

このコマンドで起動できる。まずは、ポート:9000で起動してみる。

php-cgi.exe -b 127.0.0.1:9000

nginxの準備

${インストールディレクトリ}\conf\nginx.confの記述を変更する。”FastCGI”で検索するとそれらしい記述がコメント状態で見つかるのでコメントアウトしてちょちょっと書き換える。

location ~ \.php$ {
    root           html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME   $document_root/scripts/php$fastcgi_script_name;
   include        fastcgi_params;
}

簡単に各ディレクティブを説明。

root
このディレクティブを操作する場合のルートディレクトリ。
fastcgi_pass
FastCGIがListenしているポートへのパス。
fastcgi_index
リクエストのURLがスラッシュで終わってる時に補完してくれるファイル名。
fastcgi_param SCRIPT_FILENAME
呼び出すCGIファイルのパスを読み替える。$fastcgi_script_nameはリクエストされたURIと同値。
include
正直よくわからないのでオマジナイ。別ファイルを読み込むディレクティブってのはわかったが。

ここで、fastcgi_param SCRIPT_FILENAMEに$document_root/scripts/phpと記述したので、nginxの${インストールディレクトリ}/html/scripts/php/index.phpを作成してnginxを再起動してみる。index.phpの中身はphpinfo();のみ。

ちゃんと表示された!まずはここまで。

「WindowsにnginxとPHPを入れる」への1件のフィードバック

  1. ほとんど使っていないNotePCにnginxをインストールしてWordPressを運用しようと思い、同じようなテーマの記事を探したところ、こちらの記事にたどり着きました。
    丁寧な解説、ありがとうございます。

林ふきお へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 が付いている欄は必須項目です