Nginxで複数のweb サイトを設定する
私たちは、次のことを想定しています。
-
開発用マシン(ラップトップ、仮想マシンなど)で作業している。
ホスト環境に複数のweb サイトをデプロイするには、追加のタスクが必要になる場合があります。詳しくは、ホスティングプロバイダーを確認してください。
クラウドインフラストラクチャでAdobe Commerceを設定するには、追加のタスクが必要です。 このトピックで説明したタスクを完了したら、Commerce on Cloud Infrastructure ガイドの「複数のweb サイトまたはストアを設定する」を参照してください。
-
1つの仮想ホストファイルで複数のドメインを受け入れるか、web サイトごとに1つの仮想ホストを使用します。仮想ホスト設定ファイルは
/etc/nginx/sites-availableにあります。 -
Commerceが提供する
nginx.conf.sampleを、このチュートリアルで説明した変更のみを使用します。 -
Commerce ソフトウェアが
/var/www/html/magento2にインストールされています。 -
デフォルト以外に2つのWeb サイトがあります。
french.mysite.mg(web サイト コードfrenchおよびストアビューコードfr)german.mysite.mg(web サイト コードgermanおよびストアビューコードde)mysite.mgは既定のweb サイトと既定のストアビューです
以下は、nginxを使用して複数のweb サイトを設定するためのロードマップです。
-
Nginx バーチャルホスト を作成して、多数のWeb サイトまたは1つのNginx バーチャルホストをCommerce web サイトごとにマッピングします(以下の手順を参照)。
-
Magentoが提供する
nginx.conf.sampleを使用して、MAGE変数$MAGE_RUN_TYPEおよび$MAGE_RUN_CODEの値をnginxに渡します(以下で説明する手順)。-
$MAGE_RUN_TYPEはstoreまたはwebsiteのいずれかです:websiteを使用して、ストアフロントにweb サイトを読み込みます。storeを使用して、ストアフロントの任意のストアビューを読み込みます。
-
$MAGE_RUN_CODEは、$MAGE_RUN_TYPEに対応する一意のweb サイトまたはストアビューコードです。
-
-
Commerce管理者のBase URL設定を更新します。
手順1:管理画面でweb サイト、ストアビュー、ストアビューを作成する
管理者で複数のweb サイト、ストア、ストアビューを設定するを参照してください。
手順2:nginx仮想ホストの作成
このステップでは、ストアフロントにweb サイトを読み込む方法について説明します。 Web サイトまたはストアビューのいずれかを使用できます。ストアビューを使用する場合は、それに応じてパラメーター値を調整する必要があります。 このセクションのタスクは、sudo権限を持つユーザーとして完了する必要があります。
1つのnginx仮想ホストファイル のみを使用することで、nginx設定をシンプルかつクリーンに保つことができます。 複数の仮想ホストファイルを使用すると、各ストアをカスタマイズできます(例えば、french.mysite.mgのカスタム場所を使用する)。
1つの仮想ホストを作成するには (簡略化):
この設定は、nginx設定に拡張されます。
-
テキストエディターを開き、次の内容を
/etc/nginx/sites-available/magentoという名前の新しいファイルに追加します。code language-conf map $http_host $MAGE_RUN_CODE { default ''; french.mysite.mg french; german.mysite.mg german; } server { listen 80; server_name mysite.mg french.mysite.mg german.mysite.mg; set $MAGE_ROOT /var/www/html/magento2; set $MAGE_MODE developer; set $MAGE_RUN_TYPE website; #or set $MAGE_RUN_TYPE store; include /var/www/html/magento2/nginx.conf; } -
ファイルに変更を保存し、テキストエディターを終了します。
-
サーバー設定を確認します。
code language-shell nginx -t -
成功すると、次のメッセージが表示されます。
code language-yaml nginx: configuration file /etc/nginx/nginx.conf test is successfulエラーが表示される場合は、仮想ホスト設定ファイルの構文を確認します。
-
/etc/nginx/sites-enabledディレクトリにシンボリックリンクを作成します。code language-shell cd /etc/nginx/sites-enabledcode language-shell ln -s /etc/nginx/sites-available/magento magento
マップディレクティブについて詳しくは、マップディレクティブ 🔗のnginx ドキュメントを参照してください。
複数の仮想ホストを作成するには:
-
テキストエディターを開き、次の内容を
/etc/nginx/sites-available/french.mysite.mgという名前の新しいファイルに追加します。code language-conf server { listen 80; server_name french.mysite.mg; set $MAGE_ROOT /var/www/html/magento2; set $MAGE_MODE developer; set $MAGE_RUN_TYPE website; #or set $MAGE_RUN_TYPE store; set $MAGE_RUN_CODE french; include /var/www/html/magento2/nginx.conf; } -
同じディレクトリに次の内容を持つ
german.mysite.mgという名前の別のファイルを作成します。code language-conf server { listen 80; server_name german.mysite.mg; set $MAGE_ROOT /var/www/html/magento2; set $MAGE_MODE developer; set $MAGE_RUN_TYPE website; #or set $MAGE_RUN_TYPE store; set $MAGE_RUN_CODE german; include /var/www/html/magento2/nginx.conf; } -
ファイルに変更を保存し、テキストエディターを終了します。
-
サーバー設定を確認します。
code language-shell nginx -t -
成功すると、次のメッセージが表示されます。
code language-yaml nginx: configuration file /etc/nginx/nginx.conf test is successfulエラーが表示される場合は、仮想ホスト設定ファイルの構文を確認します。
-
/etc/nginx/sites-enabledディレクトリにシンボリックリンクを作成します。code language-shell cd /etc/nginx/sites-enabledcode language-shell ln -s /etc/nginx/sites-available/french.mysite.mg french.mysite.mgcode language-shell ln -s /etc/nginx/sites-available/german.mysite.mg german.mysite.mg
手順3:nginx.conf.sampleの変更
nginx.conf.sample ファイルは編集しないでください。新しいリリースのたびに更新されるコア Commerce ファイルです。 代わりに、nginx.conf.sample ファイルをコピーし、名前を変更してから、コピーしたファイルを編集します。メインアプリケーションのPHP エントリポイントを編集するには:
nginx.conf.sample ファイルを変更するには、**の手順を実行します。
-
テキストエディターを開き、
nginx.conf.sampleファイル、<magento2_installation_directory>/nginx.conf.sampleを確認します。 次のセクションを探します。code language-conf # PHP entry point for main application location ~ (index|get|static|report|404|503|health_check)\.php$ { try_files $uri =404; fastcgi_pass fastcgi_backend; fastcgi_buffers 1024 4k; fastcgi_param PHP_FLAG "session.auto_start=off \n suhosin.session.cryptua=off"; fastcgi_param PHP_VALUE "memory_limit=1G \n max_execution_time=18000"; fastcgi_read_timeout 600s; fastcgi_connect_timeout 600s; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } -
include ステートメントの前に、次の2行で
nginx.conf.sampleファイルを更新します。code language-conf fastcgi_param MAGE_RUN_TYPE $MAGE_RUN_TYPE; fastcgi_param MAGE_RUN_CODE $MAGE_RUN_CODE;
メインアプリケーションの更新されたPHP エントリポイントの例は次のようになります。
# PHP entry point for main application
location ~ (index|get|static|report|404|503|health_check)\.php$ {
try_files $uri =404;
fastcgi_pass fastcgi_backend;
fastcgi_buffers 1024 4k;
fastcgi_param PHP_FLAG "session.auto_start=off \n suhosin.session.cryptua=off";
fastcgi_param PHP_VALUE "memory_limit=1G \n max_execution_time=18000";
fastcgi_read_timeout 600s;
fastcgi_connect_timeout 600s;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# START - Multisite customization
fastcgi_param MAGE_RUN_TYPE $MAGE_RUN_TYPE;
fastcgi_param MAGE_RUN_CODE $MAGE_RUN_CODE;
# END - Multisite customization
include fastcgi_params;
}
手順4:基本URL設定の更新
Commerce管理者のfrenchおよびgerman Web サイトのベース URLを更新する必要があります。
フランス語Web サイトのベース URLを更新
- Commerce管理者にログインし、Stores > Settings > Configuration > General > Webに移動します。
- 構成範囲を
frenchweb サイトに変更します。 - Base URL セクションを展開し、Base URLと Base Link URL の値を
http://french.magento24.com/に更新します。 - Base URL (Secure) セクションを展開し、Secure Base URLと Secure Base Link URL の値を
https://french.magento24.com/に更新します。 - 「設定を保存」をクリックし、設定の変更を保存します。
ドイツ語Web サイトのベース URLを更新
- Commerce管理者にログインし、Stores > Settings > Configuration > General > Webに移動します。
- 構成範囲を
germanweb サイトに変更します。 - Base URL セクションを展開し、Base URLと Base Link URL の値を
http://german.magento24.com/に更新します。 - Base URL (Secure) セクションを展開し、Secure Base URLと Secure Base Link URL の値を
https://german.magento24.com/に更新します。 - 「設定を保存」をクリックし、設定の変更を保存します。
キャッシュのクリーニング
次のコマンドを実行して、configおよびfull_page キャッシュをクリーンアップします。
bin/magento cache:clean config full_page
サイトの確認
ストアのURLにDNSを設定していない限り、hosts ファイルのホストに静的ルートを追加する必要があります。
-
オペレーティング システム
hostsファイルを探します。 -
静的ルートを次の形式で追加します。
code language-conf <ip-address> french.mysite.mg <ip-address> german.mysite.mg -
ブラウザーで次のいずれかのURLに移動します。
code language-http http://mysite.mg/admin http://french.mysite.mg/frenchstoreview http://german.mysite.mg/germanstoreview
- ホスト環境に複数のweb サイトをデプロイするには、追加のタスクが必要になる場合があります。詳しくは、ホスティングプロバイダーを確認してください。
- クラウドインフラストラクチャ上にAdobe Commerceを設定するには、追加のタスクが必要です。クラウドインフラストラクチャ上のCommerce ガイドの複数のクラウドウェブサイトまたはストアの設定を参照してください。
トラブルシューティング
- フランス語とドイツ語のサイトで404が返され、管理者が読み込まれる場合は、手順6: ストア コードをベース URLに追加してください。
- すべてのURLが404を返す場合は、必ずweb サーバーを再起動してください。
- 管理者が正しく機能しない場合は、仮想ホストを適切に設定してください。