2011/02/25

さくらVPS(CentOS)でnginxとPHPをいれてみた

がんばっていれてみた。
  • /var/www/public_html をドキュメントルートにして、
  • httpd ユーザーがオーナー。
  • phpinfo()
が動くところまで。

sudo がめんどくさいからとりあえず root になる。

 su -
みんな大好き remi リポジトリを追加する。
 rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
 rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
nginx php  インストール
(いろいろあるけど(゚ε゚)キニシナイ!!)
 yum -y --enablerepo=remi install nginx
 yum -y --enablerepo=remi install mysql-server memcached php ImageMagick.x86_64
 yum -y --enablerepo=remi install php-mbstring php-mysql php-pdo php-mcrypt php-soap php-xmlrpc
 yum -y --enablerepo=remi install php-pecl-apc php-pecl-imagick php-pecl-memcache
spawn-fcgi で php-cgi をプロセスとして生かすのがナウなヤングにバカウケらしい。
 yum install spawn-fcgi
fastcgi 起動スクリプトを用意する

#!/bin/sh
#
# chkconfig: 2345 85 15 
# description: php-cgi - php-fastcgi swaping via  spawn-fcgi
#
. /etc/rc.d/init.d/functions
. /etc/sysconfig/network
[ "$NETWORKING" = "no" ] && exit 0
spawnfcgi="/usr/bin/spawn-fcgi"
php_cgi="/usr/bin/php-cgi"
prog=$(basename $php_cgi)
server_ip=127.0.0.1
server_port=9000
server_user=httpd 
server_group=httpd
server_childs=5
pidfile="/var/run/php_cgi.pid"
[ -f /etc/sysconfig/phpfastcgi ] && . /etc/sysconfig/phpfastcgi
start() {
    [ -x $php_cgi ] || exit 1
    [ -x $spawnfcgi ] || exit 2
    echo -n $"Starting $prog: "
    daemon $spawnfcgi -a ${server_ip} -p ${server_port} -u ${server_user} -g ${server_group} -P ${pidfile} -C ${server_childs} -f ${php_cgi}
    retval=$?
    echo
    return $retval
}
stop() {
    echo -n $"Stopping $prog: "
    #killproc -p ${pidfile} $prog -QUIT
    killproc $prog
    retval=$?
    echo
    [ -f ${pidfile} ] && /bin/rm -f ${pidfile}
    return $retval
}
restart(){
    stop
    sleep 2
    start
}
rh_status(){
    status -p ${pidfile} $prog
}
case "$1" in
    start)
        start;;
    stop)
        stop;;
    restart)
        restart;;
    status)
        rh_status;;
    *)  
        echo $"Usage: $0 {start|stop|restart|status}"
        exit 3
esac

これを /etc/init.d/php-fastcgi におく。
先に起動しておきます
 chkconfig --add php-fastcgi
 chkconfig php-fastcgi on
 service php-fastcgi start
nginx の設定
 vi /etc/nginx/nginx.conf
user              httpd;
server {
        location / {
            root   /var/www/public_html;
            index  index.php index.htm;
        }
        location ~ \.php$ {
            root           /var/www/public_html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /var/www/public_html$fastcgi_script_name;
            include        fastcgi_params;
        }
}
chkconfig nginx on
service nginx start
/var/www/public_html/info.php に phpinfo() 書いて表示できたらいいねー。

■備考
php ファイルにアクセスしたら
No input file specified.
がでた。
/etc/init.d/php-fastcgi に書いていた、
server_user=hoge
server_group=hoge
とかになってて、パーミッションの関係でエラーになってたらしい。
正しく設定したらちゃんと表示された。


まだこれしかやってないけど、
もっと時間をみて、いろいろ弄っていきたい。


参考: http://d.hatena.ne.jp/perezvon/20091016/1255713335