CentOSでRailsアプリをデプロイする手順

はじめに

CentOSでRailsアプリをデプロイする手順を整理する。

環境

  • さくらVPS
  • CentOS release 6.7 (Final)
  • Rails5.1
  • MySQL 5.7

手順

ドメイン取得

お名前.comドメインとさくらネームサーバの初期設定』参照

バーチャルホストの設定とhttps化

CentOS – さくらVPSでLet’s Encrypt!』参照

git clone

gitを使ってソースコードをダウンロードする。

$ sudo git clone https://[GitHubなどリポジトリのURL]

ディレクトリの権限も変更しておく。

$ sudo chown [ユーザ名] [ディレクトリ名] -R

アプリのディレクトリに移動し、masterブランチをpullしとく。

$ cd [ディレクトリ名]
$ git pull origin master
$ git checkout master

bundle install

まずはbundle installですね。

$ bundle install

エラー:’libv8′

Gemfile.lockで’libv8’のDEPENDENCIESエラーが発生。

Your Gemfile.lock is corrupt. The following gem is missing from the DEPENDENCIES section: 'libv8'

以下のコマンドで設定ファイルを更新することで解決。

$ bundle config build.libv8 --with-system-v8
$ bundle config build.therubyracer --with-system-v8

secret_key_baseの設定

Rails5.1から導入されたEncrypted secretsを使って、本番のsecret_key_baseを設定する。

まずはセットアップ。以下のコマンドでsecrets.yml.encが生成される。

$ rails secrets:setup

secret_key_baseを生成してコピーしておく。

$ rails secret
53df2f0bf271d73e0cf191a1cdec053bcf7240f..............

secrets.yml.encを開いて、secret_key_baseを記載する。

$ EDITOR=vim rails secrets:edit

production:
  secret_key_base: 53df2f0bf271d73e0cf191a1cdec053bcf7240f..............

DB設定

railsコマンドでDBを生成。

$ rails db:create RAILS_ENV=production

ridgepoleを使っているので、migrateではなくridgepole applyを実行。

$ bundle exec ridgepole -c config/database.yml -E production --apply -f db/Schemafile

エラー:Invalid default value

created_atのデフォルトにCURRENT_TIMESTAMPを指定していたことによって以下のエラーが発生。

[ERROR] Mysql2::Error: Invalid default value for 'created_at'

MySQLを5.6.5以上にバージョンアップすれば、エラーを解決できるとのこと。

MySQLのバージョン更新は、『CentOSのMySQLを5.1から5.7に更新する手順』参照。

アセットのコンパイル

本番環境ではデフォルトで、アセットの自動コンパイルが無効となっているので、以下コマンドを実行。

$ rails assets:precompile

サーバ再起動

後はアパッチを再起動するだけ!

$ sudo service httpd restart

所感

MySQLはなんやかんやエラーでたりする。そんな時は落ち着いてエラーメッセージをしっかり読む。

Sources

兵庫県西宮市生まれのフリーランスRailsエンジニア。海外を拠点にデジタルノマド生活中。/ 前職・資格:公認会計士 / プログラミング言語:Ruby, JavaScript, HTML, CSS / 日本語・英語
コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です