日志说,Nginx给坏的网关
*205 connect() failed (111: Connection refused) while connecting to upstream
果然,9000sockets没有打开。
问题是:我不知道如何打开这个端口。 其他问题解决了这个问题的PHP-FPM,build议使用unix套接字。 然而这在这里似乎并不适用,因为php-5.3.3没有php-fpm.conf。
我使用的是5.3。
你可以安装包含php 5.3.x和php-fpm的remi repo,并允许你维护包pipe理器中的所有内容。 我已经使用这个回购CentOS版本5.7一直到6.3。 您可以通过此处提供的说明编译php-fpm,并按照iniconfiguration的说明进行操作,但是我发现它们非常复杂,难以维护,因为它们不在包pipe理之列。
Enterprise Linux 5(带EPEL)
wget http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm wget http://rpms.famillecollet.com/enterprise/remi-release-5.rpm rpm -Uvh remi-release-5*.rpm epel-release-5*.rpm
Enterprise Linux 6(带EPEL)
wget http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-7.noarch.rpm wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm
一旦你有这个回购安装,你将能够search回购,所以你可以find你需要的任何PHP。
[root@puppetmaster ~]# yum list php.x86_64 --enablerepo=remi Loaded plugins: fastestmirror, presto Loading mirror speeds from cached hostfile * base: centos.mirrors.chicagovps.net * epel: mirror.steadfast.net * extras: mirror.steadfast.net * remi: remi-mirror.dedipower.com * updates: centos.mirrors.chicagovps.net Available Packages php.x86_64 5.3.18-1.el6.remi remi [root@puppetmaster ~]# yum list php-fpm --enablerepo=remi Loaded plugins: fastestmirror, presto Loading mirror speeds from cached hostfile * base: yum.singlehop.com * epel: mirror.steadfast.net * extras: mirror.steadfast.net * remi: remirpm.mirror.gymkl.ch * updates: mirror.steadfast.net Available Packages php-fpm.x86_64 5.3.18-1.el6.remi remi
你不仅可以search任何可能需要退出回购的东西,无论是mbstring,mcrypt,mysql,mysqlnd。
一旦你把所有的东西都安装好了,你就可以像开始任何其他服务一样简单地启动php-fpm。
[root@puppetmaster ~]# service php-fpm start Starting php-fpm: [ OK ]
你将需要configurationnginx来知道上游是什么,这可以通过configuration的http {}级别内的nginx.conf完成,默认情况下,php-fpm将启动使用端口9000
[root@puppetmaster ~]# netstat -na | grep 9000 tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN
你可以通过编辑你的[something]池来改变你的池的创build方式。
; The address on which to accept FastCGI requests. ; Valid syntaxes are: ; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific address on ; a specific port; ; 'port' - to listen on a TCP socket to all addresses on a ; specific port; ; '/path/to/unix/socket' - to listen on a unix socket. ; Note: This value is mandatory. listen = 127.0.0.1:9000
以下允许您创build一个别名,您可以使用它来简化configuration的可读性。
upstream base_backend { #server unix:/var/run/php-fpm.sock; server 127.0.0.1:9000; }
您可以将您的PHP脚本引导到您的服务器级别的configuration中,以便php-fpm将实际执行它们。
location ~ \.php$ { ## Execute PHP scripts expires off; ## Do not cache dynamic content fastcgi_pass base_backend; fastcgi_param HTTPS $fastcgi_https; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; ## See /etc/nginx/fastcgi_params }
您可以通过以下几种方式在CentOS上安装FPM:
端口9000需要连接到一个php-fpm守护进程。 听起来像php-fpm没有启动。
检查你的ps列表,看看是否有php-fpm。 另外,你提到一个“套接字”。 PHP fpm支持unix套接字,但设置不同于TCP。