Nginx 给出 502 网关错误,日志显示
*205 connect() failed (111: Connection refused) while connecting to upstream
果然,9000 套接字没有打开。
问题是:我不知道如何打开这个端口。其他问题针对 php-fpm 解决了这个问题,建议使用 unix 套接字。但这似乎不适用于此处,因为没有适用于 php-5.3.3 的 php-fpm.conf。
我正在使用 centos 5.3。
答案1
您可以安装雷米repo 包含 php 5.3.x 和 php-fpm,并允许您在包管理器中维护所有内容。我已经将此 repo 用于 CentOS 版本 5.7 到 6.3。您可以通过提供的说明编译 php-fpm这里并按照 ini 配置的说明进行操作这里,但我发现它们非常复杂,并且难以维护,因为它们不在包管理范围内。
企业版 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
一旦安装了这个 repo,您将能够搜索该 repo,以便找到所需的任何 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
您可以搜索需要从 repo 中获取的任何内容,无论是 mbstring、mcrypt、mysql 还是 mysqlnd。
一旦您按照自己的意愿安装了所有内容,您就可以像启动任何其他服务一样简单地启动 php-fpm。
[root@puppetmaster ~]# service php-fpm start
Starting php-fpm: [ OK ]
您需要配置 nginx 以了解上游是什么,这可以通过配置的 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
您可以通过编辑 [某物] 池来更改池的创建方式,以反映类似这样的内容。
; 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
下面允许您创建一个别名,您可以使用它来简化配置的可读性。
upstream base_backend {
#server unix:/var/run/php-fpm.sock;
server 127.0.0.1:9000;
}
您可以将 PHP 脚本直接放到服务器 {} 级别的配置中,以便 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
}
答案2
答案3
端口 9000 需要连接到 php-fpm 守护进程。听起来好像 php-fpm 尚未启动。
检查您的 ps 列表,看看 php-fpm 是否存在。另外,您提到了“套接字”。PHP fpm 支持 unix 套接字,但设置与 TCP 不同。