1
1

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 1 year has passed since last update.

Rails7.0 + Herokuで初めての本番環境へのデプロイ!!

Posted at

やったこと

Ruby on Railsで作成した自作アプリをHerokuでデプロイしました。
デプロイする上で多様な情報に埋もれてかなり詰まったので、その方法・手順を整理していきます!

開発環境

  • macOS Monterey
  • Ruby 3.1.2
  • Ruby on Rails 7.0.4
  • Heroku
  • MySQL 8.0
  • GitHub

デプロイの手順

  1. Rails上のファイルの設定
  2. Herokuの登録・設定
  3. :construction:WIP)追加の設定(SSL, Redis, credentials, ActiveStorage) 

1. Rails上のファイルの設定

  1. config/database.ymlについては、DATABASE_URLという環境変数をHeroku上で後に設定すればそれ以外の環境変数は不要。(参考

    config/database.yml
    production:
      <<: *default
    
  2. config/environments/production.rbはデフォルトのままでOK。(参考

  3. Procfileの作成(参考
    サーバープロセスのブート方法を明記。

    Procfile
    web: bin/rails server -p $PORT -e $RAILS_ENV
    worker: bundle exec sidekiq
    
  4. 上記の変更をgitにコミットしておく。

2. Herokuの登録・設定

  1. こちらからHerokuのアカウント作成

  2. Heroku CLIをインストール

    $ brew tap heroku/brew && brew install heroku
    
  3. Herokuにログイン( → herokuコマンドが使える状態に)

    $ heroku login
    
  4. Heroku上でアプリを作成。ソースコードをHerokuが受け取れるようになる。herokuというリモートリポジトリが追加される。<アプリ名>には自身のアプリの名前を入れる。(ただし重複不可)

    $ heroku apps:create <アプリ名>
    
  5. 本番環境でMySQLを使うためにJawsDBアドオンを追加。<プラン名>には現時点で無料プランのkitefinを入れた。
    JawsDBを使う理由MySQLのバージョン指定方法

    heroku addons:create jawsdb:<プラン名> -a <アプリ名> --version=8.0
    
  6. Heroku上で環境変数を設定(参考
    ① JawsDBのURLを確認

    $ heroku config
    === karoyaka Config Vars
    JAWSDB_URL: mysql://<ユーザー名>:<パスワード>@<ホスト>:<ポート番号>/<データベース名>
    

    ② 確認したURLを、環境変数として設定していく。mysql2 gemを使用しているため、DATABASE_URLではmysql2://スキーマを使う。(参考

    $ heroku config:set DATABASE_URL='mysql2://<ユーザー名>:<パスワード>@<ホスト>/<データベース名>?reconnect=true'
    
  7. Heroku上へデプロイ。mainブランチ以外からのプッシュ時は、<現在のブランチ名>:mainと書けばOK。今後も、ソースコードの変更のたびにこのコマンドを打つ。

    $ git push heroku main
    
  8. データベースのマイグレーション

    $ heroku run rails db:migrate
    
  9. 画像プロセッサVipsを動かすのに必要なライブラリをインストール。インストール理由は、画像サイズの操作のためにvariantメソッドを使っているため。(参考①参考②

    $ heroku stack:set heroku-20 # ビルドパックの対象内のstackに変更
    $ heroku buildpacks:add --index 1 https://github.com/heroku/heroku-buildpack-apt
    $ heroku buildpacks:add --index 2 https://github.com/brandoncc/heroku-buildpack-vips
    $ cat <<EOF >Aptfile
    > libglib2.0-0
    > libglib2.0-dev
    > libpoppler-glib8
    > EOF
    

    → コミット & デプロイ

  10. アプリを開く !! 🥳

    $ heroku open
    

3. (:construction:WIP)追加の設定

※ 作業途中。これから設定していきます。

  1. config/master.key (参考①参考②

  2. config/initializers/sessions_store.rb ?

    1. Rails の session store に Heroku Redis を利用する
  3. config/environments/production.rbファイルで、config.force_ssl = trueを追加し、HTTPSを強制するように

  4. ActiveStorageをS3に設定

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?