nginx支持php配置
配置php-fpm
php版本
php-5.2.13
php-fpm版本
php-5.2.13-fpm-0.5.13.diff.gz
编译php前先加载补丁
如果不加不定,直接编译
./configure--prefix=/usr/local/php --enable-fastcgi--enable-fpm
会出现
Notice: Following unknown configureoptions were used:
--enable-fpm
因为找不到fpm。
高版本的php源码中直接带有fpm,不需要再当做不定安装了。
[root@localhost local]#tar zxvf php-5.2.13.tar.gz
[root@localhost local]#gzip -cd php-5.2.13-fpm-0.5.13.diff.gz | patch -d php-5.2.13 -p1
[root@localhost local]#cd php-5.2.13
[root@localhost php-5.2.13]#./configure --prefix=/usr/local/php --enable-fastcgi --enable-fpm
[root@localhost php-5.2.13]#make
[root@localhost php-5.2.13]#make install
[root@localhost php-5.2.13]cp php.ini-dist /usr/local/php/lib/php.ini
启动php-fpm遇到的错误
Starting php_fpm Sep 26 01:19:16.829544 [ERROR]fpm_unix_conf_wp(), line 124: please specify user and group other than root,pool 'default'
................................... failed
配置文件php-fpm.conf中
将这两行的注释去掉。
启动php-fpm
./php-fpm后面的参数
start,启动PHP的FastCGI进程。
stop,强制终止PHP的FastCGI进程。
quit,平滑终止PHP的FastCGI进程。
restart,重启PHP的FastCGI进程。
reload,重新加载PHP的php.ini。
logrotate,重新启用log文件。
到php高版本中,fpm就没有这些参数了,很奇怪
php-fpm启动成功后,查看进程。
nginx配置
开启php支持
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
主要是红线部分。
红线部分,开始默认的是:
fastcgi_paramSCRIPT_FILENAME /scripts$fastcgi_script_name;
我开始将/script修改成html,但是不行,在访问phpinfo.php的页面的时候,出现:no input file specified错误。说明nginx根本找不到php文件。
具体也不知道怎么配置,后来网上查询了一下,修改为$document_root就可以了。(所以这个地方还不太明白)
php 5.5
开始从网上看的资料都是php5.2版本的。确实也看到了高版本的php已经将php-fpm引擎直接放进源码中,但是没有找到高版本的安装文档。
以为要跟5.2版本一样
./configure--prefix=/usr/local/php --enable-fastcgi--enable-fpm
编译的是发现:
configure: WARNING: unrecognizedoptions: --enable-fastcgi
不识别-enable-fastcgi参数。
其实高版本的根本不需要这个参数,fpm模块已经包含fastcgi了。
所以只需要:
./configure--prefix=/usr/local/php --enable-fpm
安装好后,除了拷贝php.ini文件,还需要拷贝php-fpm.conf文件
该文件的目录在:
/data/php-5.5.3/sapi/fpm/php-fpm.conf
直接到/usr/local/php/sbin目录下
./php-fpm启动fpm。
fpm的启动进程:
[root@piter-shuhui html]# ps -ef |grep fpm
root757 1 0 05:43 ? 00:00:00 php-fpm: master process(/usr/local/php/etc/php-fpm.conf)
nobody758 757 0 05:43 ? 00:00:02 php-fpm: pool www
nobody759 757 0 05:43 ? 00:00:02 php-fpm: pool www
nobody795 757 0 05:44 ? 00:00:01 php-fpm: pool www
root812 13948 0 05:52 pts/3 00:00:00 grep fpm