EC2上に構築したrailsサーバーからMYSQLのアプリを作ってRDSに接続する方法
[前提条件]
EC2上にrailsサーバーが構築されている。
RDSのインスタンスを確保している。
##gem mysqlのインストール
yumでライブラリを取得した後にgemのオプションで指定する必要がある。
sudo yum -y install libmysqld-dev
gem install mysql2 -- --with-mysql-config=/usr/bin/mysql_config
##mysqlを使ったrailsアプリ作成
rails new myapp3 -d mysql
##JavaScriptを有効にする
後で使うスカフォードを有効にするため。
cd myapp
vi Gemfile
gem 'therubyracer', :platforms => :rubyをコメントイン
bundle install
##接続設定の変更
database.ymlを接続設定の部分を以下のように書き換える。
vi config/database.yml
config/database.yml
development:
adapter: mysql
encoding: utf8
reconnect: false
database: XXXXX
pool: 5
username: XXXXX
password: XXXXX
socket: /var/lib/mysql/mysql.sock
host: XXX.XXXXXXXX.us-west-2.rds.amazonaws.com
##スカフォードを使ってアプリを作る
rails generate scaffold cat name:string point:string
rake db:create
rake db:migrate
これでRDS側で確認するとテーブルができていれば設定完了。
##補足
このままだと日本語が正しく入力できないのでRDStoolkitを使って文字コードをutf8に変更する。
RDSに割り当てたパラメーターグループの設定を変更する。
defaultを割り当てた場合は変更ができないのでインスタンスを作り直す必要がある。
rds-modify-db-parameter-group パラメーターグループ名 -p "name=character_set_database, value=utf8, method=immediate" --region us-west-2
rds-modify-db-parameter-group パラメーターグループ名 -p "name=character_set_client, value=utf8, method=immediate" --region us-west-2
rds-modify-db-parameter-group パラメーターグループ名 -p "name=character_set_connection, value=utf8, method=immediate" --region us-west-2
rds-modify-db-parameter-group パラメーターグループ名 -p "name=character_set_results, value=utf8, method=immediate" --region us-west-2
rds-modify-db-parameter-group パラメーターグループ名 -p "name=character_set_server, value=utf8, method=immediate" --region us-west-2
rds-modify-db-parameter-group パラメーターグループ名 -p "name=skip-character-set-client-handshake, value=TRUE, method=pending-reboot" --region us-west-2
※us-west-2はリージョン
character_set_databaseの項目だけは変更できなかったので以下のコマンドのみmysql上で実行する。
SET character_set_database = 'utf8'
このあとデフォルトで作成されたデータベースをいったん削除して作り直す。