Drupal 8マルチサイト
次のガイドでは、Drupal 8マルチサイトの設定に必要な手順を説明します。このガイドは開発中であり、いくつかの設定例のみを紹介しています。HTTPS、他のウェブサーバーとデータベース、より高度なバーチャルホスト設定など、他のオプションも利用できます。
ただし、Aegirホスティングシステムを使用することをお勧めします。Aegirは、ApacheとNginxのバーチャルホストの自動設定、HTTPSサポートの追加、Composerコマンドの実行など、安全なベストプラクティスを使用してすべての重労働を代行します。「プラットフォーム」の設定に関するドキュメントを参照してください。Aegir用語では、これはマルチサイトコードベースを意味します。
プロセスの概要:
1. マルチサイトインスタンスのルートサイトとして機能するDrupal 8インスタンスをインストールします。この例では、ルートサイトはd8multisiteという名前で、d8multisite.comでアクセスでき、/var/www/d8multisiteにインストールされます。
2. site1.d8multisite.comでアクセスできるsite1という名前のサイトをマルチサイトに作成します
3. ルートサイトの外部に独自のモジュールを持つようにsite1を設定します。
ステップ1:マスターサイトの作成
プロセスを開始するには、サーバーにDrupal 8のコピーをインストールします。よく知らない場合は、Drupal 8のインストールドキュメントをお読みください。
この例では、次の手順でDrupalをインストールします:
1.1: マルチサイトのルートサイト用のデータベースを作成します。例:d8multisite。
1.2: Drupal 8のコピーをダウンロードしてウェブディレクトリに解凍します。
1.3. ルートサイトのバーチャルホスト定義を作成します。バーチャルホスト設定についてお読みください。Apacheバーチャルホスト設定の例:Nginxについては公式レシピを参照してください。
<VirtualHost *: 80>
# настройка виртуального хоста для многосайтового корневого сайта Drupal 8
ServerAdmin me@domain.com
DocumentRoot / var / www / d8multisite
Имя_сервера d8multisite.com
ServerAlias www.d8multisite.com
<Directory />
Опции FollowSymLinks
AllowOverride Нет
</ Directory>
<Directory / var / www / d8multisite>
Опции Индексы FollowSymLinks MultiViews
AllowOverride All
Заказать разрешить, отказать
Разрешить от всех
</ Directory>
ErrorLog $ {APACHE_LOG_DIR} /d8multisite_error.log
LogLevel предупреждают
CustomLog $ {APACHE_LOG_DIR} /d8multisite_access.log в сочетании
</ VirtualHost>
1.4: d8multisite.comにアクセスしてインストールインターフェースに従い、Drupalをインストールします。
ステップ2:マルチサイト用の最初のサイトを設定する
ルートサイトを設定したので、site1という名前の最初のサイトの設定を始めることができます。このプロセスの手順は次のとおりです:
2.1. マルチサイトにsite1用のフォルダーを作成します:/d8multisite/sites/site1.d8multisite.com
2.2: サイト1用のデータベースを作成します。例:d8multisite_site1
2.3. /d8multisite/sites/example.sites.phpを/d8multisite/sites/sites.phpという名前でコピーします
2.4: ファイルの末尾が次のようになるようにsites.phpを編集します:
# make the root drupal site aware of site1:
$sites['site1.d8multisite.com'] = 'site1.d8multisite.com';
2.5: site1用のバーチャルホストを作成します。このバーチャルホストは、サイトのサブディレクトリではなく、ルートサイトを指す必要があることに注意してください。また、このサイト用に新しいバーチャルホスト設定を作成する代わりに、新しいサイトをルートサイトのServerAliasとして追加するだけでもよいことにも注意してください。ただし、このApacheの例では、site1用に別のバーチャルホストを作成します:
<VirtualHost *:80>
ServerAdmin me@domain.com
DocumentRoot /var/www/d8multisite
ServerName site1.d8multisite.com
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/d8multisite>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/site1-d8multisite_error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/site1-d8multisite_error.log combined
</VirtualHost>
2.6. /d8multisite/sites/default/default.settings.phpを、新しいサイトのディレクトリにsettings.phpとしてコピーします:
#from the drupal root folder
cp sites/default/default.settings.php sites/site1.d8multisite.com/settings.php
2.7: サイトのドメインにアクセスして、site1のDrupalインストールプロセスを完了します。
マルチサイトにサイトを作成するたびに、これらの手順を繰り返すことができます。example.comやsite1.anotherdomain.comなどのドメインを使用することもできます。ドメイン、URL、サイトのサブディレクトリ名の詳細をご覧ください。
ステップ3:サイトごとのモジュールを有効にする
場合によっては、マルチサイト内のサイトの1つに独自のモジュールを持たせたいことがあります。これを有効にするには、ターゲットサイトのフォルダー内に適切なフォルダーを作成するだけです。Drupal 8のマルチサイトフォルダー構造を参照してください。
この例では、site1が独自のモジュールを持てるようにします:
1. site1サブディレクトリに「modules」フォルダーを作成します:/d8multisite/sites/site1.d8multisite.com/modules
2. chown www-data /d8multisite/sites/site1.d8multisite.com/modules を使用して、このフォルダーへのapacheの書き込みアクセスを許可します
3. これを確認してください:
1) site1サブディレクトリの外(つまりルートサイト)に移動して、drush drush dl pathautoでPathautoモジュールをインストールします
2) site1サブディレクトリに移動して、drush drush dl dsでdsモジュールをインストールします
3) 両方のサイトにアクセスして確認します:
- Pathautoが両方のサイトで利用可能
- Display Suiteがsite1でのみ利用可能
注記:テーマ、ライブラリ、ファイルでもこれができると想定されています。ここでは追加のテストとドキュメントが必要です。
マルチサイトでのdrushの使用
-l オプションを使用できます:
drush -l example.com command
またはサイトエイリアス:
drush @alias command
使用されているエイリアスを確認するには、次を実行します:
drush site:alias
その出力の例は次のようになります:
@sub1.dev ':
root: /var/www/mydomain.com/web
uri: «https://sub1.mydomain.com»
@default.dev ':
root: /var/www/mydomain.com/web
uri: «https://sub2.mydomain.com/»
@third.dev ':
root: /var/www/mydomain.com/web
uri: «https://thirddomain.com»
正しいdrushコマンドは次のようになります:
drush @sub1 updb
注記: エイリアスでは「.dev」を使用しません