Drupal 8 マルチサイト
以下のガイドでは、Drupal 8マルチサイトをセットアップするために必要な手順について説明します。このガイドは開発段階にあり、いくつかの設定例のみが提示されています。HTTPS、その他のWebサーバーとデータベース、より高度な仮想ホスト設定など、その他のオプションがあります。
ただし、Aegirホスティングシステムを使用することが推奨されます。これはセキュアなベストプラクティスを含むすべての重労働を行い、ApacheとNginxの自動仮想ホスト設定、HTTPS対応の追加、Composerコマンドの実行などを行います。「プラットフォーム」設定ドキュメントを参照してください。これはAegirの用語でマルチサイトコードベースを意味します。
プロセス概要:
1. Drupal 8インスタンスをインストールします。これは、マルチサイトインスタンスのルートサイトとして機能します。この例では、ルートサイトはd8multisiteという名前で、d8multisite.comでアクセスでき、/var/www/d8multisiteにインストールされます。
2. site1という名前のマルチサイト内にサイトを作成し、site1.d8multisite.comでアクセスできるようにします。
3. site1を設定して、ルートサイトの外に独自のモジュールを持つようにします。
ステップ1: マスターサイトの作成
プロセスを開始するには、Drupal 8のコピーをサーバーにインストールしてください。Drupal 8インストールドキュメントを読んでください。
この例では、次の手順でDrupalをインストールしています。
1.1: マルチサイトのルートサイト用のデータベースを作成します。例: d8multisite。
1.2: Drupal 8のコピーをダウンロードして解凍し、Webディレクトリに配置します。
1.3: ルートサイト用の仮想ホスト定義を作成します。仮想ホスト設定について読んでください。ApacheサンプルVirtualHost設定: Nginxについては、公式レシピを参照してください。
<VirtualHost *: 80>
# Drupal 8マルチサイトのルートサイト用仮想ホスト設定
ServerAdmin me@domain.com
DocumentRoot /var/www/d8multisite
ServerName d8multisite.com
ServerAlias www.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}/d8multisite_error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/d8multisite_access.log combined
</VirtualHost>
1.4: Drupalをインストールします。d8multisite.comにアクセスして、インストールウィザードに従います。
ステップ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を編集して、ファイルの末尾が次のようになるようにします。
# ルートdrupalサイトを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としてコピーします。
#drupalのルートフォルダから
cp sites/default/default.settings.php sites/site1.d8multisite.com/settings.php
2.7: site1のDrupalインストールプロセスを完了します。サイトのドメインにアクセスします。
マルチサイトにサイトを作成したいときは、これらの手順を繰り返すことができます。example.comやsite1.anotherdomain.comなどのドメインも使用できます。サイトのドメイン、URL、サブディレクトリ名の詳細については、サイトのドメイン、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でPathautoモジュールをインストールします。drush dl pathauto
2) site1サブディレクトリに移動し、drushでdsモジュールをインストールします。drush dl 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」を使用していません