NginxPHP的组合主要是通过Fastcgi通信,通信方式主要有两种:一种是TCP,一种是unix socket

NginxPHP部署在不同机器上选择第一种,部署在同一台机器上可以选择第二种。

PHP-FPMPHP端的 Fastcgi的一种实现。

安装

Nginx 的安装:https://tech1024.com/original/3024

PHP 的安装:https://tech1024.com/original/2984

假设站点目录为 /wwwroot/example.com/ ,创建站点文件 /wwwroot/example.com/public/index.php

<?php
echo phpinfo();

TCP配置方式

检查 PHP-FPM 的站点配置文件 /usr/local/php/etc/php-fpm.d/www.conflisten 的值是否为ip+端口的形式:

listen = 127.0.0.1:9000

如果修改了使用 service php-fpm restart 使其生效。

Nginx 配置文件 /usr/local/nginx/conf/nginx.conf 中的 http 节点内添加站点:

    server {
        listen       80;
        server_name  example.com;
        root /wwwroot/example.com/public;
        index index.html index.htm index.php;

        location ~ \.php$ {                     
            # TCP,ip+端口的通信方式
            fastcgi_pass   127.0.0.1:9000; 
            fastcgi_index  index.php;
            include        fastcgi.conf;
        }
    }

重载 Nginx 使配置生效:

service nginx reload

如果没有报错,绑定好 host ,访问 http://example.com/ 就可以看到 phpinfo 的页面了。

unix socket 配置方式

nix socket*nix 系统进程间通信(IPC)的一种被广泛采用方式,以文件(一般是.sock)作为socket的唯一标识(描述符),需要通信的两个进程引用同一个socket描述符文件就可以建立通道进行通信了。

先修改 PHP-FPM 的站点配置文件 /usr/local/php/etc/php-fpm.d/www.conf中 以下三个值:

listen = /tmp/php-cgi.sock

listen.owner = www
listen.group = www

使用 service php-fpm restart 使其生效。

Nginx 配置文件 /usr/local/nginx/conf/nginx.conf 中的 http 节点内添加站点:

    server {
        listen       80;
        server_name  example.com;
        root /wwwroot/example.com/public;
        index index.html index.htm index.php;

        location ~ \.php$ {                     
            # TCP,ip+端口的通信方式
            # fastcgi_pass   127.0.0.1:9000; 
            #  unix socket 方式
            fastcgi_pass unix:/tmp/php-cgi.sock;

            fastcgi_index  index.php;
            include        fastcgi.conf;
        }
    }

重载 Nginx 使配置生效:

service nginx reload

如果没有报错,绑定好 host ,访问 http://example.com/ 就可以看到 phpinfo 的页面了。 如果网络不通可以尝试防火墙添加端口或者关闭防火墙 service firewalld stop