Nginx+FastCGI+PHP
以前,一般都是在Apache上跑Php,配置:
折叠复制代码
- LoadModule php5_module modules/libphp5.so
- AddType application/x-httpd-php .php
我们现在的webserver基本都转向Nginx了,可以通过Fastcgi来跑php脚本
编译php如下:
折叠复制代码
- #编译php,注意需要--enable-fastcgi
- ./configure --prefix=/usr/local/php --enable-sockets --with-config-file-scan-dir=/opt/work/conf/ --with-config-file-path=/opt/work/conf/php.ini --with-mysql=/usr/local/mysql --with-gd=/usr/local/php/gd --with-freetype-dir=/usr/local/php/freetype --with-jpeg-dir=/usr/local/php/jpeg --enable-gd-native-ttf --enable-mbstring --with-png-dir=/usr/local/php/libpng --enable-safe-mode --enable-fastcgi
下载一个spawn-fcgi,使用它来管理php的fastcgi进程
启动脚本:
折叠复制代码
- pgrep -f php-cgi | xargs kill -9
- sleep 2
- /opt/work/sbin/spawn-fcgi -a 127.0.0.1 -p 9000 -u nobody -f /usr/local/php/bin/php-cgi
- ps -ef | grep php-cgi
配置Nginx:
折叠复制代码
- # 配置Nginx
- location ~ .*.(php|php5)?$
- {
- root /opt/work/html;
- fastcgi_pass 127.0.0.1:9000;
- fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
- fastcgi_index index.php;
- include /opt/work/conf/fastcgi_params;
- }
注意:需要有fastcgi_param SCRIPT_FILENAME这个配置,php的fastcgi使用它来确定脚本的路径,否则访问nginx会报:
<No input file specified
/span>