如何设置Nginx和PHP-FPM套接字

时间:2017-09-15 12:56:37

标签: php sockets amazon-web-services nginx

我已经接管了公司的网络托管服务,这是一个运行亚马逊自己的Linux和Nginx版本的AWS服务器。

我没有太多Nginx的经验,但我需要创建一个运行该站点开发版本的子域。已经存在" Staging"虚拟主机,但它链接到主站点数据库使无用。

我已将staging conf文件从 /etc/nginx/conf.d/staging.conf 复制到 /etc/nginx/conf.d/dev.conf 并改变了" staging"的所有实例。在#34; dev"。

的文件中

这就是文件的样子:

upstream php-dev-backend {
    server unix:/tmp/php-fpm-dev.sock weight=1;
}

server {
    server_name dev.groundlevel.co.uk;
    listen 80;

    root /var/www/vhosts/dev.groundlevel.co.uk/web-root;

    index index.html index.htm index.php;
    access_log /var/log/nginx/dev.groundlevel.co.uk_access_log;
    error_log /var/log/nginx/dev.groundlevel.co.uk_error_log;
    location @handler {
        rewrite / /index.php;
    }
location / {
        index index.php index.html;
        try_files $uri $uri/ @handler;
        expires 30d;
    }

include magento_security;

include fastcgi_params;
location ~ \.php$ {
        if (!-e $request_filename) {
             rewrite / /index.php last;
        }
        include fastcgi_params;
        fastcgi_pass php-dev-backend;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    }
}

然而,这导致502错误,因为/tmp/php-fpm-dev.sock不存在,我不知道如何创建它。或者,如果我可以将conf文件更改为不需要套接字。

有人可以解释如何让套接字运行吗?谢谢!

1 个答案:

答案 0 :(得分:1)

每当PHP-FPM服务启动时,都应该创建/tmp/php-fpm-dev.sock套接字 - 如果它被配置为侦听此套接字。

如果php-fpm已在此服务器上运行'staging'站点,那么您可能只需重新使用该套接字即可。 FPM作为单个实例运行,因此除非您在'dev'和'staging'之间需要不同的配置,否则不需要运行单独的套接字。

'staging'网站是否正常运行? 如果是这样,它在/etc/nginx/conf.d/staging.conf中连接到什么fpm套接字?

您可能还想从PHP-FPM配置发布相关的套接字配置。它应该在/ etc / php中的某个地方??? 具体而言,您正在寻找的是FPM在启动时打开的套接字:

 [DOMAINNAME]

 listen = /var/run/php5-fpm/DOMAINNAME.socket <-- socket being opened
 listen.backlog = -1
 listen.owner = nginx
 listen.group = www-data
 listen.mode=0660