Posts Tagged ‘FastCGI’

Nginx + PHP FastCGI on Ubuntu 傻瓜式 安装 配置 指南


17 9月
最近在公司都用的ubuntu,升级到10.0.4后发现PHP自动就到5.3了,但是某些杯具项目只能在5.2上面跑,于是折腾了很久,最后选择删光原有的环境装了Zend Server... 好吧,那是另外一个故事了。 大家知道我是个“最新版本控”,所以5.3还是要玩的,于是想到了Nginx这东东一直想弄还没机会搞,于是有了这篇傻瓜式记录。之前也看了张宴之类的大师怎么装这个环境,不过貌似超复杂,像我这在linux水平很初级的同学基本看完就晕了。 于是google了一下,嘿,还真找到了一些英文的资料,于是挑重点的翻译在此,以备不时之需。废话至此,以下正文: 我首先装的是nginx,很容易,一句话: aptitude install nginx 然后FastCgi: aptitude install php5-cgi 恭喜,如果没有报错的话,一切就完成大半了。超傻瓜吧。。。 实验一下: php-cgi -b 127.0.0.1:9000 有报错的话自己处理,反正我没出问题。 好,下面是关键部分,怎么让这东西自动启动。反正作为新手的我对这种感觉还是很神奇的。 vi /etc/init.d/php-fastcgi 把下面这些复制过去:
  1. #!/bin/bash
  2. BIND=127.0.0.1:9000
  3. USER=www-data
  4. PHP_FCGI_CHILDREN=15
  5. PHP_FCGI_MAX_REQUESTS=1000
  6.  
  7. PHP_CGI=/usr/bin/php-cgi
  8. PHP_CGI_NAME=`basename $PHP_CGI`
  9. PHP_CGI_ARGS="- USER=$USER PATH=/usr/bin PHP_FCGI_CHILDREN=$PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS=$PHP_FCGI_MAX_REQUESTS $PHP_CGI -b $BIND"
  10. RETVAL=0
  11.  
  12. start() {
  13.       echo -n "Starting PHP FastCGI: "
  14.       start-stop-daemon --quiet --start --background --chuid "$USER" --exec /usr/bin/env -- $PHP_CGI_ARGS
  15.       RETVAL=$?
  16.       echo "$PHP_CGI_NAME."
  17. }
  18. stop() {
  19.       echo -n "Stopping PHP FastCGI: "
  20.       killall -q -w -u $USER $PHP_CGI
  21.       RETVAL=$?
  22.       echo "$PHP_CGI_NAME."
  23. }
  24.  
  25. case "$1" in
  26.     start)
  27.       start
  28.   ;;
  29.     stop)
  30.       stop
  31.   ;;
  32.     restart)
  33.       stop
  34.       start
  35.   ;;
  36.     *)
  37.       echo "Usage: php-fastcgi {start|stop|restart}"
  38.       exit 1
  39.   ;;
  40. esac
  41. exit $RETVAL
加上执行权限: chmod +x /etc/init.d/php-fastcgi 跑跑看: /etc/init.d/php-fastcgi start 都没问题的话: update-rc.d php-fastcgi defaults 大功告成。 改nginx配置:(/etc/nginx/nginx.conf) 加上类似这样的东西:
server {
        listen          80;
        server_name     example.com;

        access_log      /var/log/nginx/example.com.access_log;
        error_log       /var/log/nginx/example.com.error_log warn;

        root            /var/www/example.com/public;

        index           index.php index.html;
        fastcgi_index   index.php;

        location ~ \.php {
                include /etc/nginx/fastcgi_params;
                keepalive_timeout 0;
                fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                fastcgi_pass    127.0.0.1:9000;
        }
}

ok,一切完成。

参考文章:
http://tomasz.sterna.tv/2009/04/php-fastcgi-with-nginx-on-ubuntu/
http://wiki.nginx.org/NginxHttpFcgiModule
——————————补充———————————— 有关权限,原来用apache的时候只要再httpd.conf里面改user和group就可以控制启动服务的用户和组了。 但是,用nginx+fastcgi的时候,需要改2个地方,nginx的那个都能想到,另外就是上面那段/etc/init.d/php-fastcgi脚本开头的,user也要改,我今天就忘记改了,被妖了半天,杯具。。。

貓熊寶寶幼齒園

姜經緯的博客