この記事について
Herokuでのデプロイの予定だったが、有料化に伴いRenderを使用してデプロイを行ったので手順についてまとめます。
render公式の手順を参考に進めていきます。
事前準備
アプリ作成済み
Github連携済み
1.Renderに登録する
- まずは下記URLからrenderに登録します。
Webサービスの作成
ログインしたらNew+
をクリックし、Web Service
を選択する
すると以下の画面になるので、右側にあるConfigre account
をクリックします。
githubのページに転移するので、Repository access
のOnly select repositories
のSelect repositories
からレポジトリを選択し、Saveをクリックします。
renderのページに戻ったら、対象のリポジトリの右側にあるConnect
をクリックしてください。
フォームが表示されますので、情報を記入していきます。
Name:作成したサイト名
Region:Singapore (Southeast Asia)←日本が選択できないため、最も地理的に近い「Singapore」を選択しています。
Branch:main(masterの方もいると思いますので適宜記入)
Root Directory:とりあえず空欄
Runtime:Ruby
Build Command:後ほど修正できるため一旦そのまま
Start Command:後ほど修正できるため一旦そのまま
Plans:Free
Advanced 後ほど修正できるため一旦そのまま
ここまで記入したらCreate Web Service
をクリックします。
すると、作成したアプリのページが開かれます
これでWebサービスの作成は終了です。
2.データベースの作成
続いてデータベースの作成を行います。
右上のNew+ボタンをクリック,PosgreSQL
を選択します。
フォームに以下の情報を記入します。
Name:データベースの名前
Database:データベースの名前
User:ユーザー名
Region:Singapore (Southeast Asia)
PostgreSQL Version 人によって変わるため分からない方は、ターミナルでpsql --version
のコマンドを打ち込んでバージョンを確認してください。
Datadog API Key:記入しない
Plans:Free
Create Databaseをクリックするとデータベースが作成されます。
これでデータベースが作成されました。
3.ファイルの作成、編集
続いて諸々のファイルの編集、作成を行います。
まずは、以下ファイルの部分をコメントアウト、編集します。
- # preload_app!
+ preload_app!
- # workers ENV.fetch("WEB_CONCURRENCY") { 2 }
+ workers ENV.fetch("WEB_CONCURRENCY") { 4 }
- config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?
+ config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present? || ENV['RENDER'].present?
続いてデプロイ用のファイルを作成します。
#!/usr/bin/env bash
# exit on error
set -o errexit
bundle install
yarn install
bundle exec rails assets:precompile
bundle exec rails assets:clean
bundle exec rails webpacker:install
bundle exec rails webpacker:compile
bundle exec rails db:migrate
このファイルがデプロイ時に実行されますのでrender側で設定する必要があります。
Webアプリのページから左側のSettings
をクリックし、下の方にいくとBuild Command
という欄がありますのでそこに以下コマンドを記入して
- $ bundle install; bundle exec rake assets:precompile; bundle exec rake assets:clean;
+ ./bin/render-build.sh
次はデータベースの設定を行います。
本番環境ではPostgreSQLを使用するため、以下のようにdatabase.ymlの設定を変更します。
※赤くなっているところを修正してください。
databases:
- name: データベース名
databaseName: データベース名
user: ユーザー名
region: singapore
services:
- type: web
name: アプリ名
env: ruby
region: singapore
buildCommand: "./bin/render-build.sh"
startCommand: "bundle exec puma -C config/puma.rb"
envVars:
- key: データベースのURL
fromDatabase:
name: データベース名
property: connectionString
- key: マスターキー
sync: false
そして、startCommand: "bundle exec puma -C config/puma.rb"
という一行をrender側で設定します。
WebアプリページのSettings
のStart Command
を編集します。
- $ bundle exec puma -t 5:5 -p ${PORT:-3000} -e ${RACK_ENV:-development}
+ bundle exec puma -C config/puma.rb
4.環境変数の設定
WebアプリページのEnvironment
からAdd Environment Variable
をクリックすると、keyとValueの設定が可能となります。
下記のようにDATABASE_URL
とRAILS_MASTER_KEY
を設定します。
-
DATABASE_URLの確認
データベースのページのConnections
というところにInternal Database URL
という項目があるのでその値を上記画像のvalueの部分に貼り付けてください。 -
RAILS_MASTER_KEYの確認
プロジェクトファイルのconfig > master.keyに記載されている文字列を上記画像のvalueの部分に貼り付けてください。
5.プロジェクトフォルダ内での環境設定
.env
にConnections
に記載されている値を設定します。
マスターキーは先程確認したものを設定してください。
任意の環境変数名 = 'Passwordの値'
任意の環境変数名 = 'Internal Database URLの値'
任意の環境変数名 = 'master.keyの値'
これで環境変数の設定は完了です。
6.Githubにアップロード
最後に、Githubにアップロードして、URLをクリックして確認してみてください。
無事、自分が作成したアプリが表示されれば完了です。
参考記事