如何为 php-5.3.3 设置 unix 套接字

如何为 php-5.3.3 设置 unix 套接字

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

您可以通过多种方式在 CentOS 上安装 FPM:

  1. 您可以安装其他存储库并从中安装 php-fpm 包(例如,它描述这里
  2. 或者你可以从源代码安装 php-fpm(所有步骤均已提供这里,但这个博客是俄语的,所以你必须使用谷歌翻译)。

答案3

端口 9000 需要连接到 php-fpm 守护进程。听起来好像 php-fpm 尚未启动。

检查您的 ps 列表,看看 php-fpm 是否存在。另外,您提到了“套接字”。PHP fpm 支持 unix 套接字,但设置与 TCP 不同。

相关内容