Drupalは複数サイト設置・運営がとっても簡単便利

Drupalは一つのパッケージで複数サイトを運営することができます。

他のいくつかのCMSにも、もちろんそのような機能はありますが、Drupalの場合、設置・運営がとっても簡単です。

一つのパッケージでの複数サイト運営のメリット・デメリット

一般的に、CMSパッケージを複数アップロードしてサイトを複数設置する場合と比べ、一つのパッケージでの複数サイト運営する場合、いくつかメリットがあります。

  • 重複するファイル(プログラムや画像などが一つですむ)
  • 保守の手間が軽減(アップデートするにも一つのパッケージだけでよい)

デメリットを挙げるとすれば、

  • 負荷が集中する
  • 各々の柔軟性が失われる(似たような構造のサイトならばむしろメリットになる)

といったところでしょうか。環境にもよりますが、どうにでもなる程度なので、メリットのほうが断然大きいです。

Drupalでの複数サイト設置

Drupalに複数サイトがある場合、閲覧時にアクセスしたURLから判断してサイトを表示します。ドメイン・ホスト名やディレクトリが違うサイトでも運営することができます。

デフォルトでは、sites/defaultにサイト情報(データベース設定など)が保存されています。特に何もしなければ、どこからアクセスしてもsites/default/settings.phpで設定されたサイトが表示されます。

今、「http://www.drupal.org/mysite/test/」にアクセスしたとします。すると、DrupalはそのURLを元にサイト情報が書かれたsettings.phpがあるかどうか、sites以下にあるディレクトリを次の順番で探していきます。

  1. sites/www.drupal.org.mysite.test
  2. sites/drupal.org.mysite.test
  3. sites/org.mysite.test
  4. sites/www.drupal.org.mysite
  5. sites/drupal.org.mysite
  6. sites/org.mysite
  7. sites/www.drupal.org
  8. sites/drupal.org
  9. sites/org
  10. sites/default

http://www.drupal.org/mysite/test/」でも「http://drupal.org/mysite/test/」でも同じサイトにアクセスさせたい場合は、設定ファイルは「sites/drupal.org.mysite.test」より下の形(2〜10)で指定しないとうまくいきません。

http://www.hogehoge.com/」「http://www.drupal.org/mysite/test/」「http://www.drupal.org:8080/」というURLの別々のサイトを設置したい場合、次のようにディレクトリ及びsettings.phpをアップロードするとよいでしょう。

また、サイト固有の「モジュール」「テーマ」を設置することができます。settings.phpと同じディレクトリにそれぞれ「modules」「themes」というディレクトリを置き、それらの中にモジュールやテーマをアップロードしてください。

「sites/drupal.org.mysite.test」に「ex_module1」「ex_module2」という名前のモジュールと「ex_theme1」「ex_theme2」という名前のテーマを独自に組み込みたい場合、sites以下のディレクトリ構造は次のようになります。

  • sites/
    • drupal.org.mysite.test/
      • modules/
        • ex_module1/
        • ex_module2/
      • themes/
        • ex_theme1/
        • ex_theme2/
      • settings.php

必要なファイルをアップロードし、特定のURLから実際にDrupalのindex.phpが設置されているファイルへアクセスできるように設定してから、そのURLにアクセスすると、インストール時のサイト設定画面が現れるので、個別に設定してください。

なお、settings.phpのサイト情報(データベースのURLおよびプレフィクス)を書き換え、データベースを予め作れば、機械的に複数サイトを設置することもできます(そういうモジュールはないんだろうか?)

同じデータベースでもプレフィクスを書き換えれば複数サイトで利用可能です。もちろん、ドメインが違っても使えます。

以後、それぞれのサイトで作成したノードやサイト設定はそれぞれ別のデータベースに保存されるので、独立したサイトを運営させることができます。もちろんテーマやモジュールなどは共有でき、アップデートは一回でOKです(update.phpを動作させるだけ)。cronも一緒に動作するので、保守がとっても楽になることでしょう。

Drupal以外のCMSとの比較

もちろん、複数サイトを運営する機能は他のCMSにもあります。

機能の比較をしようかと思ったのですが、他のCMSについてはまだあまり詳しいわけではないので、またの機会に。