サブドメインやマルチドメインに対応したレンタルサーバで複数の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のアップデートなどメンテナンスを一括することができる
などが挙げられますね。
コメントする