search
LoginSignup
17

More than 5 years have passed since last update.

posted at

heroku Meets FuelPHP

個人的メモです。

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で接続

あとで書く: 証明書が云々とか

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
17