nginx php

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の基本設定となります。

お薦めの海外サーバー
linodeでnginxを作動させています。

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2010年06月17日 12:11
ツールボックス

下から選んでください:

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