Herokuでアプリを動かそうと思って久しぶりに触ったら、思った以上に忘れててハマったので手順をメモしておきます。
前提条件
- gitコマンドをインストールしておくこと。
- heroku操作用のツール(heroku-toolbelt)を公式サイトからインストールしておくこと。
- 今回はRailsアプリの場合の手順です。
- Macで動かしてますが、Windowsでも多分同じです。
- デプロイしたいプログラムがGitリポジトリ化してある事。
- コミットしたくないデータ(パスワード等)は、ソースコード上では
ENV['ADMIN_PASSWORD']
みたいな形で、環境変数から読み取るようにしておくこと。
- コミットしたくないデータ(パスワード等)は、ソースコード上では
手順
1. 仮想マシンの作成 + Gitリポジトリとの紐付け
最初にHeroku上にデプロイ用の仮想マシンを作成し、gitリポジトリと紐付けておきます。
(Herokuへは、git push remote
でデプロイする形になります)
$ git checkout {あなたのアプリ}
$ cd {あなたのアプリ}
$ heroku login
$ heroku create
2. 仮想マシンの設定
仮想マシンの設定と、アドオンの形式で提供されるDB等をインストールしておきます。
# 初期では仮想マシン名がランダムな名前のため、識別しやすい名前にしておく
# しておかないと、管理画面で見た時にわけがわからなくて悲惨。
$ heroku app:rename 適当なサーバー名
# データベースのインストール(PostgreSQL以外は有料なので注意)
$ heroku addons:add heroku-postgresql
# cron的に使うスケジューラをインストール。
# cronいらない人は不要です。
$ heroku addons:add scheduler
$ heroku addons:open scheduler # ブラウザ上の設定ページが開く
# Timezoneを日本にしておく
$ heroku config:add TZ=Asia/Tokyo
3. デプロイ
やっとプログラムをリリースします。
環境変数でコミット出来ない秘密の値をセットするのがポイントです。
# 環境変数の設定
$ heroku config:set ADMIN_PASSWORD=secure_value
# デプロイ
# エラーなく終了することを確認
$ git push heroku master
# サーバサイズ(Dyno)を最小にしておく
# 初期が1のはずなので本来は不要だが、課金が怖いので念のため。
$ heroku ps:scale web=1
# データベース構築
$ heroku run rake db:schema:load # db:migrateがこけなければ、そちらの方がベター
$ heroku run rake db:seed
以上です。
ブラウザでの動作確認を行うには以下のコマンドを実行してください。
$ heroku open
URLがhttps://仮想マシンの名前.herokuapp.com
となっていることが確認出来ますね。
なお、独自ドメインを振りたい場合は上記のURLにCNAMEしてあげればOKです。
ハマったポイント
- デプロイ(
git push heroku master
)がコケまくります。- Gemfileに「Macのみにインストールする」みたいな設定が入ったGemfile.lockをコミットしていると、こけます。
- 特定環境のみにインストールするgemを使いたい場合は、groupで指定するのが正しいみたいです。参考
-
heroku run rake db:migrate
がうまく動かなかった。- deviseのせい??
-
db:scheme:load
で回避できるけど、最新のscheme.rbがコミットされていないとおかしくなるので要注意。- 後、migrationファイルでENGINEを設定したり、scheme.rbに残らない内容があるとかなりまずい。
- デプロイ後のログが見方がわからず、デバッグが進まなかった。
-
heroku logs -t
で、tail出来るのがわかったので解決。 - heroku-toolbeltを使いこなせないと辛い・・・ このページのリファレンスが大活躍。
-