How to deploy - JunichiIto/rubyist-connect GitHub Wiki
デプロイ手順
このドキュメントではrubyist-connectをHerokuにデプロイする手順を説明します。
うまくいかない場合は Issue 等を利用して質問してください。
また、手順の間違いや他の人も困りそうな補足事項があれば、このWikiを自由に編集してもらって構いません。
最初のセットアップ
すでに完了している人は読み飛ばしてもらって構いません。
Heroku Toolbeltのインストール
Heroku Toolbeltをインストールします。
Git remoteの登録
以下のコマンドでGit remoteを登録します。
$ bin/rake all heroku:remotes
# 確認(productionとstagingが追加されていればOK)
$ git remote
origin
production
staging
upstream
remoteを登録しておくと、Heroku関連のコマンドを実施する場合にインスタンス名ではなく、productionやstagingという名前で参照できます。
備考
このコマンドはheroku_san gemが提供しているコマンドです。
productionとstagingが追加されたのは、config/heroku.ymlでそのような設定を記述しているためです。
Collaborator権限の取得
Herokuにデプロイするためには、HerokuのCollaborator権限が必要です。
権限がない場合は、システム管理者(yuji-shimoda)に権限の付与を依頼してください。
rubyist-connectのデプロイ手順
セットアップが完了したら以下の手順でデプロイします。
最新コードのコードを取得する
GitHubから最新のコードを取得します。
git checkout master
git pull
# もしくは
git checkout master
git fetch upstream
git merge upstream/master
テストを実行する
テストを実行し、すべてパスすることを確認します。
bin/rspec
デプロイを実行する
デプロイを実行します。
# stagingにデプロイする場合
bin/rake staging deploy
# productionにデプロイする場合
bin/rake production deploy
【重要】デプロイ時の注意点
- productionにデプロイする場合は必ずstagingでの動作環境を行ってからデプロイすること。
- 既存データの更新が必要な場合など、単純なプログラム更新だけで終わらない場合は適切なデプロイ手順を考えること。
- 失敗すると致命的な問題が発生する場合は事前に手順書を作成し、その手順に従ってデプロイを行う。
- デプロイ中にユーザーに操作されるとデータの不整合が発生そうな場合は、サービスを一時的にサービスを停止させる。
- 必要に応じてデプロイ直前にデータベースのバックアップも行う。
- 手順書にはロールバック手順も書く。
- できればペアでデプロイを行う。
動作確認する
デプロイが完了したら動作確認してください。
http://rubyist-connect-staging.herokuapp.com/
Heroku Tips集
staging
になっている部分は必要に応じてproduction
に置き換えてください。
また、以下のコマンドはheroku_sanとHeroku Toolbeltの両方で用意されているものも多いので、必ずしもこのコマンドしか使えない、というわけではありません。
Rails consoleを開く
データの更新を行わない場合
heroku run rails c --sandbox -r staging
データの更新を行う場合
heroku run rails c -r staging
config/heroku.ymlに設定されている環境変数を反映する
bin/rake staging heroku:config
Secret baseやAPI token等、クレデンシャルな情報はheroku.ymlに保存せず、個別に登録してください。
heroku config:set SECRET_KEY_BASE=xxxx -r staging
Heroku上の環境変数を確認する
heroku config -r staging
rakeコマンドを実行する
heroku run rake (コマンド名) -r staging
# 例
heroku run rake routes -r staging
インスタンスを再起動する
heroku restart -r staging
強制的にデプロイする
何らかの事情でHerokuとローカルの整合性があわなくなった場合は、forceオプションを付けることで強制的にデプロイすることができます。
bin/rake staging deploy:force
一時的にシステムを停止する
データのメンテナンス等が必要な場合は以下のコマンドでシステムを停止することができます。
heroku maintenance:on -r staging
再開させる場合は off してください。
heroku maintenance:off -r staging
データベースのバックアップを手動実行する
PG Backups add-onを使うと定期的にバックアップを実行してくれますが、手動実行したい場合は以下のコマンドを実行します。
heroku pgbackups:capture --expire -r staging
現在保存されているバックアップの一覧は以下のコマンドで確認できます。
heroku pgbackups -r staging