Homebrewでnginx + php-fpmのphp実行環境構築
初めましてのブログ投稿。
「いいインプットしてるんだから、アウトプットしろ(ブログ書け)!」と言われて、物は試し、勉強した内容をブログに書くことにした。ここから何かに気付けるかもしれないし、本当にインプットとアウトプットのいいサイクルが出来上がるかもしれないのでやってみようの根性。
本題
MacにPHPの実行環境を作ることにした。
MacならデフォルトでPHPとApacheが入っているので、特別用意する必要は無いが、勉強がてらnginxとphp-fpmで構成されるPHPの実行環境を(めっちゃ調べながら)作ってみた。
(ちなみにこの記事ではHomebrewの導入については話しない。ただHomebrewを下にスクロールしたら書いてあるコマンドを叩くだけでOKだったはず。)
参考記事
基本的に以下の記事を参考にした。
Mac OSX: homebrew を使って nginx と php-fpm をインストールする
nginxのインストール
まずHomebrewでnginxをインストールする。
(Homebrewのnginxはオプションが最小限だのなんだのっていうのでnginx-fullを入れようっていう動きもあるけど、この違いについてはよくわかりません。)
$ brew install nginx
設定ファイルは /usr/local/etc/nginx/nginx.conf にある。
$ ln -sfv /usr/local/opt/nginx/*.plist ~/Library/LaunchAgents $ launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist
※デフォルトだとnginxも80番をlistenしていて、かつapacheを起動しているならばapacheが80番をlistenしている可能性があるので注意。その場合apacheを停止するか、nginxを8080等をlistenするように変更する必要がある。
ちなみにnginxの起動、停止、再起動は以下のコマンド
$ sudo nginx # 起動 $ sudo nginx -s stop # 停止 $ sudo nginx -s reload # 再起動
php55のインストール
会社でもnginx + php-fpmという組み合わせでPHPを処理させているので、同じくphp-fpmを導入することにした。
php-fpmはapacheのmod_phpモジュールのようなもので、Nginxには直接php処理モジュールを組み込むことはできないので、Nginxと組み合わせてPHPを動かすにはこれが必要。
PHPをhomebrew-phpからインストールするためにtapコマンドでfomuraを追加
$ brew tap homebrew/dupes $ brew tap homebrew/versions $ brew tap homebrew/homebrew-php
おまちかねphp-fpmとPHP55をインストール
$ brew install php55 —with-fpm
.bash_profileや.zshenvに以下を書いてパスを通す
PATH=“/usr/local/bin:$PATH” # for PHP55 PATH=“/usr/local/sbin:$PATH” # for php-fpm
PHP55の自動起動設定
$ cp /usr/local/Cellar/php55/5.5.11/homebrew.mxcl.php55.plist ~/Library/LaunchAgents/ $ launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.php55.plist
このPHP55の準備ができればコマンドラインからはPHP55でphpスクリプトを実行することができる。
nginxの設定
phpファイルがブラウザ上で動作するようにnginxを設定する。
上記のnginx.confに以下を記述する。
http { ... server { listen 80; root /path/to/your_document_root; # 任意のパス server_name localhost; charset utf-8; index index.php index.html index.htm; # '~localhost/'で終わった時にアクセスするファイル location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } }
これを記述した後nginxを再起動。
$ sudo nginx -s reload
例えば設定したドキュメントルート以下に以下のファイルを置いてブラウザでhttp://localhost/phpinfo.phpにアクセスしてみる。
/path/to/your_document_root/phpinfo.php
<?php phpinfo();
このような画面が表示されたらOK!