やりたいこと
- さくらVPS上にインストールしたDebianにRailsアプリを構築
- production環境で動かす
- ローカルではDBはsqlite3だったが、PostgreSQLに変更
環境
- さくらVPS
- Debian GNU/Linux 10 (buster)
- Mac使用
- DB: PostgreSQL 10.11
手順
VSCodeでLinuxサーバー上のファイルを編集
VSCodeでLinux上のファイルをいじりたいので以下の方法でリモートマシンにアクセスする。
Railsアプリを用意する
適当にrails new
してRailsアプリをつくるか、GitHubからクローンしてくる。
クローンしてきたらbundle installしておく。
bundle install
sqlite3をPostgreSQLに変更
今回、私はGitHubから自分のアプリをクローンする方法をとった。 その時点のDBはsqlite3だったが、このタイミングでPostgreSQLに変更する。
DebianにPostgreSQLをインストールする方法はこちら。
Gemfileに以下を追加。
# 追加(sqlite3は削除してもいい) gem "pg"
そしてインストール。
bundle install
config/database.ymlを編集する。
default: &default # postgresqlに変更 adapter: postgresql pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> timeout: 5000 # 追加 username: ユーザーネーム password: パスワード # database名を アプリ名_development development: <<: *default database: rails_lesson_development # database名を アプリ名_test test: <<: *default database: rails_lesson_test # database名を アプリ名_production production: <<: *default database: ails_lesson_production
ユーザーネームとパスワードは、PostgreSQLでユーザーをつくったときのものを設定する。
本番環境用にDBをcreateし、migrateする。
RAILS_ENV=production bin/rails db:create db:migrate
master.key を確認
Linux上で普通にrails new
してアプリをつくった場合、master.keyは生成される。しかし、今回のようにGitHubからクローンしてきた場合は存在しない。(.gitignoreで省かれてるため)
よって自分で用意する。
touch config/master.key
上記ファイルに、もともとのmaster.keyに書いてあるkeyをコピペする。(ただし、この方法がベストプラクティスなのか自信がないので後から書き換えるかも)
プリコンパイル
config/environments/production.rb を修正。 これを変更しないとプリコンパイルができなかったり、CSSが効かなかったり。
# config.assets.compile = false config.assets.compile = true # trueに変更
プリコンパイルする。
bin/rails assets:precompile RAILS_ENV=production
サーバーを動かす
さくらVPSにターミナルからSSHアクセスする要領で、IPアドレスを指定して本番環境用のサーバーを立ち上げる。
bin/rails s --environment=production -b IPアドレス # 省略形 bin/rails s -e production -b IPアドレス
サーバーが立ち上がったら、ページにアクセスする。
# アクセス先 http://IPアドレス:3000/
これでいけるはず。動かなかったらツイッターまでお気軽にご質問ください〜。