PHP
Heroku
FuelPHP

Fuelphpのプロジェクトをherokuにデプロイする

環境

FuelPHP 1.8
PHP 5.6.3
すでにプロジェクトをgitにて管理しており、そのプロジェクトをherokuを活用して
デプロイする状態です。

ちなみに、ディレクトリ構成は以下の通り
Project
|ー Fuel(FuelPHPのディレクトリ)
|ー composer.json
|ー composer.lock
|ー Procfile (heroku上でapacheの設定をするファイル)

herokuへの登録などは済ませてあるものとします。

事前準備

composerをmasterにpush

まずheroku createする前に、composerをremoteリポジトリで管理するようにします。
herokuでPHP環境を作るためにはcomposer.jsonとcomposer.lockが必須。
comoser.lockがignoreファイルに入っていたので、ignoreから外してgitにpush

※注意
composer.jsonとcomposer.lockはプロジェクト直下に置いておかないと、
後々大変になります。

プロジェクト直下にProcfileを作成

サーバーにapacheを使うように指定
public/と記述することで、プロジェクト内のpublicディレクトリをapacheさん見てくださいと
教えてあげるために以下の記述しProcfileという名前をつけて保存。
プロジェクト直下に置いておく

web: vendor/bin/heroku-php-apache2 public/

herokuにデプロイ

herokuにプロジェクトをcreate

準備が整ったらついに、heroku使っちゃいます。

heroku create chousei

heroku masterにpush

git push heroku master

※注意
ドキュメントルートにindex.phpやcomposer.jsonがないと、PHPだと判別できないようなので、buildpackというものを指定しないと、そもそもherokuにpushできません。なので、こんなエラーや

remote:  !     No default language could be detected for this app.
remote:             HINT: This occurs when Heroku cannot detect the buildpack to use for this application automatically.

こんなエラーが出てきた場合は

remote: -----> App not compatible with buildpack: https://github.com/heroku/heroku-buildpack-php
remote:        More info: https://devcenter.heroku.com/articles/buildpacks#detection-failure
remote:

空のindex.phpをプロジェクト直下に置いたり、
herokuのプロジェクト管理から、buildpackを指定したりしないといけ無くなります。

Mysqlの設定

もともと、プロジェクトはMysqlを使っていたため、Mysqlをheroku上で
使えるようにします。

web上のプロジェクト管理で、clearDBというaddonを追加します。
その後、プロジェクト内のディレクトリで

heroku addons:add cleardb

これで、herokuでMysqlを使うことができます!
以下のコマンドでDBの情報を見ることができるので

heroku config

CLEARDB_DATABASE_URL:mysql://ユーザ名:パスワード@サーバ名/データベース?reconnect=true

上のユーザー名、パスワードなどを使ってDBに接続

今回はstaging環境として使用したいので、プロジェクトの
fuel/app/config/db/staging.phpにheroku configで参照した値を設定してあげる

あとは、以下のコマンドを打って、herokuがstaging環境だよというように設定

heroku config:set FUEL_ENV=staging

これで、DBへの接続はできるので、あとはmigrationだけ。
heroku runコマンドを使えば、heroku環境でmigrationできるので

heroku run 'php oil r migrate'

ここまでできてしまったら、

heroku open

と打てば、作った成果物を見ることができるはず!
自分は、git管理の仕方をミスっていたので大変だったが、
手順やルールさえ覚えてしまえば簡単にできてしまうので感動でした。

参照
HerokuへFuelPHPプロジェクトをデプロイ
heroku Meets FuelPHP
FuelPhpをHerokuで動かす