production環境でRailsアプリを立ち上げる
ローカルで開発していたRailsアプリをリモートサーバーに置いて、本番環境(production)環境で立ち上げました。
結構つまずいたので手順をまとめてみようと思います。
環境
- さくらVPS
- Debian 10.3
- postgresql 11.7
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/
お疲れ様でした。何か間違いがあればお気軽にコメントください😄
続きの記事も書きましたので、よければご覧ください😊