Edited at

EC2とRDSでrailsを動かす

More than 3 years have passed since last update.


使うもの

勉強がてらAWSで環境作ってrailsを動かします。

* EC2

* RDS(mysql)

* rails5


AWSで環境を整える

AWSで環境を整えるにあたって下記ページをほぼ参考にさせていただいてます。

とても分かりやすいです。

(下準備編)世界一丁寧なAWS解説。EC2を利用して、RailsアプリをAWSにあげるまで


VPC作成

ほぼほぼ↑の参考URLの通りなので割愛。

追加でやったことだけ書いてます。


1. VPC作成

参考ページ通り


2. サブネット作成

サブネットは東京リージョンの各アベイラビリティゾーンに1つずつ作りました。

アベイラビリティゾーン: ap-northeast-1a

CIDR: 10.0.0.0/24

アベイラビリティゾーン: ap-northeast-1c

CIDR: 10.0.1.0/24


3. インターネットゲートウェイ作成

参考ページ通り


4. ルートテーブル作成

2.サブネット作成 で作成したサブネット(2つ)を関連付け


5. セキュリティグループ作成

rails sで立ち上げた3000ポートでアクセスするので↓を追加。

タイプ:カスタム TCP ルール

プロトコル:TCP(6) ※自動選択
ポート範囲:3000
送信元: 0.0.0.0/0

さらにEC2=>RDSに接続する用のセキュリティグループをもう一つ作成

参考: Amazon RDS編~EC2インスタンスからDBインスタンスへの接続~

タイプ:MySQL/Aurora (3306)

プロトコル:TCP(6) ※自動選択
ポート範囲:3306 ※自動選択
送信元:先ほど作ったセキュリティグループ


RDS作成


RDSインスタンス作成

セキュリティグループでは、先ほどRDS用に作ったのを割り当てる


EC2作成


  • 作成後はsshで接続できるか確認。


  • apacheインストール


  • $ yum install httpd -y
    
    $ sudo service httpd start
    $ sudo chkconfig httpd on

  • ブラウザからEC2インスタンスのパブリックDNSでアクセスできるか確認。


  • 作成したRDSに接続できるか確認



  • $ sudo yum install mysql
    
    $ sudo yum install mysql-devel #後でエラーが出たのでインストール
    $ mysql -h [エンドポイント] -P 3306 -u [ユーザ名] -p [DB名]

    参考: Amazon RDS編~EC2インスタンスからDBインスタンスへの接続~




railsアプリを動かす

mysqlでDBを作成したので、rails newするときにmysqlを指定します。

また、RDSに接続するためにconfig/database.ymlを修正します。

参考: EC2で作成したrailsサーバーでRDSを使う方法#接続設定の変更

$ bundle exec rails new hoge -d mysql

$ vim config/database.yml

20行目くらいから


config/database.yml

development:

<<: *default
adapter: mysql2
encoding: utf8
reconnect: false
pool: 5
username: root #自分の環境に合わせて変更
password: password #自分の環境に合わせて変更
socket: /var/lib/mysql/mysql.sock #自分の環境に合わせて変更
host: hogehoge.rds.amazonaws.com #自分の環境に合わせて変更
database: hoge_development #自分の環境に合わせて変更


scaffold等で簡単にアプリを作ったのち、サーバ起動

$ bundle exec rails s -d -b 0.0.0.0

参考:Amazon LinuxにRuby on Rails環境構築(rbenv + ruby-build + Ruby 2.2.1 + Rails 4.2.1インストール)#WEBrickを起動する

サーバが起動したら、ブラウザからEC2インスタンスパブリックDNS:3000にアクセスできるか確認する。


参考