使うもの
勉強がてら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名]
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行目くらいから
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
にアクセスできるか確認する。