個人的メモです。
PHP アプリケーションの構築
FuelPHP アプリケーションの構築
コンソール側でherokuアプリケーションを構築してから、
fuelphpプロジェクトを作成する。
$ oil create heroku
$ git checkout -b master
Composerに依存関係を構築。パッケージ系が不要なら削除しておきます。
ビルドパックは、devで設定しておかないとデプロイの際に怒られる。
herokuでは拡張機能も必要になるので、入れておく。
プライベートリポジトリを使う場合、パスワード確認はしてくれないので、セキュリティ的に許容されるなら、URLにはパスワードも埋め込む。
$ composer require heroku/heroku-buildpack-php --dev
$ composer require ext-mbstring
Herokuの環境設定
まずはProcfile
の作成
apacheかnginxか選べるみたい。 引数でdocRootを指定します。
touch Procfile
vi Procfile
web: fuel/vendor/bin/heroku-php-apache2 public/
リモート及び環境変数の設定。ビルドパックのURLは、node.jsアプリケーションとかと誤認されないためにも入れとくと吉。
$ heroku git:remote -a {appName}
$ heroku config:set BUILDPACK_URL=https://github.com/heroku/heroku-buildpack-php
$ heroku config:set FUEL_ENV=staging
$ heroku config # 確認
あと、.gitignore
からlockファイルを外します。
そしてデプロイ
$ git add .
$ git commit -am update && git push heroku master
初期のプロジェクトを確認するときはhttp
で見たほうがいいです。
(https
の設定がAssetsクラスでされてないので。)
ログの設定
標準エラーにログが出るように、設定を行います。
fuel/app/config/config.php
で以下の行を書き換え。
'log_threshold' => Fuel::L_ALL,
'locale' => 'en_US.utf8',
ログを標準エラーに履くために、LOGクラスを上書き。
<?php
// at fuel/app/classes/log.php
class Log extends \Fuel\Core\Log{
public static function _init()
{
parent::_init(); // TODO: Change the autogenerated stub
static::herokuHandler();
}
public static function herokuHandler(){
$stream = new \Monolog\Handler\StreamHandler("php://stderr", \Monolog\Logger::DEBUG);
$formatter = new \Monolog\Formatter\LineFormatter("%level_name% - %datetime% --> %message%".PHP_EOL, "Y-m-d H:i:s");
$stream->setFormatter($formatter);
static::$monolog->pushHandler($stream);
}
}
起動ファイルにてコアクラスの書き換えを指示。
//at fuel/app/bootstrap.php
Autoloader::add_classes(array(
'Log' => APPPATH.'classes/log.php',
));
これでデプロイ。
heroku logs
で確認すると、アクセスの度にログが記録されている。
clear dbを使う
clear DBは、heroku で使える mysqlデータベースです。
使い方
1.ダッシュボードからadd-onを追加
2.CLIから接続情報を確認
$ heroku config -a {appName}
=== {appName} Config Vars
CLEARDB_DATABASE_URL: mysql://{userName}:{passWord}@{hostName}/DatabaseName?reconnect=true
接続情報をConfigにねじ込む or $_SERVER
変数からパースして使う
MysqlWorkbench から SSLで接続
あとで書く: 証明書が云々とか