ホーム DoRuby 同じappでDBを使い分ける

同じappでDBを使い分ける

この記事はアピリッツの技術ブログ「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と打って正常にアクセスできれば完了です。

記事を共有

最近人気な記事