SlideShare a Scribd company logo
nginx で php-fpm を
    動かしてみた
      Webサーバ勉強会 #4
            2011/11/11
               do_aki
do_aki (どぅーあき)
• |所属| > 株式会社もしも
        (ドロップシッピング・アフィリエイトASP)
• |仕事| > インフラ構築・運用 兼
         Webアプリケーション開発・運用
• |出現| > 渋谷・山手線沿線
• |特性| > PHPer



                         http://do-aki.net/
経緯とか
• Web サーバ勉強会のお題が埋まってた
• せっかくだし nginx 使って何かしたい

• チューニンガソン2(10/1)で、 Mediawiki が
  php-fpm (5.4) でうまく動かないとか言って
  た
自分の nginx の認識
• 今まで動かしたこと無かった

• 軽快・設定がシンプル
• シングルスレッド
• イベント駆動的な?
   程度の知識しか持ってない
Webサーバ勉強会4 nginx で php-fpm を動かしてみた
結果




問題ない     (たぶん)




       ※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;
}
server {
  listen 8888;         nginx.conf 80から変更
  server_name localhost;

    location / {
      root /var/www/html;
      fastcgi_pass 127.0.0.1:9000;
      fastcgi_index index.php;              fastcgi 用設定
       include /etc/nginx/fastcgi.conf;
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
      root html;
    }
}
一方 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;
server {
  listen    8888;      nginx.conf
    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 なので、プロダク
  ションでは使わないようにね!
• ありがとうございました

More Related Content

PDF
Webサーバ構築で心がけるべき二つのこと
PDF
動画共有ツール
PDF
シンプルなシステム構成フレームワークalnair
PDF
Hive undocumented feature
PDF
誰でも出来るosxでのローカルなウェブ開発環境構築
PPTX
Puppetのススメ
PDF
2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料
ODP
Raspberry Pi 2 誤自宅サーバー移行日記
Webサーバ構築で心がけるべき二つのこと
動画共有ツール
シンプルなシステム構成フレームワークalnair
Hive undocumented feature
誰でも出来るosxでのローカルなウェブ開発環境構築
Puppetのススメ
2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料
Raspberry Pi 2 誤自宅サーバー移行日記

What's hot (20)

PDF
Webサーバのチューニング
PDF
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
PDF
ノンプログラマのためのウェブサーバ入門
PDF
第1回 一撃サーバー構築シェルスクリプト勉強会
PPTX
ネットワークエンジニアのための Puppet / Chef
PDF
ヤギにサーバーを管理してもらう話
PDF
Puppet on AWS
PPTX
Zabbixを2分でインストール
PPTX
ZabbixとAWS
PDF
めんどうくさくないWardenハンズオン
PDF
nginx入門
PPTX
中小規模サービスのApacheチューニング
PDF
Serverspecを使ってサーバ5000台のBaculaクライアントをテスト
PDF
Webサーバ勉強会03
PDF
Hadoop on LXC
PDF
serverspecでサーバ環境のテストを書いてみよう
PDF
HTTP/2 in nginx(2016/3/11 社内勉強会)
PDF
今日から使い始めるChef
KEY
Fabricでサーバー管理をDRYにしよう
PDF
Vagrant環境のAnsibleを速くしたい
Webサーバのチューニング
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
ノンプログラマのためのウェブサーバ入門
第1回 一撃サーバー構築シェルスクリプト勉強会
ネットワークエンジニアのための Puppet / Chef
ヤギにサーバーを管理してもらう話
Puppet on AWS
Zabbixを2分でインストール
ZabbixとAWS
めんどうくさくないWardenハンズオン
nginx入門
中小規模サービスのApacheチューニング
Serverspecを使ってサーバ5000台のBaculaクライアントをテスト
Webサーバ勉強会03
Hadoop on LXC
serverspecでサーバ環境のテストを書いてみよう
HTTP/2 in nginx(2016/3/11 社内勉強会)
今日から使い始めるChef
Fabricでサーバー管理をDRYにしよう
Vagrant環境のAnsibleを速くしたい
Ad

Viewers also liked (9)

PDF
Webサーバ勉強会#4
PDF
Scaling php - Intercon php
PPTX
第2回勉強会資料 柏木
PDF
mod_php vs FastCGI vs FPM vs CLI
PDF
Boost.Coroutine
PDF
最速の言語Lua ~Python Hack-a-thon #3~
PPT
Programming言語Lua紹介(Internet版)
PDF
MySQL 5.7の罠があなたを狙っている
PDF
MySQL 5.7にやられないためにおぼえておいてほしいこと
Webサーバ勉強会#4
Scaling php - Intercon php
第2回勉強会資料 柏木
mod_php vs FastCGI vs FPM vs CLI
Boost.Coroutine
最速の言語Lua ~Python Hack-a-thon #3~
Programming言語Lua紹介(Internet版)
MySQL 5.7の罠があなたを狙っている
MySQL 5.7にやられないためにおぼえておいてほしいこと
Ad

Similar to Webサーバ勉強会4 nginx で php-fpm を動かしてみた (20)

PDF
Nseg20120825
PDF
Djangoとweb2pyをapacheに組込む
PPTX
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
PDF
Yohes kitchen
PDF
Niigata.pm #1
PPTX
OSC Tokyo fall LT~Dockerで分散処理をやってみた
PDF
behatエクステンションの作り方
KEY
Mysql casial01
PDF
Infinite Debian - Platform for mass-producing system every second
PDF
OWASP WordPressセキュリティ実装ガイドライン (セキュアなWordPressの構築ハンズオン手順書)
PDF
【アシアル塾】Linux超入門編・第二回 仮想サーバー上にLAMP環境を構築してみよう
PDF
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
PPT
LL言語でもHudsonを使おう!
PDF
Word press on conoha このべん #3
PDF
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
PDF
130412 kayac-cinnamon
PPTX
Grunt入門
PDF
Osc2013 tokyospring
PDF
環境構築自動化ツールのご紹介
Nseg20120825
Djangoとweb2pyをapacheに組込む
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
Yohes kitchen
Niigata.pm #1
OSC Tokyo fall LT~Dockerで分散処理をやってみた
behatエクステンションの作り方
Mysql casial01
Infinite Debian - Platform for mass-producing system every second
OWASP WordPressセキュリティ実装ガイドライン (セキュアなWordPressの構築ハンズオン手順書)
【アシアル塾】Linux超入門編・第二回 仮想サーバー上にLAMP環境を構築してみよう
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
LL言語でもHudsonを使おう!
Word press on conoha このべん #3
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
130412 kayac-cinnamon
Grunt入門
Osc2013 tokyospring
環境構築自動化ツールのご紹介

More from do_aki (20)

PPTX
Tritonn から Elasticsearch への移行話
PPTX
php-src の歩き方
PPTX
PHP と SAPI と ZendEngine3 と
PPTX
PHPとシグナル、その裏側
PPTX
再考:列挙型
PPTX
signal の話 或いは Zend Signals とは何か
PPTX
PHP AST 徹底解説(補遺)
PPTX
PHP AST 徹底解説
PPTX
Writing php extensions in golang
PPTX
php7's ast
PPTX
N対1 レプリケーション + Optimizer Hint
PPTX
20150212 プレゼンテーションzen
PPTX
MySQL Casual Talks 7 「N:1 レプリケーション ~進捗どうですか?~」
PPTX
20141017 introduce razor
PPTX
20141011 mastering mysqlnd
PPTX
php in ruby
PPTX
PHP から Groonga を使うにはこんなコードになるよ!
PPTX
N:1 Replication meets MHA
PDF
Php radomize
PPTX
php and sapi and zendengine2 and...
Tritonn から Elasticsearch への移行話
php-src の歩き方
PHP と SAPI と ZendEngine3 と
PHPとシグナル、その裏側
再考:列挙型
signal の話 或いは Zend Signals とは何か
PHP AST 徹底解説(補遺)
PHP AST 徹底解説
Writing php extensions in golang
php7's ast
N対1 レプリケーション + Optimizer Hint
20150212 プレゼンテーションzen
MySQL Casual Talks 7 「N:1 レプリケーション ~進捗どうですか?~」
20141017 introduce razor
20141011 mastering mysqlnd
php in ruby
PHP から Groonga を使うにはこんなコードになるよ!
N:1 Replication meets MHA
Php radomize
php and sapi and zendengine2 and...

Webサーバ勉強会4 nginx で php-fpm を動かしてみた

  • 1. nginx で php-fpm を 動かしてみた Webサーバ勉強会 #4 2011/11/11 do_aki
  • 2. do_aki (どぅーあき) • |所属| > 株式会社もしも (ドロップシッピング・アフィリエイトASP) • |仕事| > インフラ構築・運用 兼 Webアプリケーション開発・運用 • |出現| > 渋谷・山手線沿線 • |特性| > PHPer http://do-aki.net/
  • 3. 経緯とか • Web サーバ勉強会のお題が埋まってた • せっかくだし nginx 使って何かしたい • チューニンガソン2(10/1)で、 Mediawiki が php-fpm (5.4) でうまく動かないとか言って た
  • 4. 自分の nginx の認識 • 今まで動かしたこと無かった • 軽快・設定がシンプル • シングルスレッド • イベント駆動的な? 程度の知識しか持ってない
  • 6. 結果 問題ない (たぶん) ※mediawiki を動かすのは
  • 7. 環境 • Scientific Linux 6.0 • nginx version 1.0.9 (latest stable) • PHP version 5.4.0 beta2 (昨日 RC1でちゃったケド)
  • 8. 最初に 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)
  • 9. とりあえず試す • make & make install • $ sudo /usr/sbin/nginx • t オプションで設定ファイルチェック • SIGHUP 送ると設定再読み込み ドキュメント結構しっかりしてるね!
  • 10. ドキュメントルートが分からず 基準パスはどこ? location / { root html; index index.html index.htm; }
  • 11. ドキュメントルートが分からず 絶対パスなら確実 location / { root /var/www/html; index index.html index.htm; }
  • 12. server { listen 8888; nginx.conf 80から変更 server_name localhost; location / { root /var/www/html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi 用設定 include /etc/nginx/fastcgi.conf; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
  • 13. 一方 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
  • 14. php-fpm を実行 • make & make install • sudo /usr/local/sbin/php-fpm • default port は 9000 • make install しなくても、設定ファイルさえ正 しい場所に置いておけば動く • php-5.4.0beta2/sapi/fpm/php-fpm を実行でも 可能 (設定ファイルの場所はエラーで表示)
  • 15. mediawiki 表示 • 何故か表示されない • phpinfo() を実行するだけのスクリプトは 動く • Response Header みると – Location: http://localhost:8888/...
  • 16. phpinfo を比較 $_SERVER["SERVER_NAME"] apache => 192.168.29.128 nginx => localhost
  • 17. Fastcgi.conf (あるいはfastcgi_params) fastcgi_param SERVER_NAME $server_name; server_name localhost;
  • 18. server { listen 8888; nginx.conf 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; } }
  • 19. まとめ • nginx × php-fpm あっさり動いちゃった • むしろ、チューニンガソン2で動かなかった 理由は何だったんだ……? • 当時は aplha3 だったから? • モジュールによって? • php-fpm は EXPERIMENTAL なので、プロダク ションでは使わないようにね!