行動すれば次の現実

テック中心の個人ブログ

既存のRailsアプリをHerokuにデプロイして本番稼働させるまでの手順

既存のRailsアプリをHerokuにデプロイして本番稼働させるまでの手順を説明します。

運用面を考慮した細かな設定も含みますので、公式ドキュメントよりも豊富な内容になっております。

1. Herokuで新しいアプリを作成する

Heroku管理画面からCreate New Appします。

任意の名前を入力してくHerokuアプリを作成してください。

2. ビルドパックを登録する

SettingsタブのBuildpacksから任意のビルドパックを登録します。 Webpackerを使用しているアプリの場合はnodejsとrubyを登録します。

3. GitHubと連携する

Heroku上にデプロイできるようにGitHubにリモートリポジトリを登録します。

heroku git:remote -a hello-your-heroku-app-name

git remote -vでリモートリポジトリの設定を確認するとHerokuと連携されていることが確認できます。

git remote -v

heroku  https://git.heroku.com/hello-your-heroku-app-name.git (fetch)
heroku  https://git.heroku.com/hello-your-heroku-app-name.git (push)

4. Herokuにデプロイする

下記コマンドによりHerokuにデプロイします。 デプロイが成功すると、最小限の構成でDynoやDBが構築されます。

git push heroku master

5. タイムゾーンの設定

Herokuのタイムゾーンを東京に設定します

$ heroku run bash
~ $ date
Mon Mar 7 02:35:04 UTC 2022
~ $ exit ※一旦抜けます
$ heroku config:add TZ=Asia/Tokyo
~ $ date
Mon Mar 7 11:35:48 JST 2022

DBのタイムゾーンを東京に設定します

$ heroku pg:psql
DATABASE=> select current_timestamp;

       current_timestamp
-------------------------------
 2022-03-07 08:49:45.681203+00
(1 row)

DATABASE=> alter database データベース名 set timezone = 'Asia/Tokyo';
DATABASE=> \q ※一旦抜けます

$ heroku pg:psql
DATABASE=> select current_timestamp;
       current_timestamp
-------------------------------
 2022-03-07 17:51:08.162538+09
(1 row)

6. DBの構築

DBを構築します。必要に応じてseedを流します

heroku run rake db:migrate
heroku run rake db:seed

7. 環境変数の設定

$ heroku config:add WEB_CONCURRENCY=1
$ heroku config:add LANG=ja_JP.UTF-8

8. 必要なアドオンをインストール

必要があればアプリで使用するアドオンをインストールします。

弊社のプロジェクトの場合は以下のアドオンをインストールします

  • Heroku Redis
  • Papertrail
  • Scout APM

9. アプリの起動確認

最後にアプリの起動確認をして一通りの構築作業は完了です

heroku open

本番稼働に備えて

本番稼働に備えて以下の設定を行うことをオススメします。

DynoをHobbyプラン以上にする

DynoはHobby以上でなければ一定時間でスリープしてしまいますので、最低限Hobbyプラン以上にする必要があります。

DBをStandard0以上にする

Freeだと10,000レコードの制限があり、Hobbyだとインメモリデータベースではないので速度が遅いです。 そのため、Standard0以上をオススメします。

DBのアップグレード手順は下記の記事を参考にしてみてください。

HerokuのDBを有料プラン(Hobby)に切り替える方法 - 行動すれば次の現実

独自ドメインの設定

ドメインにherokuapp.comが付いてしまうので独自ドメインを設定しましょう。 独自ドメインを設定するにはDynoがHobby以上である必要があります。