Railsアプリ(DB:MySQL)をWebサーバーとDBサーバーで分けて運用する
今回は、RailsアプリをWebサーバーとDBサーバーを分けて設定してみよう。
(productionで動かします)
192.168.1.2 +--------------+ |Webサーバー | ←Railsアプリ本体 +--------------+ | +-----------------+ |スイッチングハブ | +-----------------+ | +--------------+ |DBサーバー | ←データベースを入れる +--------------+ 192.168.1.3
↑こんなイメージ。
○Webサーバー側の設定のポイント
・Railsのdatabase.ymlのhostは相手のIPかドメインを指定する。
production: adapter: mysql database: hoge host: 192.168.1.2 username: hogehoge password: fugafuga
・Webサーバー側にもMySQLをインストールして起動する。Webサーバー側にもMySQLを入れないと、外部のMySQLに接続できません。バージョンはDB側と異なっていても大丈夫でした。設定は特になにもしません。
・MySQLインストール
# yum install mysql # /etc/init.d/mysqld start # /sbin/chkconfig --level 3 mysqld
もちろん↓もする。
gem install mysql
・MySQLのポート(3306)をDBサーバー側からINPUT出来るようにする。Linuxのfirewallの設定を確認、設定しましょう。
・RailsアプリもProductionモードにしておく。
"config/enbironment.rb"の中の
ENV['RAILS_ENV'] ||= 'production'
と設定する。
○DB側の設定のポイント
・MySQLのポート(3306)をWebサーバー側からINPUT出来るようにする。Linuxのfirewallの設定を確認、設定しましょう。
・データベースに権限をしっかり設定する。
例)
grant all privileges on hoge.* to hogehoge@192.168.1.2 identified by 'fugafuga' with grant option; mysql> select user,host,password from mysql.user; +-----------+-----------------------+------------------+ | user | host | password | +-----------+-----------------------+------------------+ | root | localhost | | | root | localhost.localdomain | | | | localhost.localdomain | | | | localhost | | | hogehoge | 192.168.1.2 | 0f5be1d93cb3f52e | +-----------+-----------------------+------------------+
準備できましたら、Webサーバー側で
rake db:migrate RAILS_ENV=production
をしてテーブル作成。
lighttpd起動
# /usr/local/sbin/lighttpd -f /etc/lighttpd/lighttpd.conf
これでOK.
そもそも、lighttpdでrailsをどうやって動かすの?と言う方は、Rails + lighttpd + SSL - 基本へ帰ろう←をご覧ください。