その他
    ホーム技術発信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と打って正常にアクセスできれば完了です。