production環境でRailsアプリを立ち上げる

ローカルで開発していたRailsアプリをリモートサーバーに置いて、本番環境(production)環境で立ち上げました。

結構つまずいたので手順をまとめてみようと思います。

環境 

1. Githubからリポジトリをクローンする

リモートサーバーにRailsアプリのクローンを作成します。

「/opt」の下で、下記コマンドを実行してください。参考1参考2

$ git clone https://github.com/YOUR-USERNAME/YOUR-REPOSITORY

Githubの公式ページにクローン作成の詳細が書かれているので、必要に応じて確認してください。

Githubにローカルで開発していたアプリをpushしていない場合は、先にpushしてください。

2. アセットのプリコンパイル

production環境では必ず、プリコンパイルを実行する必要があります。

$ bin/rails assets:precompile

3. 静的ファイルの配信サーバを設定

本番環境では、静的ファイルの配信はNginxなどのWebサーバにやってもらうのが一般的なため、デフォルトでは設定ファイルconfig/environments/production.rbにそのように書いてあります。

しかし今回は、Railsの用意している静的ファイルの配信機能を使うので、設定ファイルを修正する必要があります。

config/environments/production.rb

# コメントアウトする↓
# config.public_file_server.enabled = ENV["RAILS_SERVE_STATIC_FILES"].present? 

# 追加する↓
config.public_file_server.enabled = true 

4. production環境用のデータベースを作成する

development環境とtest環境のデータベースはSQLiteを使っていたのですが、production環境ではPostgresqlを使うように変更します。 OSにPostgreSQLをインストールしていない場合は、先にインストールしてください。

Gemfileに以下を追加します。

gem "pg"

インストールします。

$ bundle install

Postgresqlのユーザーを追加します。パスワードが求められるので、入力してください。

$ createuser -d -P ユーザー名

上記で入力したパスワードを、config/detabase.ymlで使えるように環境変数に入れる必要があります。 OSのファイル.bash_profileに以下を追加します。BOOKS_APP_DATEBASE_PASSWORDの所は各自変えてください。

~/.bash_profile

export BOOKS_APP_DATEBASE_PASSWORD=パスワード

記入したら以降のステップに進む前に設定ファイルを下記コマンドで再読み込みしてください。

$ source ~/.bash_profile

config/database.ymlを編集します。

default: &default
# postgresqlに変更します↓
  adapter: postgresql
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  timeout: 5000
# 先ほどcreateuserコマンドで作成したユーザー名を入力してください↓
  username: ユーザー名
# 先ほど作った環境変数をセットします↓
  password: <%= ENV['BOOK_APP_DATABASE_PASSWORD'] %>

development:
  <<: *default
  database: books_app_development

test:
  <<: *default
  database: books_app_test

production:
  <<: *default
# database名を アプリ名_productionに変更してください↓
  database: books_app_production

準備が整いました。下記コマンドを実行して、データベースを作成してください。

$ RAILS_ENV=production bin/rails db:create db:migrate

5. config/master.keyを作成

production環境でアプリを動かすためにはconfig/master.keyファイルが必要です。 しかし、そのファイルはGitの追跡範囲外なので、Githubからクローンを作成した場合 master.keyファイルは含まれていないので作る必要があります。

リモートサーバーのRailsアプリにconfig/master.keyファイルを作成してローカルのconfig/master.keyファイルの内容をコピペしてください。

6. サーバーを起動

下記コマンドでサーバーを起動します。

$ bin/rails s -e production -b IPアドレス

これでページが表示されるはずです✨

http://IPアドレス:3000/

お疲れ様でした。何か間違いがあればお気軽にコメントください😄

続きの記事も書きましたので、よければご覧ください😊

pckhtn.hatenablog.com

参考