この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
どうもメガネです。4回目です。
今回は、railsで同じappの中で、違うDBを使う方法を説明します。
例えば、アドレスをhttp://192.168.0.2/test1と打った時とhttp://192.168.0.2/test2と打った時にデータの内容が違うということです。
どうやってやるかというとmongrelのポート番号で分けます。
まず、database.ymlの設定を行います。
test1:
adapter: postgresql
database: test1
username: postgres
password: PostgreSQLのパスワードを入力する。
encoding: utf-8
test2:
adapter: postgresql
database: test2
username: postgres
password: PostgreSQLのパスワードを入力する。
encoding: utf-8
次にMigrateします。
$ rake db:migrate RAILS_ENV=test1
$ rake db:migrate RAILS_ENV=test2
mongrel_clusterの設定をします。
mongrel_cluster1.yml,mongrel_cluster2.ymlを作成する。
# vi mongrel_cluster1.yml
user: ユーザ名
group: グループ名
cwd: アプリケーションの絶対パス
port: 3000
environment: test1
servers: 3
# vi mongrel_cluster2.yml
user: ユーザ名
group: グループ名
cwd: アプリケーションの絶対パス
port: 3003
environment: test2
servers: 3
ディレクトリを作る。
# mkdir /etc/mongrel_cluster
作ったディレクトリにmongrel_cluster1.yml, mongrel_cluster2.ymlを移動させる。
# cp mongrel_cluster1.yml /etc/mongrel_cluster/
# cp mongrel_cluster2.yml /etc/mongrel_cluster/
自動起動用スクリプトを/etc/init.d以下にコピー
# cp /usr/local/lib/ruby/gems/1.8/gems/mongrel_cluster-1.0.5/
resources/mongrel_cluster /etc/init.d/mongrel_cluster
# vi /etc/init.d/mongrel_cluster
を編集する。
#PID_DIR=/var/run/mongrel_cluster #コメントアウト
#USER=mongrel #コメントアウト
自動起動に登録する。
# chkconfig --add mongrel_cluster
# chkconfig mongrel_cluster on
つぎにhttpd.confの設定をします。
# vi /usr/local/apache2/conf/httpd.conf
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Order Deny,Allow
Allow from all
</Proxy>
RewriteEngine On
#RewriteRule ^/test1(.*)$ balancer://cluster1%{REQUEST_URI} [P,QSA,L]
#RewriteRule ^/test2(.*)$ balancer://cluster2%{REQUEST_URI} [P,QSA,L]
RewriteRule ^/test1(.*)$ balancer://cluster1%{$1} [P,QSA,L]
RewriteRule ^/test2(.*)$ balancer://cluster2%{$1} [P,QSA,L]
<Proxy balancer://cluster1>
BalancerMember http://192.168.0.2:3000 loadfactor=10
BalancerMember http://192.168.0.2:3001 loadfactor=10
BalancerMember http://192.168.0.2:3002 loadfactor=10
</Proxy>
<Proxy balancer://cluster2>
BalancerMember http://192.168.0.2:3003 loadfactor=10
BalancerMember http://192.168.0.2:3004 loadfactor=10
BalancerMember http://192.168.0.2:3005 loadfactor=10
</Proxy>
以上で設定は終わりです。
ブラウザでhttp://192.168.0.2/test1とhttp://192.168.0.2/test2と打って正常にアクセスできれば完了です。