バージョン管理


みなさんは社内でWEBアプリケーションの開発を行うときのバージョン管理フローをどのように行っているでしょうか。

私の勤務する会社ではSubversionを使用して、以下のような方法でバージョン管理を行っています。

※制作部とはマークアップやデザインを行う部署の事です。サーバにログインして作業する必要は無いのでTortoiseSVNなどSVNクライアントで成果物をコミットします。
※システム部には1人1台ずつ開発用のサーバが提供されています。実際には1台のサーバをXENで仮想化しています。


このフローを実現する段階は以下のように分けられます。

  1. 共用開発サーバにSVNサーバ(HTTP)を導入。
  2. 実際にSVNリポジトリを作成し、共用サーバ及び個人サーバにチェックアウト(=作業コピーの作成)。
  3. 個人サーバはローカルで、共用サーバはグローバルにWEBを公開。
  4. SVNのhook機能を利用して、個人サーバからのコミット時に自動で共用サーバの作業コピーが更新されるようにする。
  5. 本番反映を行うため、rsyncまたはlftpでサーバ間のファイルの同期を実現。
  6. 本番反映ページの開発。
  7. 制作部用にSVNクライアントでの流れを確認。
  8. 外部からの作業を行うために社内にSSHサーバを設置して、ポートフォワード(トンネリング)を行う。



以降は新たな案件が入り次第、2〜5を行うだけです。


以上の1〜8の具体的な導入方法は次回以降、1エントリずつ紹介します。
なお3についてですが、
個人サーバ・共用サーバともにApacheのバーチャルホストで実現できます。
ただし以下の条件では注意が必要です。

  • 社内のLAN内に共用サーバを設置。
  • IPアドレスが一つしか割り当てられていない。
  • ルータがポートベースのルーティングしかできない。(ネームベースでルーティングできない。⇒できるルータってあるんですかね??第4層では無理な気がするのですが。。)
  • そのIPを使用して既に別のサーバでWEBを公開していて、そのサーバを共用サーバにはしたくない。

この場合は既にあるサーバから共用サーバにリバースプロキシをかけることで解決します。
どちらにしてもApacheの設定リバースプロキシでサーバ移行を見て頂ければ良いと思いますので、以降のエントリでの説明を省きます。
また7についてはただの作業ですのでこれも割愛します。


この方法でバージョン管理及び、アップユーザの管理が行えます。
尚、当たり前の事ですが各サーバのIPアドレスによるポート制限は必ず行いましょう。
特に共用開発サーバ⇒本番サーバのFTPに注意しましょう。