Herokuについて整理したいためメモ

HerokuでRailsアプリケーションを公開するときにやることが多かったので、メモしておきます。まずはHerokuのイメージ図を貼り付けておこうと思います。
herokuのイメージ

HerokuとRailsを使うために必要なソフト

HerokuとRailsを使えるようにするには、以外と多くのことをやらないといけません。以下に必要なソフトをまとめました。ドットインストールを見て仮想開発環境の構築を行うとpostgresqlとHeroku以外は入っている状態になっています。

  • git
  • postgresql
  • ruby
  • Rails
  • Heroku

postgresqlの導入記事は以下に書いておきました
CentOS6にpostgreSQLを導入して使えるようにするまで

Herokuを使えるようにするまでの記事は以下に書いておきました。Herokuを導入するにはまずはHerokuのアカウントを取得する必要があります。
CentOS6にHerokuを導入してHerokuコマンドを使えるようにするまで

初回Heroku公開

まずはherokuにログインとpostgresqlを立ち上げます。postgresqlのサービススタートはお使いの環境によってコマンドが異なるかもいしれません。

$ heroku login
$ sudo service postgresql-11 start

まずはRailsアプリを作成します。Herokuはデータベースにpostgresqlを使っているので、postgresqlを指定してアプリを作成します。ここでgitの初期を行っておくとよいかと思います。

$ rails new appname -d postgresql
$ git init

次にGemfileを編集します。以下のもの追加すればよいようです

#scaffold確認用に必要
gem 'therubyracer', platforms: :ruby
gem 'jquery-rails'
#herokuを使うために必要
gem 'rails_12factor', group: :production

次にProcfileを作成します。Procfileはherokuで特定のコマンドを使えるようにするために必要です。以下の内容を記述して保存します。

web: bundle exec rails server -p $PORT

ここまでできたらgitにコミットします。$ git add .でもいいのですがエラーがでるかもしれないので、git add -Aにしておきます。

git add -A
git commit -m "hoge"

次に$ heroku createを実行します。このコマンドを実行するとアプリのURLとリモートが作成されます。

herokuのアプリ名は$ heroku appsでみることができます。$ heroku apps:infoでアプリのURLをみることができます。リモートな内容は.git/configファイルに記述してあります。


$ heroku apps herokuのアプリ名を見る
$ heroku apps:info アプリのURLを見る
$ cat .git/config .git/configファイルの内容を表示する

筆者の場合はherokuアプリのurlにrailsアプリ名が含まれていたので以下のように書き換えました。

url = https://git.heroku.com/#rails app name#.git
url = https://git.heroku.com/#heroku app name#.git

herokuにpushします

$ git push heroku master

成功したらherokuにpostgresqlのアドオンを追加します

$ heroku addons:add heroku-postgresql

次にheroku runします

$ heroku run rake db:migrate

ここまでやるとようやくherokuアプリのURLにアクセスできるようになります。

2回目・再起動

再度herokuアプリにアクセスしようとするherokuアプリにアクセスできなくなります。このあたりはherokuのプランを参照する必要があるかと思います。$heroku psコマンドで確認するとdynoがスリープしていることがわかります

For more information on dyno sleeping and how to upgrade, see:

再度herokuへpushしてdynoを起動します。場合によってはgit commitをしておきます。

$ git add.
$ git commit -m "hoge"
$ git push heroku master

とりあえずこれでアクセスできるようになります。

そのほかの情報

プロセスやログをみたるめのコマンドを書いておきます。

$ heroku ps #プロセスを見る
$ heroku ps:scale web=2 #dynoを増やす ※有料
$ heroku logs #ログを見る ※1500行まで
$ heroku logs --tail #リアルタイムにログを見る
$ heroku maingtenance #メンナンスモードの状態を表示
$ heroku maintenance:on #メンテナンスモードをon
$ heroku maintenance:off #メンテナンスモードをoff

herokuのアプリがおかしいときはherokuのファイルの中身をみることができます

$ heroku run bash #herokuの中身をみることができるモードになる
$ heroku run rails console #herokuでrails consoleを立ち上げ

herokuにpushしたものはreleasesというものでみることができて、前のバージョンに戻すことも可能です

$ heroku releases #リリースの一覧を表示する
$ heroku releases:rollback #バージョンを戻る
$ heroku releases:rollback v2 #指定したバージョンに戻す