Railsアプリを無料でデプロイする方法【Render + Neonを使用】

Ruby on Rails

これは2024年10月時点の情報です。

やりたいこと

今回は、作成したRailsアプリを無料でデプロイする方法について解説します。デプロイには、無料で利用できるRender(PaaS)とNeon(PostgreSQLデプロイサービス)を組み合わせます。


利用するサービス

Render.com

Renderは、Webアプリを簡単に公開できるPaaS(Platform as a Service)です。無料のプランが用意されており、スタートアップや個人開発に最適です。

Renderの公式サイト

Neon

Neonは、PostgreSQLを簡単にデプロイできるサービスです。サーバー管理の手間を減らし、データベースの管理を効率化します。

Neonの公式サイト


デプロイ手順

Neonのデプロイ設定

まずはデータベースのセットアップから始めます。Neonを使用して、PostgreSQLのデプロイを行います。

Neonアカウントの登録とデータベースの作成

  1. Neonの公式サイトにアクセスし、Free Tierでアカウント登録を行います。
  2. 画面の指示に従って、新しいデータベースを作成します。
  3. DashboardConnection Detailsを開きます。

接続情報の確認

  • Connection Details内の接続情報を確認し、Node.jsのオプションに切り替えてから、.envタブを選択します。
  • タブ内の以下の項目をメモします。
    • PGHOST
    • PGDATABASE
    • PGUSER
    • PGPASSWORD
    • ENDPOINT_ID
  • PGPASSWORDが不明な場合は、サイドバーのBranchesからRolesを選択し、パスワードリセットを行って再発行します。

⚠️ 注意: これらの情報は機密情報です。他人に共有しないようにしてください。

Railsの設定に接続情報を追加

メモした内容を使って、Railsアプリ内でNeonを使用できるように設定を行います。

  1. 以下のコマンドを実行し、Railsのcredentials.yml.encファイルに接続情報を追加します。
Bash
EDITOR="vi" rails credentials:edit
  1. 下記の内容を追加します。
YAML
neon:
  username: PGUSERの内容
  host: PGHOSTの内容
  database: PGDATABASEの内容
  password: PGPASSWORDの内容
  1. config/database.ymlファイルにも、以下の内容を追加します。
YAML
production:
  <<: *default
  host: <%= Rails.application.credentials.neon&.fetch(:host) %>
  database: <%= Rails.application.credentials.neon&.fetch(:database) %>
  username: <%= Rails.application.credentials.neon&.fetch(:username) %>
  password: <%= Rails.application.credentials.neon&.fetch(:password) %>
  ssl_mode: verify_identity
  sslca: "/etc/ssl/certs/ca-certificates.crt"

Renderのデプロイ設定

次に、Renderを使ってアプリをデプロイします。

Pumaの設定

config/puma.rbに以下の内容を追加し、Pumaの設定を行います。

Ruby
workers ENV.fetch("WEB_CONCURRENCY") { 2 }
preload_app!

production環境の設定

config/environments/production.rbファイルに、静的ファイルをサーバーで提供する設定を追記します。

Ruby
config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present? || ENV['RENDER'].present?

Build用のスクリプト作成

アプリをビルドするためのシェルスクリプトをbin/render-build.shとして作成し、以下の内容を記載します。

ShellScript
#!/usr/bin/env bash
# exit on error
set -o errexit

bundle install
bundle exec rake assets:precompile
bundle exec rake assets:clean
bundle exec rake db:migrate

Renderアカウントの登録とサービス作成

  1. Renderの公式サイトでアカウントを登録します。
  2. 登録が完了したら、ダッシュボードのヘッダーからNewWeb Serviceを選択し、GitHubリポジトリと連携します。

Webサービスの設定

Webサービスを作成する際の設定は以下の通りです。

項目入力内容
Branchデプロイしたいブランチ名
RuntimeRuby
Build Command./bin/render-build.sh
Start Commandbundle exec puma -C config/puma.rb
Instance TypeFree
  • 画面下部のAdvanced内にあるAdd Environment Variableから、config/master.keyの内容をRAILS_MASTER_KEYとして登録します。

デプロイの実行

Create Web Serviceボタンをクリックすると、デプロイが開始されます。完了すると、表示されるURLからデプロイされたアプリにアクセスできます。


まとめと感想

今回は、RailsアプリケーションをRenderとNeonを使って無料でデプロイする方法を紹介しました。無料でアプリを公開したいときに最適な方法で、スタートアップや個人開発のプロジェクトに役立ちます。

Neonの設定やデプロイは少し手間がかかるかもしれませんが、これを習得することで、データベースやアプリのデプロイがスムーズに行えるようになります。ぜひ、この手順を参考にして、実際のアプリデプロイに挑戦してみてください。

今回の内容が参考になったら幸いです。

コメント

タイトルとURLをコピーしました