はじめに
それでは前回に引き続き、EC2を使ってrailsのアプリをデプロイしたいと思います。
前回はEC2の環境構築までを行いました。
これまでの工程について、まだ実装されていない方はこちらの記事をぜひご覧ください
それでは早速デプロイしていきます!
手順3 gitと連携をします
EC2インスタンスにアプリケーションのコードを送るためにはGithubを使います。
連携したGithubからEC2へクローンすることでデプロイをします。
そのためにGitHubとの接続設定をします。
ターミナルで下記のコマンドを実行します。
[ec2-user@ip-172-31-23-189 www]$ git clone リポジトリURL
リポジトリURLはご自身のGitHubのページで確認することができます。
Githubのアカウント名とPWを入力し、
ダウロードが開始されます
remote: Enumerating objects: 298, done.
remote: Counting objects: 100% (298/298), done.
remote: Compressing objects: 100% (190/190), done.
remote: Total 298 (delta 109), reused 274 (delta 86), pack-reused 0
Receiving objects: 100% (298/298), 58.53 KiB | 365.00 KiB/s, done.
Resolving deltas: 100% (109/109), done.
完了
これで、EC2にAppがクローンされています。
手順4 アセットファイルをコンパイルします
まずはcssやJavaScript、画像ファイルのコンパイルを行います。
ローカル環境ではこの作業は不要でしたが、本番環境では処理速度の関係で自動的に行われないので随時行う必要があります。
下記のコマンドでアセットファイルをコンパイルします。
# クローンしたアプリのディレクトリに移動
[ec2-user@ip-172-31-47-9 ~]$ cd /var/www/レポジトリ名
# アセットファイルのコンパイルを実行
[ec2-user@ip-172-31-47-9 レポジトリ名]$ rails assets:precompile RAILS_ENV=production
コンパイルが無事終了すればOKです。
手順5 database.ymlを編集しよう
本番環境でもデータベースを作成する必要があるので、ローカルのconfig/database.ymlの本番環境の定義部分を下記のように編集します。
databaseの値は編集しないでください。
production:
<<: *default
database: アプリ名_production
username: root
password: <%= ENV['DATABASE_PASSWORD'] %>
socket: /var/lib/mysql/mysql.sock
ローカルのファイルを編集したのでcommitし、pushします。
そしてEC2インスタンスでpullをしましょう。
手順6 データベースの作成
これでデータベースサーバーに接続することができるようになりました。
次にEC2インスタンス内に今回のアプリで使用するデータベースを作成します。
下記のコマンドを実行します。
[ec2-user@ip-172-31-47-9 レポジトリ名]$ rails db:create RAILS_ENV=production
# 以下のように表示されればOK
Created database 'アプリ名_production'
次にデータベースにテーブルを作成します。
[ec2-user@ip-172-31-47-9 レポジトリ名]$ rails db:migrate RAILS_ENV=production
エラーなくテーブルが作成されればOKです。
終わりに/完成形
以上でデプロイの準備が完成です。