マルチサイトの設定法は、Drupalコアパッケージに含まれるinstall.txtファイルやdrupal.orgのドキュメンテーションなどにありますが、英語ですし、慣れていない方には、あまり親切ではないような気がします。マルチサイトインストールは簡単です! 設定に必要なのは下記のことだけです。
- マルチサイトインストールの命名規則(naming convention)を理解し、適切な名前のディレクトリやファイルを『Drupalルート/sites』ディレクトリに配置する。
- 複数のドメインにアクセスがあった場合でも、一つのDrupalコードベースに向かうように、サーバ側のエイリアスを設定する。
なお、CocoaSpaceはLinuxサーバのウェブホスティングを利用しています。Windowsサーバなど異なるサーバ環境でのことは残念ながらわかりません。またLinuxサーバでも、ご利用のウェブホスティングのサーバ設定によっては、ここでご紹介する方法がうまくいくかないことがあるかもしれません。その点はご容赦ください。
それでは、前置きはこれくらいにして、マルチサイトインストールの設定法を簡単にご紹介します。足りない点、わかり難い点、誤っている点などありましたらご指摘ください。
必要なディレクトリとファイル
Drupalをデフォルトの状態でインストールした場合、DRUPAL_ROOT/sites/defaultディレクトリにsettings.phpファイルをはじめ、サイトに関する情報を含むファイルがあります。2つ目のサイトとしてsub.example.comというドメインでサイトを構築したい場合には、DRUPAL_ROOT/sites/sub.example.comというディレクトリを作成し、そこにsettings.phpなどのサイト固有の情報を含むファイルを配置します。2つのディレクトリには、それぞれのサイトについての情報が別々に保存されます。これがDrupalのマルチサイトのディレクトリとファイルの設置法です。
各ドメインのためのディレクトリ命名規則
デフォルトのサイトのほかにサイトをインストールする際、DRUPAL_ROOT/sites以下にディレクトリとファイルを作成するのはいいのですが、もちろん規則があります。ディレクトリの名前は、下の例のような命名規則(naming convention)に従う必要があります。といってもシンプルなものなので、下の例をご覧になればすぐにわかってくいただけると思います。
普通にexample.comにDrupalを構築する場合
DRUPAL_ROOT/sites/example.comsubdomain.example.comのようにサブドメインにDrupalを構築する場合
DRUPAL_ROOT/sites/subdomain.example.comexample.com/subdirectoryのようにサブディレクトリにDrupalを構築する場合
DRUPAL_ROOT/sites/example.com.subdirectory*subdirectoryの前の"/"を"."に置き換えてディレクトリを作成する点に注意
subdomain.example.com/subdirectoryのようにサブドメインのサブディレクトリにDrupalを構築する場合
DRUPAL_ROOT/sites/subdomain.example.com.subdirectory*subdirectoryの前の"/"を"."に置き換えてディレクトリを作成する点に注意
各ドメインのためのディレクトリ配下のディレクトリ、ファイル
下のディレクトリ、ファイルの配置例をご覧いただくとわかりますが、DRUPAL_ROOT/sites直下の各サイトのためのディレクトリの配下には以下のディレクトリとファイルを配置します。
settings.php
Drupalのコアパッケージのsites/default/default.settings.phpをリネームして配置するか、<?phpだけを記入してファイルを作成します。<?phpの次に改行を入れるないと機能しないので要注意です。
files
このディレクトリは任意です。このサイトにだけ使用可能にしたいモジュールがある場合には、このディレクトリに配置します。
modules
このディレクトリは任意です。このサイトにだけ使用可能にしたいモジュールがある場合には、このディレクトリに配置します。
themes
このディレクトリは任意です。このサイトにだけ使用可能にしたいテーマがある場合には、このディレクトリに配置します。
tmp
一時的な作業に使用するためのディレクトリです。tmpという名前でなくてもいいのだと思いますが、私はいつもtmpとしています。Drupalをインストール後、ファイルシステム管理ページ(example.com/admin/settings/file-system)のテンポラリ・ディレクトリ欄に入力する必要があります。
*以前、私はテンポラリ・ディレクトリをfilesディレクトリと同じ階層に設定していましたが、Drupal 7の管理画面ではウェブ・ブラウザからアクセスできないディレクトリに設定すべきだと明記されています。この記事も、それに沿って訂正しました。以前、この記事を参考にしてくださった方、ゴメンなさい。
ディレクトリ、ファイル配置の例
- DRUPAL_ROOT
- sites
- all(すべてのサイトで使用するモジュールやテーマなどを配置するディレクトリ)
- modules
- themes
- default(最初に構築したデフォルトサイトに固有のファイルを配置するディレクトリ)
- files
- modules
- themes
- settings.php
- subdomain.example.com(subdomain.example.comに固有のファイルを配置するディレクトリ)
- files
- modules
- themes
- settings.php
サーバ側のエイリアスを設定する
上の例で言うならば、ユーザがブラウザでsubomain.example.comにアクセスした時、DRUPAL_ROOTに向けるようにエイリアスを設定しなければなりません。これはDrupalの機能ではありません。サイト管理者が手動でサーバ側に設定してあげる必要があります。httpd.confを編集できる環境ではhttpd.confのAliasディレクティブでサブディレクトリからDrupalのルートに向くようにエイリアスを設定するの良いようですが、CocoaSpaceでは共有プランのウェブホスティングを利用していますので、その方法は試したことがありません。従いまして、その他の方法をご紹介したいと思います。
SSHを利用して、サブディレクトリからDRUPAL_ROOTへシンボリックリンクを貼る
共有プランのウェブホスティングを利用している場合は、この方法を採用されている方が多いかと思います。drupal.orgではこの方法について書かれていることが多いので、マルチサイトインストールの際のもっとも一般的な方法なのかもしれません。
設定例:
ln -s /home/USERNAME/public_html /home/USERNAME/public_html/subdomain.example.com
*public_htmlにDrupalのコアパッケージを配置した場合の例です。public_htmlまでのパスについてはご利用のウェブホスティングサービスによって変わってくると思いますので、ご自分の環境に合わせてください。もしも、既にsubdomain.example.comというディレクトリがある場合は、それを削除してからシンボリックリンクを作成します。
SSHを利用できない環境で、PHPコードでサブディレクトリからDRUPAL_ROOTへシンボリックリンクを貼る
SSHが利用できない環境でも、PHPコードでシンボリックリンクを設定することができます。但し、ご利用のサーバーのPHPの設定で、symlinkが禁止されている場合、この方法でシンボリックリンクを作成することはできません。上記のSSHの方法と同じく、もしも、既にsubdomain.example.comというディレクトリがある場合は、それを削除してからシンボリックリンクを作成します。
設定例:
STEP 1.
まずsymlink.phpという名前のファイルを作成し、下のようなコード書き込みます。ご自身のサーバ環境に合わせて変更してください。
<?php
symlink( '/home/USERNAME/public_html', '/home/USERNAME/public_html/subdomain.example.com' );
STEP 2.
次に作成したファイル(symlink.php)をDrupalのルートに配置し、ブラウザでDRUPAL_SITE_DOMAIN/symlink.phpにアクセスします。真っ白な画面になると思いますが、これでシンボリックリンクが作成されます。
上記のいずれの方法でもシンボリックリンクを設定できない場合
CocoaSpaceが利用しているウェブホスティングではSSHを使用できるのですが、上記の『SSHでシンボリックリンクを設定』という方法は採っていません。その代わりに、ホスティングプロバイダが提供するcPanelというサイト管理ソフトウェアからパークドメインを設定し、複数のドメインがDrupalインストールのルートに向くように設定しています。CocoaSpaceが運営する別サイトのCyberAmenityでご紹介している無料ウェブホスティングの中には、cPanelの他、DirectAdminというサイト管理ソフトウェアを提供しているところもあります。ここではその2つのサイト管理ソフトウェアでの設定法をご紹介します。cPanelやDirectAdminでなくても、みなさんが利用されているホスティングプロバイダが提供する管理画面から、似たような設定ができるのではないでしょうか?複数ドメイン対応のプランなら、ほとんどのサービスでマルチサイトインストールを利用できると思います。もっとも、日本のウェブホスティングプロバイダはあまり利用したことがありませんので、単なる楽観的な想像に過ぎませんが...。
cPanelでの設定:
[Parked Domains]から、パークドメインを設定します。Drupalパッケージをpublic_htmlに配置した場合には、ドメインルートはpublic_htmlに設定します。
DirectAdminでの設定:
[Domain Pointers]から、追加したいドメインをデフォルトサイトのドメインに向けます。
後は普通にインストールするだけ
ここまで終えたら、後は通常のインストールを行うだけです。データベースを用意し、DRUPAL_ROOT/sites/settingsディレクトリ内のsettings.phpファイルとfilesディレクトリを書き込み可能にしてインストール開始です。ブラウザで追加したいドメインにアクセスすると、お馴染みのDrupalのインストール画面が表示されるでしょうか?インストールウィザードが始まれば成功です。
コメントを追加