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