LoginSignup
0
0

More than 3 years have passed since last update.

Herokuアプリお引っ越し(rails)

Posted at

概要

heroku上のrailsアプリを別アカウントに引っ越しする(dbはpostgresql)

前提

heroku cliをインストールしておく。
https://devcenter.heroku.com/ja/articles/heroku-cli

記事作成時点

heroku --version
heroku/7.47.6 darwin-x64 node-v12.16.2

アプリの移行

# 現行アカウントにログイン
heroku login

# ソースをダウンロード
heroku git:clone -a 現行アプリ名
cd 現行アプリ名

# git remoteを削除
git remote rm heroku

# git remoteを確認
git remote -v

# 設定している環境変数があれば控えておく(basic認証用パスワード等)
heroku config -a アプリ名

# ログアウト
heroku logout

# 必要に応じてruby,railsのバージョン変更、ソース修正等実施

# 新アカウントにログイン
heroku login

# 新アカウントにアプリを作成
heroku create 移行用アプリ名

# git remoteを確認(create時に自動設定されるはず)
git remote -v

# アプリのデプロイ
git push heroku master

# 環境変数を設定(必要に応じて)
heroku config:set BASIC_AUTH_PASSWORD="password" -a 移行用アプリ名
heroku config:set BASIC_AUTH_USERNAME="user" -a 移行用アプリ名

# 環境変数確認
heroku config

# アドオン追加(必要に応じて)
heroku addons:create heroku-postgresql:hobby-basic
heroku addons:create papertrail:choklad

# addon で登録されているのを確認
heroku addons

# ログアウト
heroku logout

dynoのアップグレード(必要に応じて)

webブラウザでherokuのアプリ設定画面を開く
Resources->Change dyno types->Hobbyなど

移行開始連絡

これ以降アプリ触っても責任取れない旨を通知(必要に応じて)

DBの移行

# 現行アカウントにログイン
heroku login

# メンテナンスモードにする
heroku maintenance:on -a 現行アプリ名

# ワーカーを停止しておく(あれば)
heroku ps:scale worker=0 -a 現行アプリ名

# 現行データ件数確認等(必要に応じて)
heroku run rails c -a 現行アプリ名
MyModel.count

# マニュアルバックアップする
heroku pg:backups capture -a 現行アプリ名

# バックアップ結果を確認する
heroku pg:backups -a 現行アプリ名

# バックアップのdumpファイルをローカルに取得する
heroku pg:backups:download  -a 現行アプリ名

# 現行アカウントからログアウト
heroku logout

# dumpをアップロード(例はs3)
#  好きな方法でs3にアップロード
#  ファイルを公開(パブリックアクセス)に変更
#  ファイルのURLを取得

# 新アカウントにログイン
heroku login

# リストア実施
heroku pg:backups restore 'https://kwgch-upload.s3-ap-northeast-1.amazonaws.com/db_migration/latest.dump' DATABASE_URL

# 移行件数確認
heroku run rails c
MyModel.count

# workerの起動(あれば)
heroku ps:scale worker=1

動作確認

よしなに

問題が発生した場合

現行アプリを再開する

# メンテナンスモードoffにする
heroku maintenance:off -a 現行アプリ

# ワーカーを起動しておく(あれば)
heroku ps:scale worker=1 -a 現行アプリ

問題が発生しなかった場合

アプリ名変更

※アプリ名を変更することで、URLも変更される

現行アカウント
現行アプリ名 → バックアップ用アプリ名

新アカウント
移行用アプリ名 → 現行アプリ名

移行終了連絡

(必要に応じて)

そのほか

本番移行前に、手順書の作成と、リハーサルの実施をおすすめします。
本番は1人でさわるより、ペアオペが望ましいです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0