アットウィキロゴ

nginx php

「nginx php」の編集履歴(バックアップ)一覧に戻る

nginx php - (2010/06/17 (木) 12:11:19) のソース

nginx php

nginxでphpを動作させる方法を書いています。
nginxでphpを動作させるにはspawn-fcgi(lighthttpdというパッケージに含まれている)というラッパーが必要になります。
つまりnginx  --->  spawn-fcgi  --->  phpという風に連携させます。
 http://d.hatena.ne.jp/demuyan/20080726
ここを参考にしています。

phpのインストール
 sudo aptitude install php5-common php5-cgi php5-mysql php5-cli

spawn-fcgiを使ってphpを動作させます。
spawn-fcgiはlighttpdに含まれています。
lighttpdのインストール


php5-cgiをFastCGIとして起動させるスクリプト(/usr/bin/php5-fastcgi)を作成します。
/usr/bin/php5-fastcgiの内容
重要なのは「-C 2」です。 このCオプションはspawn-fcgiのプロセス数を意味します。アクセス数が多ければ多いほど、この値を大きくしていきます。
アクセスがこれを超えると、いわゆるサーバーが落ちるという状態になります。
 #!/bin/sh
 /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -C 2 -f /usr/bin/php5-cgi


php5-cgiの実行権限を設定します。
 sudo chmod +x /usr/bin/php5-fastcgi

リンクを作成します。
 sudo ln -s /usr/bin/php5-fastcgi /usr/bin/php-fastcgi

起動用スクリプト/etc/init.d/fastcgiを作成します。
/etc/init.d/fastcgiの内容
 #!/bin/bash
 PHP_SCRIPT=/usr/bin/php-fastcgi
 RETVAL=0
 case "$1" in
	start)
		echo "Starting fastcgi"
		$PHP_SCRIPT
		RETVAL=$?
  ;;
	stop)
		echo "Stopping fastcgi"
		killall -9 php5-cgi
		RETVAL=$?
  ;;
	restart)
		echo "Restarting fastcgi"
		killall -9 php5-cgi
		$PHP_SCRIPT
		RETVAL=$?
  ;;
	*)
		echo "Usage: php-fastcgi {start|stop|restart}"
		exit 1
  ;;
 esac
 exit $RETVAL


権限を設定します。
 sudo chmod 755 /etc/init.d/fastcgi

fastcgiを起動してみます。
 sudo /etc/init.d/fastcgi start

サーバー起動時に起動するようにします。
 sudo update-rc.d fastcgi defaults


/etc/nginx/sites-available/domain1.comのserver毎にに以下の内容を追加します。
 location ~ \.php$ {
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  /home/user/public_html/mydomain.com/public$fastcgi_script_name;
    include        /etc/nginx/fastcgi_params;
 }



/etc/nginx/sites-available/domain1.comの内容 下のようになります。
 server { 
           listen   80;
           server_name www.domain1.com;
           access_log /home/demo/public_html/domain1.com/log/access.log;
           error_log /home/demo/public_html/domain1.com/log/error.log;
           location / {
                       root   /home/demo/public_html/domain1.com/public/;
                       index  index.html index.php;
                       }
    location ~ \.php$ {
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  /home/demo/public_html/domain1.com/public$fastcgi_script_name;
    include        /etc/nginx/fastcgi_params;
    }
 }
 server { 
           listen   80;
           server_name domain1.com;
           access_log /home/demo/public_html/domain1.com/log/access.log;
           error_log /home/demo/public_html/domain1.com/log/error.log;
           location / {
                       root   /home/demo/public_html/domain1.com/public/;
                       index  index.html index.php;
            }
    location ~ \.php$ {
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  /home/demo/public_html/domain1.com/public$fastcgi_script_name;
    include        /etc/nginx/fastcgi_params;
    }
 }

nginxを再起動
 sudo /etc/init.d/nginx stop
 sudo /etc/init.d/nginx start

これでnginxでphpスクリプトが動作します。
ここまでがnginxの基本設定となります。

[[お薦めの海外サーバー>http://www.linode.com/?r=c63ed3ea31e592550f17bd32058664e5d0577f3c]]
linodeでnginxを作動させています。
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。