装完了nginx和php-5.5,配置好了nginx调用php后,就开始启动php-fpm。
使用下面的命令
复制代码 代码如下:
/usr/local/php/sbin/php-fpm
就可以启动了。
在nginx的目录中创建个php的检测脚本index.php
结果在打开
悲剧的发现居然无法打开 。查看日志文件,看了下报错原因
复制代码 代码如下:
2013/07/01 22:34:26 [error] 3214#0: *64 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 192.168.168.19, server: localhost, request: "GET /index.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "192.168.168.140"
查看下端口 。看到php-fpm的9000端口已经打开了,说明php-fpm是没什么问题的,问题出在了nginx上了。可能是我的配置文件有问题。
找到nginx加载php配置的那块。另外参考了下网上nginx的配置文件。
在第69行有一个调用脚本路径
复制代码 代码如下:
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
我把路径改下,改成下面的就可以了。
复制代码 代码如下:
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
可以出现php的版本信息了。
大家还可以参考下面的配置方法
php-fpm不用再依赖其它的fastcgi启动器,比如lighttpd的spawn-fcgi。 php-fpm的使用非常方便,配置都是在php-fpm.ini的文件内 而启动,重启都可以从php/sbin/php-fpm中进行 更方便的是修改php.ini后可以直接使用php-fpm reload进行加载 无需杀掉进程就可以完成php.ini的修改加载 结果显示使用php-fpm可以使php有不小的性能提升 php-fpm控制的进程.cpu回收的速度比较慢.内存分配的很均匀 而spawn-cgi控制的进程CPU下降的很快.而内存分配的比较不均匀. 有很多进程似乎未分配到,而另外一些却占用很高. 可能是由于进程任务分配的不均匀导致的.而这也导致了总体响应速度的下降 而php-fpm合理的分配.导致总体响应的提到以及任务的平均 使用php-fpm需要在php源码上打补丁,然后重新编译php
一.下载php-fpm wget wget 与php-5.2.9在同一级目录 gzip -cd php-5.2.8-fpm-0.5.10.diff.gz | patch -d php-5.2.9 -p1 补丁打好以后,编译php的时候增加了下面几个参数: –enable-fpm 激活fastcgi模式的fpm支持 –with-fpm-conf php-fpm的配置文件(默认是PREFIX/etc/php-fpm.conf) –with-fpm-log php-fpm的日志文件(默认是PREFIX/logs/php-fpm.log) –with-fpm-pid php-fpm的pid文件(默认是PREFIX/logs/php-fpm.pid) ./configure --prefix=/EBS/php \ --with-config-file-path=/EBS/php/etc \ --enable-fastcgi \ --enable-fpm \ --OTHERS 注:--enable-fastcgi \ 需要在--enable-fpm \的前面,否则,fpm不能编译上。
二.编译好php后,修改配置文件
vi /EBS/php/etc/php-fpm.conf 需要注意下面几处配置 <value>127.0.0.1:9000</value> 这个表示php的fastcgi进程监听的ip地址以及端口 <value>nobody</value> <value>nobody</value> 表示php的fastcgi进程以什么用户以及用户组来运行,默认该行是注释掉的,需要打开 <value>0</value> 是否显示php错误信息 <value>5</value> 最大的子进程数目 运行php-fpm: php-fpm用一个程序来控制fastcgi进程,这个文件在$PREFIX/sbin/php-fpm /usr/local/php/sbin/php-fpm 该程序有如下参数: start 启动php的fastcgi进程 stop 强制终止php的fastcgi进程 quit 平滑终止php的fastcgi进程 restart 重启php的fastcgi进程 reload 重新加载php的php.ini logrotate 重新启用log文件 也就是说,在修改了php.ini之后,我们可以使用 /usr/local/php/sbin/php-fpm reload 这样,就保持了在php的fastcgi进程持续运行的状态下,又重新加载了php.ini。
复制代码 代码如下:
user www www; worker_processes 10; error_log logs/error.log notice; pid logs/nginx.pid; #Specifies the value for maximum file descriptors that can be opened by this process. worker_rlimit_nofile 51200; events { use epoll; worker_connections 51200; } http { include mime.types; default_type application/octet-stream; charset gb2312; server_names_hash_bucket_size 128; #sendfile on; #tcp_nopush on; keepalive_timeout 60; tcp_nodelay on; gzip on; gzip_min_length 1k; gzip_buffers 4 8k; gzip_http_version 1.1; gzip_types text/plain application/x-javascript text/css text/html application/xml; { listen 80; server_name 192.168.1.2; index index.html index.htm index.php; root /EBS/www; if (-d $request_filename) { rewrite ^/(.*)([^/])$ $host/$1$2/ permanent; } location ~ .*\.php?$ { include fcgi.conf
fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; } log_format access '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" $http_x_forwarded_for'; access_log logs/access.log access; } }
|
请发表评论