Pictnotes メインイメージ

お仕事メモ

プログラム一式をドキュメントルート以下におかない方法

baserCMSをインストールするときに、プログラム等の一式をドキュメントルート以下に展開しないで
運用する方法。



カスタマイズ前提とかで、サイトを構築するとき、セキュリティ上の事とかもろもろかんがえて、
baserCMSのプログラムフォルダ等をドキュメントルート以下に置きたく無い場合の運用方法。
(これを書く一ヶ月以上前にしたので、記憶みすで、間違いがあったらごめんなさい)

/var/www/html
がドキュメントルートとして、

/var/www/basercms
というフォルダにbaserCMSのパッケージを設置するとします。。

1) basercms/index.phpをドキュメントルート以下にコピー(移動でもいいよ)
2) コピーした、index.phpの中身を修正

38c38,39
< define('ROOT', dirname($_SERVER['SCRIPT_FILENAME']));
---
> //define('ROOT', dirname($_SERVER['SCRIPT_FILENAME']) . '/../basercms/');
> define('ROOT', realpath(dirname($_SERVER['SCRIPT_FILENAME']) . '/../basercms/'));
53c54,56
< require APP_DIR . DS . WEBROOT_DIR . DS . 'index.php';
---
> //require APP_DIR . DS . WEBROOT_DIR . DS . 'index.php';
> require ROOT . DS . APP_DIR . DS . WEBROOT_DIR . DS . 'index.php';
>


diffで書くと上記の様なかたち、やっていることは、ROOTの定数をbasercmsのパッケージがある絶対パスへ変更
と、上記にあわせて、appフォルダの場所を再指定。

3) webroot以下の files と theme フォルダをドキュメントルート以下にリンク
/var/www/basercms/app/webroot/files
/var/www/basercms/app/webroot/theme
の2つのフォルダは、ドキュメントルート以下に存在する必要があるのでこれに関しては、
1.シンボリックリンクをはる
2. ScriptAlias を設定する
のどちらかが必要です。
/var/www/basercms/app/webroot/files

/var/www/html/files
で、
/var/www/basercms/app/webroot/theme

/var/www/html/theme
と同じものになっている必要があるってことですね。これはコピーするだけではだめで、
プログラム的には、
/var/www/basercms/app/webroot/theme
のパスで見に行く事がほとんどなのですが、cssとかのファイルを閲覧者(ブラウザ)から見られる場合は
/var/www/html/theme
のドキュメントルートの方から見られるので、同じ物を参照してないと問題になってきます。

ln -s  /var/www/basercms/app/webroot/files files
ln -s  /var/www/basercms/app/webroot/theme theme
とかですね

まだ、構築中で本格運用はしてないですが、これで大丈夫なはず。

-- 2015.01.15 追記
css,js 等の呼び込みが上手く行ってないときは、
basercms/app/Config/install.php

Configure::write('App.baseUrl', '');
を追記する、特にスマートURL(mod_rewrite on)の状況において改善される場合有

 

baserCMS   2014/02/04   admin