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