目的
Heroku にインストールした後のアプリケーションの管理についてまとめます。
アプリケーションソースコードの再取得から再デプロイ
作成済みのアプリケーション一覧の確認
以下のコマンドを実行してください。
heroku apps
実行結果は以下のような出力になります。
=== My Apps mighty-lowlands-3837 pacific-eyrie-3425 salty-thicket-1737
My Apps の下に表示されているIDがアプリケーションの名前です。この例では、アプリケーションが3つ作成済みなのでIDが3つ表示されています。個々のアプリケーションの操作にこのIDを使います。
このIDはアプリケーションを作成した際にも表示されます。例えば以下の通りです。
Creating mighty-lowlands-3837... done, stack is cedar http://mighty-lowlands-3837.herokuapp.com/ | git@heroku.com:mighty-lowlands-3837.git
Creating mighty-lowlands-3837 とアプリケーションのIDが表示されています。
インストール済みアプリケーションのソースコード取得
Heroku にインストールしたアプリケーションは Heroku 上の Git で管理されており git clone コマンドによって取得できます。
その前に取得対象となるアプリケーションの Git リポジトリの URL を確認する必要があります。
以下のコマンドを実行してください*1。
heroku info --app アプリケーションID
実行結果は以下のような出力になります。
=== fathomless-hamlet-1029 Git URL: git@heroku.com:mighty-lowlands-3837.git Owner Email: abc@def.ghi.jkf Repo Size: 852k Slug Size: 504k Stack: cedar Web URL: http://mighty-lowlands-3837.herokuapp.com/
Git URL の値を使ってインストール済みアプリケーションを取得します。
以下のコマンドを実行してください。
git clone git@heroku.com:mighty-lowlands-3837.git
mighty-lowlands-3837 というディレクトリができて、その中にアプリケーションのソースコードが入っているはずです。カレントディレクトリに展開したい場合は、以下のコマンドを実行してください。
git clone git@heroku.com:mighty-lowlands-3837.git .
修正済みアプリケーションの再デプロイ
ソースコードを修正したら、以下のコマンドを実行してください。
git add . git commit -m "修正した内容に関する説明" git push origin master
修正済みのアプリケーションがデプロイされます。
ここで注意点ですが、最初にアプリケーションを作成してデプロイしたときは以下のコマンドを実行しました。
git push heroku master
しかし、ここでは heroku ではなく origin になっています。origin とは git clone で取ってきた取得元のリポジトリです。
.git/config ファイルを見ると以下の記述が見つかると思います。
[remote "origin"] fetch = +refs/heads/*:refs/remotes/origin/* url = git@heroku.com:mighty-lowlands-3837.git
origin はこの定義によります。最初にアプリケーションをデプロイしたときと同様に git push heroku master でデプロイをしたい場合は、以下のコマンドを実行して heroku というリモートリポジトリを設定に追加します。
git remote add heroku git@heroku.com:mighty-lowlands-3837.git
以降、git push heroku master もしくは git push origin master のいずれでも同じくデプロイできるようになります。
ブランチ/タグや別リポジトリからの強制再デプロイ
Heroku は完全な Git リポジトリとしてアプリケーションのソースコードを管理してくれますが、アプリケーションとして認識されるのは master ブランチにあるソースコードだけです。
以下のような場所
- master 以外のブランチやタグ
- 全く異なる Git リポジトリ
にあるソースコードを既存の Heroku アプリケーションとしてデプロイするには git push に --force オプションを使う必要があります。
前提として heroku という名前で Heroku の Git リポジトリがリモートリポジトリとして登録済みであるとします。
例えば beta_1 というブランチのソースコードをアプリケーションとしてデプロイするには以下のコマンドを実行してください。
git push heroku beta_1:master --force
これはローカルリポジトリのブランチ beta_1 の内容を heroku リモートリポジトリの master に強制的に入れるためのものです。
別のリポジトリの内容を入れる場合も同じく --force オプションを使います。
※ 強制再デプロイの必要性と注意点
強制再デプロイと似た方法に「アプリケーションを破棄/再作成してデプロイ」という方法がありますが全くの別物であるという点に注意してください。
データベースなどの各種アドオンによって作られる各種リソースはアプリケーション毎に作成されるものです。アプリケーションを削除すると、これらのリソースも同時に破棄され、永遠に失われてしまいます。
従って、各種リソースを持っている場合、安易にアプリケーションを破棄してはいけません。
一方で運用での必要性により、
- バージョンダウン(≒master 以外のブランチやタグのソースコードに入れ替え)
- 別アプリへの切り替え(≒全く異なる Git リポジトリのソースコードに入れ替え)
等が発生することがあり、強制再デプロイが必要になってきます。
ブランチやタグから強制再デプロイを実施する場合、リポジトリの運用に気をつけるポイントが1つあります。
- ソースコードの流れを開発用の独自リポジトリから Heroku のリポジトリへと一方通行にすること。
git push の --force オプションを使った場合、Heroku のリポジトリの内容は元々の master の情報を欠いた不完全なものになります。 不完全なHeroku のリポジトリを git clone で取り出してしまうと混乱が生じます。
その混乱を避けるためソースコードの流れは一方通行にした方が良いでしょう。
アプリケーションの各種状況確認
各アプリケーションの動作状況の確認
以下のコマンドを実行してください。
heroku ps --app アプリケーションID
実行結果は以下のような出力になります。
=== cron: `bundle exec clockwork clock.rb` cron.1: up for 18s
これは cron という「bundle exec clockwork clock.rb」コマンドを実行しているプロセスが 1 あって、動き出してから 18 秒経っているということを表しています*2。
プロセスが終了している場合(正常終了、エラー終了に関わらず)は、up ではなく crashed と表示されます。
各アプリケーションのログの確認
...
アプリケーションのプロセス管理
プロセスのスケーリング
...
プロセスの停止
...
アプリケーションの設定
ロケールの設定
heroku config:add TZ=Asia/Tokyo --app アプリケーションID heroku config:add LANG=ja_JP.UTF-8 --app アプリケーションID
最後に…アプリケーションの破棄
以下のコマンドを実行してください。
heroku destroy --app アプリケーションID
簡単にアプリケーションの削除が行われないよう以下のような警告が出ます。
! WARNING: Potentially Destructive Action ! This command will destroy アプリケーションID (including all add-ons). ! To proceed, type "アプリケーションID" or re-run this command with --confirm アプリケーションID >
警告に従い確認のためアプリケーションIDをキーボード入力するとアプリケーションが破棄されます。
もしくは以下のコマンドを実行すると、確認作業が不要になります。
heroku destroy --confirm アプリケーションID
データベースなどの各種アドオンによって作られる各種リソースはアプリケーション毎に作成されるものです。アプリケーションを削除すると、これらのリソースも同時に破棄され、永遠に失われてしまいます。
アプリケーションを破棄する場合は、注意してくださいということです。
コメント
本ページの内容に関して何かコメントがある方は、以下に記入してください。
最新の10件を表示しています。 コメントページを参照