rails5, puma, nginx, debianを使ってデプロイ!最初から最後まで!
何度やっても忘れるので今度こそ最初から最後まで備忘録を書きます。
デプロイまとめ
1. ローカルで本番環境に流す
1-1. 今回のアプリケーションに必要になる本番環境でのDBと、ユーザー名とパスワードを設定する。
以上でユーザ作成は完了です。
ちなみに上記の場合は全てのデータベースとテーブルに対する全権限をrailsuserに付与していますが、特定のデータベースや処理を限定して権限を付与することも可能です。
1-2. データベース設定ファイル修正
今回は本番環境のMySQLにRails用のMySQLユーザとしてユーザ名がrailsuser、パスワードがmypasswordであるユーザを作成したのでこの情報をconfig/database.ymlに記述します。
1-3. 開発, テスト, 本番環境のデータベース、テーブル、seed-fuを作成
続いて開発, テスト, 本番環境のデータベース、テーブルを作成します。
上記コマンドを実行により、
- development環境用にRails_developmentという名前のデータベース
- test環境用にRails_testという名前のデータベース
- production環境用にRails_productionという名前のデータベース
がそれぞれ作成されます。
ここでproduction環境のコマンド実行時に1-1で設定したmypasswordをオプションとして付け加えること。
そうしないとエラーが発生する。
上記コマンドでマイグレイト, seedファイルの挿入。
1-4. assetファイルのコンパイル
コンソールで以下のコマンドを叩いてapp/assets以下のファイルをコンパイルします。
assets:cleanも一緒に入れておくと古いファイルも消しておいてくれて便利。
そして、動的にコンパイルできるようにセッティングします。
Rails.root/config/environments/production.rbを少し編集します。
上記に編集します。
こうすることにより、
サーバがリクエストを受け取った際、コンパイル済みのファイルが見つからない場合にその場でコンパイルを行う設定が可能です。
これならリポジトリへの登録は不要です。しかし動的コンパイルなので初回リクエスト時にはレスポンスが犠牲になります。
それが嫌なら、capistranoを使いましょう。
ここまでできたら確認しましょう。
これで無事に繋がれば第一段階は完了です。
2. nginxとpumaでデプロイする。
2-1. nginxの設定
2-2. pumaの設定
rails-root/config/puma.rb このファイルに
これを足すだけだ
ここまでできたら確認しましょう。
これでnginxで設定したポートで開ければここまでは完了です。
3. debianにデータを移す
3-1. railsアプリをdebianにコピーします。
これでデビアンにローカルファイルが全てコピーされました。
4. 本番環境の更新をする。
4-1. gitでバージョンを合わせる。
4-2. databaseを作成して、シードファイルを流す
4-3. プリコンパイル
4-4. サーバー起動
これで完成!
ドメインを確認してください。