さくらVPS設定~CakePHPインストールではまったところ。1

VPSを弄る必要があったので、さくらVPSを契約し、WordPressやCakePHPのインストールを行ってみた。
VPSの設定~WordPressのインストールは、ナレッジ - さくらのナレッジさんの、「サーバーってなに?」~初心者でもよくわかる!VPSによるWebサーバー構築講座(1) - さくらのナレッジシリーズを見ながら設定を行えば完璧なので、その後のCakePHPの設定でハマったところをまとめておきます。

前提条件

今回は、WordPressをCakePHPを連携させたかったので、WordPressのインストールディレクトリの中にgameディレクトリを作成し、その中にCakePHPをインストールすることにした。

ディレクトリ
/var/www/html/wordpress/game

また、このディレクトリにアクセスするためのurlを

URL
http://ドメイン/wordpress/gameadmin

にするようにした。

httpd.conf、conf.dの変更

※この変更を反映させるために、変更後はapacheを再起動させます。

service httpd restart

httpd.conf

httpd.confのバックアップ
#ディレクトリを移動
cd /etc/httpd/conf/
#これまでのhttpd.confファイルのバックアップを作っておく
cp httpd.conf httpd.conf.old
#httpd.confの内容をvimで編集
vim httpd.conf
AllowOverride の修正(.htaccessを使用する場合にはこの修正をする必要がある)
#修正前
AllowOverride None

#修正後
AllowOverride All

※以下の、「DocumentRootの修正」「Directoryの修正」については今回は公開ディレクトリの変更がないので行っていません。

仮に、公開ディレクトリを/var/www/html から /var/www/html/subdirectory1 に変更する例

DocumentRootの修正
#修正前
DocumentRoot "/var/www/html"

#修正後
DocumentRoot "/var/www/html/subdirectory1"
Directoryの修正
#修正前


#修正後

conf.d

/etc/httpd/conf.dディレクトリに、アプリごとの設定ファイルを作成・記述します。

#ディレクトリを移動
cd /etc/httpd/conf.d
#game.confをvimで作成・編集
vim game.conf

game.confの内容は、例えば以下のようにします。

# http://ドメイン/wordpress/admingame でアクセスされたら、/var/www/html/wordpress/gameを参照する
Alias /wordpress/admingame /var/www/html/wordpress/game

#/wordpress/admingame にアクセスしてきた場合の設定

    Order deny,allow
    Deny from All
    Allow from All
    # httpd.confで、AllowOverride Noneのままにしてある場合は、
    # AllowOverride All も追加する

php.iniの変更

※この変更を反映させるために、変更後はapacheを再起動させます。

service httpd restart

php.ini

/etc/php.iniファイルでタイムゾーンを設定します。

#ディレクトリを移動
cd /etc
#php.iniをvimで編集
vim php.ini

php.iniの中で、date.timezone に何も記載がないはずなので、以下のように編集します。

date.timezone = Asia/Tokyo

.htaccessの設定

ドキュメントルートを変更したので、CakePHP内にある三つの.htaccessにそれぞれ追記します。

/var/www/html/wordpress/game/.htaccessファイル

<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule    ^$ app/webroot/    [L]
   RewriteRule    (.*) app/webroot/$1 [L]
   #以下を追記
   RewriteBase    /wordpress/admingame
</IfModule>

/var/www/html/wordpress/game/app/.htaccessファイル

<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule    ^$    webroot/    [L]
   RewriteRule    (.*) webroot/$1    [L]
   #以下を追記
   RewriteBase    /wordpress/admingame/app
</IfModule>

/var/www/html/wordpress/game/app/webroot/.htaccessファイル

<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule    ^$    webroot/    [L]
   RewriteRule    (.*) webroot/$1    [L]
   #以下を追記
   RewriteBase    /wordpress/admingame/app/webroot
</IfModule>

cache was unable to writeエラーの対応

以上で設定終了かとおもいきや、http://ドメイン/wordpress/admingame/にアクセスした際、以下の様なエラーが表示されました。

Warning: _cake_core_ cache was unable to write 'cake_dev_ja' to File cache in *******/lib/Cake/Cache/Cache.php on line 328
Warning: *******/app/tmp/cache/persistent/ is not writable in *******/lib/Cake/Cache/Engine/FileEngine.php on line 385 Fatal error: Uncaught exception 'CacheException' with message 'Cache engine "_cake_core_" is not properly configured. Ensure required extensions are installed, and credentials/permissions are correct' in *******/lib/Cake/Cache/Cache.php:186 Stack trace: #0 *******/lib/Cake/Cache/Cache.php(151): Cache::_buildEngine('_cake_core_') #1 *******/app/Config/core.php(374): Cache::config('_cake_core_', Array) #2 *******/lib/Cake/Core/Configure.php(72): include('/var/www/html/c...') #3 *******/lib/Cake/bootstrap.php(175): Configure::bootstrap(true) #4 *******/app/webroot/index.php(104): include('/var/www/html/c...') #5 *******/index.php(41): require('/var/www/html/c...') #6 {main} thrown in *******/lib/Cake/Cache/Cache.php on line 186

どうやら、/var/www/html/wordpress/game/app/tmp 以下のディレクトリのパーミッション等を変更する必要が有るようです。

cd /var/www/html/wordpress/game/app
chown -R apache:(ここに自分のユーザーグループ) tmp
chmod -R 775 tmp

のように変更しました。