PLESK 管理下のマシンで開発者ごとの workspace で CakePHP 1.2 を動かせるようにする修行

apache 全体の設定

まずは、↓で WEB アクセスが可能になるように設定

/var/proj/dev 以下で PHP が動作できるように、さらに CakePHP が要求する Rewrite エンジンの使用を許可するために vhost.conf に追加設定が必要。

<IfModule mod_alias.c>
        AliasMatch  ^/([^/]+)/(.*) /var/proj/dev/$1/htdocs/$2
</IfModule>
<Directory /var/proj/dev/>
    <IfModule sapi_apache2.c>
        php_admin_flag engine on
        php_admin_flag safe_mode off
        php_admin_value open_basedir "/var/proj/dev:/tmp"
    </IfModule>
    <IfModule mod_php5.c>
        php_admin_flag engine on
        php_admin_flag safe_mode off
        php_admin_value open_basedir "/var/proj/dev:/tmp"
    </IfModule>
    AllowOverride All
</Directory>

AllowOverride All はやりすぎかな、と思うが、とりあえず。
/var/www/vhosts/mato.me/conf/httpd.include はすでに作られているので、

# /usr/local/psa/admin/bin/websrvmng -v -a

は不要。さくっと

# service httpd reload

だけ。

個々のワークスペースの設定

アーカイブの展開

cake は ワークスペース、たとえば ws1 の下に展開する。

$ pwd
/var/proj/dev
$ mkdir ws1
$ cd ws1
$ bzcat /path/to/archive/cake_1.2.1.8004.tar.bz2 | tar xvf -

で、app/webroot を公開ディレクトリとする。すでに apache の AliasMatch で仮想ディレクトリパス XXX/YYY が /var/proj/dev/XXX/htdocs/YYY に対応するようにしてあるのでL(XXX が 各自が作ったワークスペース名、YYY がその中のファイル名)、

$ mv app/webroot htdocs

でよい。

CakePHP まわりのディレクトリパスの設定

htdocs/index.php 内の中をちょこっと変更。

$ diff /tmp/index.php.org htdocs/index.php
44c44
<   define('ROOT', dirname(dirname(dirname(__FILE__))));
---
>   define('ROOT', dirname(dirname(__FILE__)));
51c51
<   define('APP_DIR', basename(dirname(dirname(__FILE__))));
---
>   define('APP_DIR', 'app');

APP_DIR なんかは強引に設定。でも、いいよね、これで。

RewriteBase の設定

仮想ディレクトリパス /XXX の下に index.php があるので、cakePHP に入っている .htaccess そのままじゃだめなんで、RewriteBase を追加。

$ cat htdocs/.htaccess
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
    RewriteBase /ws1
</IfModule>
さらに ...

app/tmp/ の下にできるファイル群はリポジトリに入れたくないから、どうにか工夫しないとだな。vendors/ の下も入れる必要ないな。なんかうまい方法があるんだろうな。