Múltiplos sites magento rodando sob diferentes usuários no nginx

2

Eu escrevi um script que copia arquivos magento e banco de dados do nosso servidor de produção e tenta configurá-lo em um subdomínio em nosso servidor de testes.

Cada site de teste tem: - subdomínio exclusivo - rodando sob usuário único especificado em php-fpm pool

Aqui está a configuração do pool do php-fpm:

[test1]
user = test1
group = test1
listen = /run/php/php7.0-test1-fpm.sock
listen.owner = www-data
listen.group = www-data

Então, eu configuraria os sites subsequentes com diferentes usuários, assim:

[test2]
user = test2
group = test2
listen = /run/php/php7.0-test2-fpm.sock
listen.owner = www-data
listen.group = www-data

O problema surge quando tento duplicar o bloco do servidor magento nginx (versão abreviada colada abaixo):

 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;
 }

Se eu duplicar a configuração da seguinte forma:

 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;
 }

Eu recebo erro porque o upsteam fastcgi_backend já está definido. Eu li a documentação do nginx para o upstream e ele diz que é um pool de servidores, mas eu realmente não entendo o que está acontecendo aqui para especificar o upstream como este para entregar solicitações php.

O que estou fazendo de errado? Como devo configurar vários sites magento em subdomínios sendo executados em diferentes usuários?

Como consertei:

Eu renomeiei o upstream, mas não percebi que o nome do upstream é usado no proxy_pass. Você tem que editar o proxy_pass em nginx.conf.sample no magento root.

    
por Guerrilla 21.12.2017 / 00:32

1 resposta

1

Veja como eu configurei vários pools usando Nginx e PHP 5.6. Eu não uso caminhos, eu uso soquetes. Eu editei um pouco meus arquivos para torná-los mais genéricos, então, se algo não corresponde, suponha que seja um erro de digitação.

/etc/php-fpm-5.6.d/pool1

[pool1]
listen = 127.0.0.1:9000

/etc/php-fpm-5.6.d/pool2

[pool2]
listen = 127.0.0.1:9001

/etc/nginx/upstreams.conf

upstream php56-pool1 {
  server 127.0.0.1:9000;
}

upstream php56-pool2 {
  server 127.0.0.1:9001;

}

Aqui estão partes relevantes dos meus blocos de localização do Nginx.

/etc/nginx/site1.conf

location ~ \.php$ {
  fastcgi_pass   php56-pool1
  include        fastcgi_params;
  fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
  fastcgi_index index.php;
}

/etc/nginx/site2.conf

location ~ php$ {
  fastcgi_pass php56-pool2;
  include        fastcgi_params;
  fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
  }
    
por 21.12.2017 / 00:40

Tags