Help us understand the problem. What is going on with this article?

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にアクセスできるか確認する。

参考

7sgg_m
お仕事でRuby on Rails触ってます。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away