AppFogで始めるFuelPHP
がっつり使ったわけではないので、とりあえず環境構築まで。
タイトルが変だけど、まーいいか。
AppFogのSIGN UP
AppFogのアカウントが無いと始まらないので、
にアクセスし、右上『SIGN UP』からAppFogのアカウントを作成します。
AppFogコマンドラインツールのインストール
以下のページを参考にAppFog用のコマンドラインツールをインストールします。
http://docs.appfog.com/getting-started/af-cli
$ gem install af
FuelPHPの用意
ローカルにFuelPHPを用意します。
$ wget https://github.com/downloads/fuel/fuel/fuelphp-1.4.zip $ unzip fuelphp-1.4.zip $ cd fuelphp-1.4 $ vi .htaccess $ vi fuel/app/config/config.php $ php oil refine install $ vi fuel/app/config/db.php $ vi fuel/app/config/development/db.php
.htaccess
RewriteEngine On RewriteBase /public RewriteRule (.*) /public/$1 [L]
config.php
とりあえず最低限の設定
<?php return array( 'base_url' => '/', 'default_timezone' => 'Asia/Tokyo' );
※2012/11/30追記
『base_url』を設定しないとURLにpublicが含まれるようです。
参考)
PHPFog の FuelPHP アプリを AppFog に移行してみる (2) - A Day in Serenity @ kenjis
config/db.php
一応、MongoDB/Redisの設定も。
<?php $j = json_decode(getenv('VCAP_SERVICES')); $mongo = $j->{'mongodb-1.8'}[0]->{'credentials'}; $redis = $j->{'redis-2.2'}[0]->{'credentials'}; return array( 'mongo' => array( 'default' => array( 'hostname' => $mongo->{'host'}, 'port' => $mongo->{'port'}, 'username' => $mongo->{'username'}, 'password' => $mongo->{'password'}, 'database' => $mongo->{'db'} ) ), 'redis' => array( 'default' => array( 'hostname' => $redis->{'host'}, 'port' => $redis->{'port'}, 'password' => $redis->{'password'} ) ) );
development/db.php
<?php $j = json_decode(getenv('VCAP_SERVICES')); $mysql = $j->{'mysql-5.1'}[0]->{'credentials'}; return array( 'default' => array( 'connect' => array( 'dsn' => 'mysql:host='.$mysql->{'host'}.';dbname='.$mysql->{'name'}, 'username' => $mysql->{'username'}, 'password' => $mysql->{'password'}, ) ) );
ここまでで下準備は完了です。
アップロード
afコマンドを使用しファイルをアップロードします。
fuelphpを伸張したディレクトリへ移動し以下を実行。
$ af login $ af update {name} 例) $ af update myapp
※{name}に入るのは『アプリケーションの作成』時に指定したサブドメイン名
確認
実際にURLにアクセスし、FuelPHPのWelcomeが表示されている事が確認出来ればOK!
その他
FuelPHPのRedisクラスを使用しようとしたら、Redisクラスが競合しているらしく、そのままでは使用不可。とりあえず以下のように呼び出し。
<?php $redis = \Fuel\Core\Redis::forge('default');