はじめに
今まではAWSや専用サーバーなどでデプロイをしていて、初めてHerokuを使ってみたのでメモをとっておく。
デプロイ
デプロイはHerokuのページに書かれている通り。
アプリ名
→ Deploy
の順番に辿っていけばやり方が書かれている。
// Herokuにログイン
$ heroku login
// プロジェクトが無い場合は作成する。
$ cd my-project/
$ git init
// すでにプロジェクトがある場合はこれだけでOK
$ heroku git:remote -a APP_NAME
// あとはgitと同じだが、プッシュと同時にデプロイされる。
$ git add .
$ git commit -am "make it better"
$ git push heroku master
素晴らしい!
これだけでデプロイが完了する。
Rakeタスク
デプロイ後はDBが無いためエラーで落ちてしまう。
なので、Rakeタスクを流す必要がある。
heroku run
このコマンドを使えばRake
コマンドが使えるようになる。
具体的には以下のようにコマンドを実行することができる。
heroku run rake db:migrate
heroku run rake db:seed
これで基本的なアプリなら起動するはずだ。
DB再作成
PostgreSQLはMySQLとは違い接続がある時にDBを削除できない。(MySQLはできる。)
なので、HerokuでDBを作り直す時は以下のコマンドを実行する。
heroku pg:reset DATABASE
もしくは
heroku rake db:migrate:redo STEP=10
でも可能だが、down
できない状況の場合は使えない。
本番環境でこのような事をすることは無いと思うが、開発時点ではそれなりに使うことがあるだろう、
Herokuの再起動
heroku restart
で再起動される。
ロールバックは
heroku releases
でバージョン確認後にheroku rollback <バージョン番号>
を実行する。
バージョン情報に日付などもあるのでわかりやすい。
アプリの情報
heroku apps:info
で確認できる。
SSH接続
heroku run bash
で接続が可能。
irb起動
heroku run console
で起動する。
SSH接続よりも使う機会が多い気がする。
Herokuへ環境設定追加
heroku config:set KEY=**********
これで管理している情報は以下のコマンドで見れる。
heroku config
見ると変えてはいけない項目もあったりするので注意。
(heroku config --shell
を使えば.envで使える形式で出力される。)
アプリ削除
heroku apps:destroy --app APP
でアプリ削除らしい。
実行したことが無い。
無料枠
クレジットカードの登録をすれば1000 dyno hours
でしない場合は550 dyno hours
になります。
無料枠は30分アクセスが無いとsleepされる。(再びアクセスすれば起動する。)
変わりにクレジットカードを登録していない場合は550時間/月しか稼働ができないので途中でアクセスができなくなりそう。
※2016/6/3より上記が適用されたらしい。随時改定されるみたいなので注意。
おまけ
ステージングの作成
やったことは無いけどheroku fork -a APPNAME APPNAME-stg
でコピーされるらしい。
DBの内容もコピーされるのでとても良い。
PostgreSQL
普段MySQLばかり使っていたので、基本的なコマンドがわからない・・・。
\l データベースの一覧
\d テーブル一覧
\d テーブル名 テーブルの項目(フィールド)確認
\i sqlファイル名 SQL(スクリプト)ファイルの実行
\q psqll切断
とりあえず最小限。