- PR -

ソースを共有ソースとして複数環境で利用したい

投稿者投稿内容
マルオ
会議室デビュー日: 2007/10/15
投稿数: 5
投稿日時: 2007-10-15 16:45
はじめまして。

一つのアプリケーションのソースに対して、複数の会社からアクセスがあった場合に
その会社ごとに表示を変えたいのですが、いい方法が思いつきません。

一つのサーバに対して、複数の会社からアクセスを受けるシステムを開発しています。
プログラムの内容は同じで、アクセスしてくる会社によってDBや表示用imgファイルを変えて利用したい。

現在は会社ごとにソースやデータベース等のリソースを作成しています。
 A社 → B社ソース → A社データベース、imgファイル等
 B社 → A社ソース → B社データベース、imgファイル等

これをソース管理の簡易化の目的でアクセスするソースを共通にしたいと考えています。
 A社 → 共通ソース → A社データベース、imgファイル等
 B社 → 共通ソース → B社データベース、imgファイル等

Tomcatのserver.xml、Web.xmlの設定で可能か調べてみましたが、解決方法が見つかりません。

<環境>
OS:Windows 2003 Server
webサーバ:Apache2.2
Java:JDK1.5
appサーバ:Tomcat5.5

このような設定について可能かどうか、可能ならばどのような設定をしたらよいのか皆様のお知恵をお貸しください。
よろしくお願いいたします。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-10-15 16:55
一般的にはTomcat上にWebアプリケーションを提供先会社別に用意してURLもきり変えるのが通常ですね。

ログインのタイミングで会社を特定してアクセス先を切り替えるようなこともできるけど…
運用時の安全性とかを考えると会社別に環境は切り離したい。
環境が切り離されていればSSLクライアント認証とか信頼できる方法で認証することもできますし。
それに、トラブルあったときに全サービスがダウンすることも避けられるし。
マルオ
会議室デビュー日: 2007/10/15
投稿数: 5
投稿日時: 2007-10-15 17:31
nagise様
迅速なご返答ありがとうございます。

やはり別URLで動作させるとなると、ソースも別々に管理しなければなりませんか…

>ログインのタイミングで会社を特定してアクセス先を切り替えるようなこともできるけど…
自分でも調べてみますので、上記の方法だけ教えていただけないでしょうか?

お手数をおかけしますが、よろしくお願いします。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-10-15 18:16
引用:

マルオさんの書き込み (2007-10-15 17:31) より:
>ログインのタイミングで会社を特定してアクセス先を切り替えるようなこともできるけど…
自分でも調べてみますので、上記の方法だけ教えていただけないでしょうか?



いや、プログラムで今そういうつくりにしているんでしょう?という話。

環境設定の方法論てきには、A社用、B社用の二つの環境を作って、
それぞれにリソース設定しておけば、動的なリソース切り替えの仕組みを
作りこむ必要がないよね、と。

ところが今は同一URL、同一アプリケーションで複数の会社にサービスするわけだから、
自前で権限管理して自前でリソースを切り替えるようにプログラムしてるんでしょう?

私には一緒くたにするメリットがあまり思い浮かばないのですが。
どうしてそういうURL構造を設計したんですか?
Ray
ベテラン
会議室デビュー日: 2007/09/13
投稿数: 88
投稿日時: 2007-10-18 03:30
表示を変える前に、どうやってどの会社か判断しようとしているのでしょう。

A.リクエストのURLによって。
B.リモートホストのIPアドレスによって。
C.ログインがあり、そのアカウントによって。

> アプリケーションのソース

ソースコードということではないですよね。
リソース?
でも内容を読むとアプリケーション?war?

> やはり別URLで動作させるとなると、ソースも別々に管理しなければなりませんか…

DNSのcnameとかVirtualHostとか使えば別URLでも同じアプリケーションを使えるのでは。
ajpのところをそれぞれ書いてあげれば、それだけで済まないでしょうか。

でも、ASPって要望がいろいろ(うちの会社はこうだから…とか)出たりするし、アプリは別々にしとくのが吉かも。
マルオ
会議室デビュー日: 2007/10/15
投稿数: 5
投稿日時: 2007-10-18 10:08
nagise様、Ray様
ご回答ありがとうございます。

この二日間いろいろと調べてみて、質問の仕方を間違えたことに気付きました。

【現状】
 ApacheとTomcatをmod_proxy_ajpで接続しています。
 リクエストのURLによってTomcatに転送し、Tomcat内にある会社別のPGを使用しています。
 Tomcat\\webapps内にA社、B社と分けており、ここに会社別のファイルも含めた全てのファイルが存在します。

【予定】
 ApacheとTomcatをmod_proxy_ajpで接続し、会社別のファイルをApache側に、PGなどの動的ファイルをTomcat側に配置したい。
 例)
  Apache\\htdocs内にA社フォルダ、B社フォルダと会社別に配置する
  Tomcat\\webapps内にPG、jsp等の動的ファイルを配置する

【問題点】
 ファイルの配置、共有ファイル、jspファイルの呼び出しはhttpd.confの設定でできるようになりました。

 フレームワークにstrutsを使用している為、リクエストが.doで終わるURLのみをTomcatにプロキシしようとしていますが、うまくいきません。

 調べたところ、mod_rewriteを使用すればいいようですが、RewriteRuleの書き方がまだよく分かっていません。
 以下に実験してみたコードをいくつか記述します。(失敗しました)
RewriteEngine On
RewriteCond %{REQUEST_URI} (.*).do(.*)
# RewriteRule ^/TEST/(.*) ajp://localhost:8009/TEST/$1 [P]
# RewriteRule ^/TEST/*.do ajp://localhost:8009/TEST/*.do/$1
# RewriteRule ^/TEST/(.*) ajp://localhost:8009/TEST/(.*)/$1

 ご教授よろしくお願いいたします。


Ray
ベテラン
会議室デビュー日: 2007/09/13
投稿数: 88
投稿日時: 2007-10-18 11:03
正規表現 (regular expression)が理解できていないのでしょうか。
文字列処理でよくでてくるので、ある程度勉強しとくといろいろ便利です。
ただし、アプリケーションや言語によって多少の違いがあるので注意です。
この場合、後方置換 (buckward Substitution)も使う必要があるようです。
マルオ
会議室デビュー日: 2007/10/15
投稿数: 5
投稿日時: 2007-10-18 11:20
はい。
正規表現の書き方が分かっていないので、mod_rewriteのリファレンスを見てもよく分かりませんでした。
まず正規表現から勉強しているところです。

後方置換 (buckward Substitution)ですか。
了解しました、それについても確認します。

スキルアップ/キャリアアップ(JOB@IT)