環境
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で動かす