我已经接管了公司的网络托管服务,这是一个运行亚马逊自己的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文件更改为不需要套接字。
有人可以解释如何让套接字运行吗?谢谢!
答案 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