看到很多的资料写nginx+php都要用到php-fpm,请问nginx不能直接和php-cgi通信吗?如何配置呢?

seai 2010-10-15 07:56:49
我使用rpm方式安装了php5.3.2,安装后就已经有php和php-cgi,为什么配置nginx还要使用php-fpm等第三方包呢?不使用能否让nginx支持php?
不配置php-fpm,也不配置spawn-fcgi,能让nginx支持php吗,要怎样设置?

还有就是php-cgi支持在命令行执行的时候后会报错:

# php-cgi -b 127.0.0.1:9000
I/O warning : failed to load external entity "/etc/php-fpm.conf"

但在网上搜索很多资料都是说可以直接在命令行使用这条语句。
...全文
1385 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
seai 2010-10-28
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 seai 的回复:]

引用 21 楼 microwindlab 的回复:

PHP5.3.3已经集成php-fpm了,不再是第三方的包了。php-fpm提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置,比spawn-fcgi具有更多有点,所以被PHP官方收录了。你最好用编译式安装PHP,z在./configure的时候带--enable-fpm参数即可开启php-fpm。


……
[/Quote]


终于确定了原因,kill了主进程,即管理进程。。。。。。
microwindlab 2010-10-19
  • 打赏
  • 举报
回复
PHP5.3.3已经集成php-fpm了,不再是第三方的包了。php-fpm提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置,比spawn-fcgi具有更多有点,所以被PHP官方收录了。你最好用编译式安装PHP,z在./configure的时候带--enable-fpm参数即可开启php-fpm。
seai 2010-10-19
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 microwindlab 的回复:]

PHP5.3.3已经集成php-fpm了,不再是第三方的包了。php-fpm提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置,比spawn-fcgi具有更多有点,所以被PHP官方收录了。你最好用编译式安装PHP,z在./configure的时候带--enable-fpm参数即可开启php-fpm。
[/Quote]


意思是说rpm方式安装的php5.3.2所包括的php-cgi文件其实就是php-fpm要求的文件?所以,只需要配置好php-fpm.conf文件就能体会到守护进程带来的好处了?

但我就是没办法测试:kill掉php-cgi的情况下,守护进程自动启动php-cgi!!!
ihefe 2010-10-18
  • 打赏
  • 举报
回复
比如你生成 10 个进程会多出1个进程共11个,进程号最靠前的应该就是主进程,也就是守护进程 。
ihefe 2010-10-18
  • 打赏
  • 举报
回复
要开启至少2个以上的php-cgi进程 , php-fpm才有守护效果,有时间多试试
seai 2010-10-18
  • 打赏
  • 举报
回复
还是没测试出来效果--当进程挂掉是守护进程自动启动进程。。。
ihefe 2010-10-18
  • 打赏
  • 举报
回复
seai 2010-10-18
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 ihefe 的回复:]

比如你生成 10 个进程会多出1个进程共11个,进程号最靠前的应该就是主进程,也就是守护进程 。
[/Quote]


作用就在于:设定的10个进程如果有进程意外挂了,会导致性能下降,但守护进程会自动启动新的进程?
kaifadi 2010-10-17
  • 打赏
  • 举报
回复
没有想到一个安装环境都这么复杂。哎!受教了。
seai 2010-10-17
  • 打赏
  • 举报
回复
补充一下,我使用环境是rhel5+php5.3.2+nginx0.8.52,首先是安装网上大堆的资料说要安装php-fpm,所以我安装好php和nginx后,又安装了php-fpm。都是rpm方式安装的。然后配置好后,启动nginx和php-cgi,然后php页面可以跑起来了。接下来,我开始尝试不要php-fpm的方式,所以我删除了php-fpm包,这个时候发现执行不了php-cgi命令,提示php-fpm.conf文件错误。查看指明的位置中确是没有文件,所以我直接提取php-fpm包中的php-fpm.conf文件进行相应的配置,这时能执行php-cgi命令了。再次访问页面也没问题。

但是整个过程中,不论是否安装了php-fpm,只要kill掉php-cgi,php页面便不能够访问。我实在体会不到各位一直在说的“php-cgi进程管理器”安装与不安装的区别。

且测试过程也证明了,php5.3.2环境,所用的那个php-fpm包无任何作用。我不安装它只需要安装配置要求在目录下建立好php-fpm,就能确保php-cgi的运行,而缺少php-fpm.conf,便不能运行php-cgi。
seai 2010-10-17
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 ihefe 的回复:]

php-fpm没用过 ,我用spawn-fcgi 。

守护也就是当你杀死php-cgi这进程。spawn-fcgi管理器会平滑从新生成新的进程(实验过)

性能方面 , 很多人用php-fpm ,我图方便就用了spawn-fcgi.

直接使用php-cgi,问题挺多。比如进程无辜消失等。
[/Quote]


安装了php-fpm和未安装任何php-cgi进程管理器进行对比,结果都是,只要我kill掉php-cgi进程,php页面便不能再打开。实在没体会到“守护也就是当你杀死php-cgi这进程。spawn-fcgi管理器会平滑从新生成新的进程”这样的情况发生。也就实在没理解为何有必要使用“php-cgi进程管理器(比如:php-fpm或spawn-fcgi)”,盼望有高人在这一点理解上予以指点。
seai 2010-10-16
  • 打赏
  • 举报
回复
配置弄好了,我意思是,nginx与php-cgi通信有3种方式吧?

1、nginx通过php-fpm与php-cgi联系;
2、nginx通过spawn-fcgi与php-cgi联系;
3、直接与php-cgi联系;(当然这个方法我还不理解,甚至不确定有没有这个实现)

他们之间有什么区别?
ihefe 2010-10-16
  • 打赏
  • 举报
回复
php-cgi 是运行php,

php-fpm是守护php-cgi进程


nginx配置目录运行php
location ~ \.php$
{
root /var/www/html;
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
ihefe 2010-10-16
  • 打赏
  • 举报
回复
init.d/php-cgi这个文件要改改 具体网上找找


先试试html文件。 在试试php

nginx 这样就可以跑php:
location ~ \.php
{
root /var/www/html;
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}


ihefe 2010-10-16
  • 打赏
  • 举报
回复
php-fpm没用过 ,我用spawn-fcgi 。

守护也就是当你杀死php-cgi这进程。spawn-fcgi管理器会平滑从新生成新的进程(实验过)

性能方面 , 很多人用php-fpm ,我图方便就用了spawn-fcgi.

直接使用php-cgi,问题挺多。比如进程无辜消失等。

seai 2010-10-16
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 ihefe 的回复:]

php-fpm,pawn-fcgi 都是守护php-cgi 进程管理器.

直接与php-cgi联系;这样当你杀死这个进程 php就不能运行

[/Quote]

那就是说确实有直接通信这一方式?怎样配置呢?

另外这采用守护php-cgi进程管理器的方式,不是一样存在杀死守护进程管理器,php就不能运行的问题吗?

这三种方式,那种性能最好 ,那种可靠性最高?
ihefe 2010-10-16
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 ihefe 的回复:]

php-cgi 是运行php,

php-fpm是守护php-cgi进程


nginx配置目录运行php
location ~ \.php$
{
root /var/www/html;
fastcgi_index index.php;
fastc……
[/Quote]



php-fpm,pawn-fcgi 都是守护php-cgi 进程管理器.

直接与php-cgi联系;这样当你杀死这个进程 php就不能运行
seai 2010-10-15
  • 打赏
  • 举报
回复
我的意思是:php 5.3.2 rpm安装好后,就已经有一个php-cgi了,但这个php-cgi不能进行deamo运行
# php-cgi -b 127.0.0.1:9000
I/O warning : failed to load external entity "/etc/php-fpm.conf"
那么这个php包中的php-cgi程序有何作用?

另外通过查看资料,安装nginx的php支持,都需要另外安装php-fpm
安装了php-fpm后,php-cgi这个程序便能够进行deamo运行了,那么它与原来的php-cgi有什么区别?不是同一个程序吗?

我在rhel5.5+php5.3.2环境配置。

补充一个新问题,我将网站根目录指定为“root /var/www/html;”,然后这样设置“fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;”,但浏览页面时提示“No input file specified.”。
fxs_2008 2010-10-15
  • 打赏
  • 举报
回复
nginx本身不支持php
seai 2010-10-15
  • 打赏
  • 举报
回复
补充一个新问题,我将网站根目录指定为“root /var/www/html;”,然后这样设置“fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;”,但浏览页面时提示“No input file specified.”。
加载更多回复(3)

21,882

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧