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をダブルクリック。
ジョンッ!
そういうことね。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.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();のみ。
ちゃんと表示された!まずはここまで。
ほとんど使っていないNotePCにnginxをインストールしてWordPressを運用しようと思い、同じようなテーマの記事を探したところ、こちらの記事にたどり着きました。
丁寧な解説、ありがとうございます。