Help us understand the problem. What is going on with this article?

heroku Meets FuelPHP

More than 5 years have passed since last update.

個人的メモです。

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

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

mikakane
PHPerです。がんばります。
http://chatbox-inc.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした