続・CakePHPをハッスルサーバーで公開する設定(独自ドメインを使用)

CakePHPレンタルサーバで公開する設定について。具体的にはハッスルサーバにおける公開設定について。
契約時に割り振られたサブドメインをそのまま利用する構成であれば、難なく設定できてしまった。構成としてはこんな感じ。

home
└─{アカウント名}
    └─public
        ├─cakephp ← これがコア!
        ├─app ← ここにアプリケーション
        ├─log
        ├─ml
        ├─webalizer
        └─www
            └─webroot ← appのなかにあるフォルダ「webroot」

独自ドメインを用いない公開設定については昨日の記事があります

今日は独自ドメイン

今日は特に使っていなかったドメインがたまたまあったので、それに割り当ててみることにした。

home
└─{アカウント名}
    └─public
        ├─cakephp ← これがコア!
        ├─app ← ここにアプリケーション
        ├─log
        ├─ml
        ├─webalizer
        └─www
            ├─webroot2 ←ここに独自ドメインを割り当てる
            └─webroot ← appのなかにあるフォルダ「webroot」

昨日、作ったwebrootフォルダのコピーしてフォルダ名を変えただけ、中はまったく触っていない。ハッスルサーバのコントロールパネルからドメインに割り当てるフォルダを「www/webroot2」に設定した。
これでドメインのURLでアクセスしてみたところ、あっけなく動作した。細々した動作確認はとっていない。
.htaccessをいじりまくって悪戦苦闘していたことを思うと、ずいぶんあっけなかったけど、あれは必須ではなく推奨レベルなんだろうか。セキュリティ上問題があるとか。
とにかく、CakePHPのコアとアプリケーション部分をユーザがアクセスできないドキュメントルートより上に配置し、主要なファイルはCSSくらいしか格納していないwebrootフォルダだけをドキュメントルート配下に置くこと。ハッスルサーバに関していえば、あまり難しくなかった。変更したのは、webroot直下にあるindex.php内の定数のみ。

昨日書いたことと同じだけど、フォルダ構成はこうなってる。

CakePHPのコアのフォルダ
/home/{アカウント名}/public/cakephp
Appフォルダ
/home/{アカウント名}/public/app
Appのなかにあるwebrootフォルダ
/home/{アカウント名}/public/www/webroot

条件はこう。

  • CakePHP 1.3.3
  • appフォルダはbakeでプロジェクトだけ焼いて作ったもの
  • ローカルではxamppを使用

webroot/index.phpの33行目あたりにある

define('ROOT', dirname(dirname(dirname(__FILE__))));

こう変える

define('ROOT', DS . 'home' . DS . '{アカウント名}' . DS . 'public');

46行目あたりにあるこれ

define('APP_DIR', basename(dirname(dirname(__FILE__))));

これをこう変える*1

define('APP_DIR', 'app');

53行目あたり

define('CAKE_CORE_INCLUDE_PATH', ROOT);

をこう変更*2

define('CAKE_CORE_INCLUDE_PATH',
 DS . 'home' . DS . '{アカウント名}' . DS . 'public' . DS . 'cakephp');

以上の3箇所の値を変更。

*1:「app」としていますが、実際は任意の名前でいいです

*2:手前のコメントに「The absolute path to the "cake" directory, WITHOUT a trailing DS.」とある。"末尾のDS(スラッシュ)を除くと絶対パスになるという意味?このへんはよく分かっていないが、絶対パスを指定したつもり