さくら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
のように変更しました。