5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

HerokuにRailsアプリをデプロイする手順

Last updated at Posted at 2015-02-27

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を使いこなせないと辛い・・・ このページのリファレンスが大活躍。
5
5
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
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?