Ruby on RailsのアプリをAWSにデプロイする

●サンプルアプリケーションを作成する

rails new happ -d mysql
cd happ

 

config\database.ymlを変更する
development:
  username: root
  password: password
  host: localhost
  port: 3306
production:
  url: <%= ENV['DATABASE_URL'] %>

 

ローカル環境のデータベースを作成する
rails db:create

 

モデル等の追加

rails generate scaffold book isbn:string title:string price:integer publish:string published:date dl:boolean

 

ローカル環境のテーブルを作成する

rails db:migrate

 

ローカル環境で稼働を確認する

rails server

 

http://localhost:3000/books

 

 


AWS環境構築

vpc を作成する

      10.0.0.0/16

 

サブネットを作成する

    以下の別りAZとする

    10.0.100.0/24        パブリック(パブリック IPv4 アドレスの自動  オン)

    10.0.200.0/24         プライベート

    10.0.201.0/24         プライベート

 

インターネットゲートウェイを作成し、vpcにアタッチする

 

ルートテーブルにインターネットゲートウェイを追加する

 

セキュリティグループを作成する

    web用

        インバウンドルール    ssh,http,https,3000

    db用

        インバウンドルール    mysql

 

EC2インスタンスを作成する

    AMIにAmazon Linux2を選択

    パブリックサブネット

    web用セキュリティグループ

 

 ●EC2インスタンスのセットアップ

sudo yum -y update

sudo yum install -y git curl unzip gcc openssl-devel readline-devel mysql-devel

Gitの設定

git config --global user.name "xxx"

git config --global user.email "xxx@xxxx"

タイムゾーンの変更

sudo timedatectl set-timezone Asia/Tokyo

Rubyのインストール

git clone https://github.com/rbenv/rbenv.git ~/.rbenv

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile

~/.rbenv/bin/rbenv init

vi .bash_profile

下記の行を最後に追加する

eval "$(rbenv init -)"

プロファイルを反映する

source ~/.bash_profile

rbenv -v

ruby-buildプラグインをインストール

git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build

 

Rubyをインストール

インストールできるRubyの一覧を確認する

rbenv install -l

インストールする

rbenv install 2.6.6

グローバル設定

rbenv global 2.6.6

インストール確認

ruby -v

Bundlerのインストール

gem install bundler

which bundle

 

railsのインストール

gem install rails

 

 

●データベースの作成

RDSからMySQL5.7を選択

DB インスタンス識別子  database-1

マスターユーザー     admin / passwd01

最初のデータベース名 mydb

 

●Nodeのインストール
sudo curl -sL https://rpm.nodesource.com/setup_12.x | sudo bash -
sudo yum install -y nodejs
node --version

●アプリケーションの配置

git clone https://github.com/dala00/shuwasystem-rails.git
cd shuwasystem-rails

.ruby-versionとGemfileのRubyのバージョンをサーバーに合わせる

bundle install --without test development


●データベース接続情報の設定

cp .env.example .env

vi .env

 

MYSQL_HOST=RDSのエンドポイント
MYSQL_DATABASE=mydb
MYSQL_USERNAME=admin
MYSQL_PASSWORD=passwd01

 

秘密鍵の設定

rm config/credentials.yml.enc

EDITOR=vim bin/rails credentials:edit

 

 

マイグレーション

RAILS_ENV=production bin/rails db:migrate

 

アセットのビルド

RAILS_ENV=production bundle exec rake assets:precompile

 

●稼働確認

bin/rails s -e production