我编写了一个脚本,它从我们的生产服务器复制 magento 文件和数据库,并尝试在我们的测试服务器上的子域上配置它。
每个测试站点都有: - 唯一的子域 - 在 php-fpm 池中指定的唯一用户下运行
这是 php-fpm 池配置:
[test1]
user = test1
group = test1
listen = /run/php/php7.0-test1-fpm.sock
listen.owner = www-data
listen.group = www-data
所以我会在不同的用户下设置后续站点,如下所示:
[test2]
user = test2
group = test2
listen = /run/php/php7.0-test2-fpm.sock
listen.owner = www-data
listen.group = www-data
当我尝试复制magento nginx服务器块时出现问题(下面粘贴的缩写版本):
upstream fastcgi_backend {
server unix:/run/php-fpm/php-test1-fpm.sock;
}
server {
listen 80;
server_name test1.magento-dev.com;
set $MAGE_ROOT /usr/share/nginx/html/test1;
include /usr/share/nginx/html/test1/nginx.conf.sample;
}
如果我像这样复制配置:
upstream fastcgi_backend {
server unix:/run/php-fpm/php-test2-fpm.sock;
}
server {
listen 80;
server_name test2.magento-dev.com;
set $MAGE_ROOT /usr/share/nginx/html/test2;
include /usr/share/nginx/html/test2/nginx.conf.sample;
}
我收到错误,因为 fastcgi_backend upsteam 已经定义。我阅读了上游的 nginx 文档,它说它是一个服务器池,但我真的不明白这里发生了什么来指定这样的上游来传递 php 请求。
我究竟做错了什么?我应该如何在不同用户下运行的子域上设置多个 magento 站点?
我如何修复它:
我重命名了上游,但我没有意识到 proxy_pass 中使用了上游名称。您必须在 magento 根目录下编辑 nginx.conf.sample 中的 proxy_pass。
以下是我使用 Nginx 和 PHP 5.6 设置多个池的方法。我不使用路径,我使用套接字。我稍微编辑了我的文件以使它们更通用,所以如果有任何不匹配的地方假设它是一个错字。
/etc/php-fpm-5.6.d/pool1
/etc/php-fpm-5.6.d/pool2
/etc/nginx/upstreams.conf
这是我的 Nginx 位置块的相关部分。
/etc/nginx/site1.conf
/etc/nginx/site2.conf