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の基本設定となります。
最終更新:2010年06月17日 12:11