CMS構築を目的にPHPをベースとしたWordPress、CakePHPやPEARなどオープンソースを中心に解説しています

サブドメインやマルチドメインに対応したレンタルサーバで複数のCakePHPで構築したサイトを公開する場合に、一番には複数のCakePHPをインストールすればよいと考えます。しかし、リソースが無駄に使用されるようで嫌ですよね。
当然ともいえる事のようですが、CakePHP1.3では複数のWebサイトを管理できます。

まず、前提として、CakePHPを非公開のディレクトリにインストールした構成とします。詳細は以前の記事を参照してください。
CakePHPのディレクトリ構成を変えてセキュリティ強化

例えば、以下のようなディレクトリ構成で、3つのサイト「http://site1.helog.jp/」「http://site2.helog.jp/」「http://site3.helog.jp/」をマルチドメインで公開するとします。

cakephpインストールディレクトリ /cakephp/
サイト1公開ディレクトリ /public_site1/
サイト2公開ディレクトリ /public_site2/
サイト3公開ディレクトリ /public_site3/


Cakephpフォルダ内のappフォルダをコピーして、以下のように3サイト分のアプリケーションデータを扱えるような構成にします。

/cakephp/app_site1/
/cakephp/app_site2/
/cakephp/app_site3/
/cakephp/cake/
/cakephp/plugins/
/cakephp/vendors/
/cakephp/.htaccess
/cakephp/index.php

サイト1の公開フォルダの「/public_site1/index.php」について、以下のように設定します。

if (!defined('ROOT')) {
	define('ROOT', dirname(dirname(__FILE__)).DS.'cakephp');
}
if (!defined('APP_DIR')) {
	define('APP_DIR', 'app_site1');
}

同様にして「/public_site2/index.php」「/public_site3/index.php」についても、アプリケーションフォルダをそれぞれ「app_site2」「app_site3」に指定します。

このようにして、1つのCakePHPで複数のサイトを構築できます。
メリットとしては、

  • ディスクスペースを節約できる
  • アプリ間でプラグインを共有できる(共通したコンポーネントやモデルを利用可能)
  • CakePHPのアップデートなどメンテナンスを一括することができる

などが挙げられますね。

このエントリーをはてなブックマークに追加

Monthly Archives

Search