webサーバ勉強会4 nginx で php-fpm を動かしてみた
TRANSCRIPT
nginx で php-fpm を動かしてみた
Web サーバ勉強会 #42011/11/11
do_aki
• | 所属 | > 株式会社もしも (ドロップシッピング・アフィリエイト ASP )
• | 仕事 | > インフラ構築・運用 兼 Web アプリケーション開発・運用
• | 出現 | > 渋谷・山手線沿線• | 特性 | > PHPer
do_aki ( どぅーあき )
http://do-aki.net/
経緯とか• Web サーバ勉強会のお題が埋まってた• せっかくだし nginx 使って何かしたい
• チューニンガソン 2(10/1) で、 Mediawiki が php-fpm (5.4) でうまく動かないとか言ってた
自分の nginx の認識• 今まで動かしたこと無かった
• 軽快・設定がシンプル• シングルスレッド• イベント駆動的な?
程度の知識しか持ってない
結果
問題ない ( たぶん )
※mediawiki を動かすのは
環境
• Scientific Linux 6.0
• nginx version 1.0.9 (latest stable)• PHP version 5.4.0 beta2
( 昨日 RC1 でちゃったケド )
最初に configure./configure \ --prefix=/usr \ --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf \ --error-log-path=/var/log/nginx/error.log --pid-path=/var/run/nginx/nginx.pid \ --lock-path=/var/lock/nginx.lock --user=nginx --group=nginx \ --with-http_ssl_module --with-http_flv_module \ --with-http_gzip_static_module \ --http-log-path=/var/log/nginx/access.log \ --http-client-body-temp-path=/var/run/nginx/client/ \ --http-proxy-temp-path=/var/run/nginx/proxy/ \ --http-fastcgi-temp-path=/var/run/nginx/fcgi/ \ --http-uwsgi-temp-path=/var/run/nginx/uwsgi/ \ --http-scgi-temp-path=/var/run/nginx/scgi/
あらかじめ pcre-devel パッケージをインストール ( たぶん openssl-devel zlib-devel)
とりあえず試す• make & make install• $ sudo /usr/sbin/nginx
• t オプションで設定ファイルチェック• SIGHUP 送ると設定再読み込み
ドキュメント結構しっかりしてるね!
ドキュメントルートが分からず
location / { root html; index index.html index.htm;}
基準パスはどこ?
ドキュメントルートが分からず
location / { root /var/www/html; index index.html index.htm;}
絶対パスなら確実
nginx.confserver { listen 8888; server_name localhost;
location / { root /var/www/html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include /etc/nginx/fastcgi.conf; }
error_page 500 502 503 504 /50x.html; location = /50x.html { root html; }}
80 から変更
fastcgi 用設定
一方 php-fpm./configure \ --cache-file=./config.cache \ --with-layout=GNU \ --disable-debug \ --disable-rpath \ --enable-zip \ --enable-mbstring=ja \ --enable-mbregex \ --with-openssl \ --with-zlib \ --enable-ftp \ --enable-sockets \ --enable-sysvsem --enable-sysvshm --enable-sysvmsg \ --with-apxs2=/usr/sbin/apxs \
--enable-fpm
php-fpm を実行• make & make install • sudo /usr/local/sbin/php-fpm
• default port は 9000
• make install しなくても、設定ファイルさえ正しい場所に置いておけば動く
• php-5.4.0beta2/sapi/fpm/php-fpm を実行でも可能 ( 設定ファイルの場所はエラーで表示 )
mediawiki 表示• 何故か表示されない• phpinfo() を実行するだけのスクリプト
は動く
• Response Header みると– Location: http://localhost:8888/...
phpinfo を比較
$_SERVER["SERVER_NAME"]
apache => 192.168.29.128
nginx => localhost
Fastcgi.conf (あるいは fastcgi_params)
fastcgi_param SERVER_NAME $server_name;
server_name localhost;
nginx.confserver { listen 8888;
server_name 192.168.29.128;
location / { root /var/www/html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include /etc/nginx/fastcgi.conf; }
error_page 500 502 503 504 /50x.html; location = /50x.html { root html; }}
まとめ• nginx × php-fpm あっさり動いちゃった
• むしろ、チューニンガソン2で動かなかった理由は何だったんだ……?
• 当時は aplha3 だったから?• モジュールによって ?
• php-fpm は EXPERIMENTAL なので、プロダクションでは使わないようにね!
• ありがとうございました