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出来るようにする。Linuxfirewallの設定を確認、設定しましょう。


RailsアプリもProductionモードにしておく。
"config/enbironment.rb"の中の

ENV['RAILS_ENV'] ||= 'production'

と設定する。




○DB側の設定のポイント
MySQLのポート(3306)をWebサーバー側からINPUT出来るようにする。Linuxfirewallの設定を確認、設定しましょう。

・データベースに権限をしっかり設定する。
例)

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.

そもそも、lighttpdrailsをどうやって動かすの?と言う方は、Rails + lighttpd + SSL - 基本へ帰ろう←をご覧ください。