Назад | Перейти на главную страницу

Несколько сайтов magento, работающих под разными пользователями в nginx

Я написал сценарий, который копирует файлы и базу данных 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;
 }

Я получаю сообщение об ошибке, потому что upsteam fastcgi_backend уже определен. Я прочитал документацию nginx для восходящего потока, и в нем говорится, что это пул серверов, но я действительно не понимаю, что здесь происходит, чтобы указать восходящий поток, подобный этому, для передачи запросов php.

Что я делаю не так? Как мне настроить несколько сайтов magento на поддоменах, работающих под разными пользователями?

Как я это исправил:

Я переименовал восходящий поток, но не осознавал, что имя восходящего потока используется в proxy_pass. Вам нужно отредактировать proxy_pass в nginx.conf.sample в корне Magento.

Вот как я настроил несколько пулов с помощью Nginx и PHP 5.6. Я не использую пути, я использую сокеты. Я немного отредактировал свои файлы, чтобы сделать их более общими, поэтому, если что-то не подходит, предполагайте, что это опечатка.

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

Вот соответствующие части моих блоков местоположения 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;
}