サーバ側プログラマーは自分一人だったので、開発サーバのディレクトリをローカルのMacでマウントしてそこをEclipseのWorkspaceにしちゃうという、かなりアクロバティックなやり方をしていた。
これだと、
コーディング → サーバにアップ
という作業が必要なく、コーディングしたものがすぐに反映されるのでかなり重宝していた。
ただ、もう一人サーバ側プログラマーが加わったこともあり、何より「さすがにちょっと危険かも」という気がしてきたので、やり方を見直すことにした。
では、実際にどのようにすればいいのか。
必要要件としては以下のとおり。
- 開発者ごとに別々に作業ディレクトリがある
- 動作確認はローカルではなくサーバで行う
- フロント側のFlashやJSは共通のものを使う
- 全環境でソースは設定ファイルに至るまで共通
まずは簡単なところから手を付ける。
開発サーバに
・共通作業ディレクトリ
・プログラマーA作業ディレクトリ
・プログラマーB作業ディレクトリ
を作成。
Apahceのバーチャルホストの設定で
・dev.example.com → 共通作業ディレクトリ
・hoge.dev.example.com → プログラマA作業ディレクトリ
・fuga.dev.example.com → プログラマB作業ディレクトリ
とドキュメントルートを設定。
ここまではいいのだけど、問題はここから。
Flashから呼ばれるAPIのホスト名はdev.example.comとなっていて、共通のFlashを使うので、どうにかして
・プログラマA dev.example.com → hoge.dev.example.com
・プログラマB dev.example.com → fuga.dev.example.com
としてやる必要がある。
そこで登場するのがFiddlerというweb debugerツール。
今までも通信ログの確認などでは使っていたのだけど、調べてみるとかなりディープなことができる模様。
【Rules】→【Customize Rules】をクリック。
そうするとテキストエディタが起動するので、OnBeforeRequestというファンクション内に、
if ( oSession.HostnameIs( "dev.example.com" ) ) { oSession.hostname = "hoge.dev.example.com"; }と書いてやる。
ようするに、飛び先のホスト名がdev.example.comの時はホストをhoge.dev.example.comに置き換えちゃえと指定してやるわけだ。
で、上書き保存してdev.example.comにアクセスすると、しっかりとhoge.dev.example.comに飛ぼうとしてくれた。
参考URL:http://www.fiddler2.com/fiddler/dev/scriptsamples.asp
後はhostsの設定をしてhoge.dev.example.comの飛び先のグローバルIPをdev.example.comのグローバルIPにしてやればいいんだけど、hostsに書くんじゃなくて、さっきのプログラムに書くやり方でできないかなーと探してみたところ、ばっちり見つかった。
if文内に
oSession["x-overrideHost"] = "飛び先のグローバルIP";と書いてやると、意図したとおり動いてくれた。
いやー、Fiddlerって凄いっす。
調べれば調べるほど奥が深いし、色々と悪いこともできちゃいそうな気がする・・・
後はそれぞれの作業ディレクトリをGitで管理してやれば素敵なことになるだろうから、引き続きGitの勉強を頑張るのです。
0 件のコメント:
コメントを投稿