質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.12%

サブバージョンを利用したバージョン管理をする際のサーバー構成について

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,168

Takk0305

score 11

前提・実現したいこと

自社で作成しているWebアプリケーションのバージョン管理を行う。

1.WEBサーバー1台で構成されている「アプリA」とWEB/DBサーバーそれぞれ1台ずつで構成されている「アプリB」のバージョン管理を行う

2.GIT導入も検討したが、開発規模(1、2人)を考えSubversionを導入することに

3.「アプリA」「アプリB」それぞれの/var/www以下のディレクトリをバージョン管理したい

わからないこと

①リポジトリを設置する場所について、Subversion用のサーバーを立てるべきか?

→「アプリA」「アプリB」それぞれのサーバー内にsvnディレクトリを作成し
その中にtrunkを作成した場合問題があるか?

②Subversion用のサーバーを立てた場合

「アプリA」「アプリB」それぞれのディレクトリを作成し1台のサーバーに複数のリポジトリが存在しても問題ないか?

③本番環境へのリリースについて

変更内容をコミットし反映させたあと、
本番環境へのリリース作業のイメージがつかめておりません。

・上記①の場合
本番環境にリリースする際はSVN/trunk/var/www...以下のファイルを
vra/www...に「cp」でコピーするようなイメージでしょうか?

・上記②の場合
こちらもコミット後、本番環境へリリースする際の流れを把握したいです。

補足情報(言語/FW/ツール等のバージョンなど)

前職では簡単なHTMLページで作業する際にSubversionを利用していたので、
チェックアウトからコミットまでは把握しているのですが、
本番サーバーへのアップ部分については、別サーバー担当が行っていたためよくわかっておりません。

サーバー情報などが必要な場合はご指摘頂ければ、
用意いたしますので、恐れ入りますが、ご教授頂けますようお願い致します。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

+1

①リポジトリを設置する場所について、Subversion用のサーバーを立てるべきか?

別でなければ行けません。
本番環境と開発用リポジトリを一緒にしてしまったら

  • 本番機がマシンごと吹っ飛んだとき復旧の方法がありません
  • 開発作業が本番サービスに負荷をかけることになります
  • 本番公開前の検証環境がないということになるのでしょうか

「アプリA」「アプリB」それぞれのディレクトリを作成し1台のサーバーに複数のリポジトリが存在しても問題ないか?

問題ありません。svnserveでリポジトリルートを設定したら、その下にある各リポジトリが公開されます。

本番環境へリリースする際の流れを把握したいです。

svn exportコマンドを使うのがいいでしょう。
また、そのときのエクスポート先は本番ディレクトリに直接ではなく、リビジョン番号付きのディレクトリ(リリースディレクトリ)にまずエクスポートし、本番ディレクトリはリリースディレクトリへのシンボリックリンクという形にするのが事故が少ないかと思います。
リリースディレクトリへのエクスポート、そこへのシンボリックリンクの貼り替え、を一括で行うスクリプトを作ってそれを叩くようにすれば手軽かつ安全です。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/05/02 19:13

    ご回答頂きまして、ありがとうございます。

    本番機がマシンごと吹っ飛んだとき復旧の方法がありません
    開発作業が本番サービスに負荷をかけることになります
    本番公開前の検証環境がないということになるのでしょうか

    →こちらについて現状は小さなシステムですので検証環境は用意しておりません。
    本番機がダウンしたときの復旧については、現状FTPを使ってバックアップを取っている状態になります。

    追加で質問になってしまい恐縮ではございますが、
    Subversionを利用して「etc」ディレクトリ等、ドキュメントルート以外(今回で言うとvar/www以外)のバージョン管理を行うことは出来るのでしょうか?

    キャンセル

  • 2017/05/02 21:33

    > Subversionを利用して「etc」ディレクトリ等、ドキュメントルート以外(今回で言うとvar/www以外)のバージョン管理を行うことは出来るのでしょうか?

    できますが、それ用のetckeeperという便利なツールがsvnに対応していないんですよね。gitでやった方が。

    キャンセル

  • 2017/05/08 10:38

    ありがとうございます!学習コスト的にsvnを検討しておりましたが、
    ツールが対応していないのであれば、gitも検討してみます。

    キャンセル

+1

  1. 仮に同一サーバ内にあると仮定した場合、サーバが死ぬとソースもろともやられてしまいますね。最悪の場合サーバを新しくしてソースから入れなおす、ということを考えると、svn サーバを別にしたほうが良いです。むろん、svnサーバが死んだときにも困りますから、バックアップは考えねばなりませんが。
  2. 「アプリA」「アプリB」をそれぞれ別のプロジェクトととらえるだけですので問題ありません。SVN サーバ一つに複数のプロジェクトを管理させることが可能です。
  3. 本番環境で一度 svn checkout しておいて、更新がかかった時に svn update すればよい話です。というか、下手に cp などしたら困ると思います。
    本番環境にアップすることを決めた時点でタグをつけて、本番環境側ではそのタグまで update するようにすれば、仕掛中の作業の分まで誤って適用することを防げるでしょう。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

私の経験則からの回答ですが…
①リポジトリを設置する場所について、Subversion用のサーバーを立てるべきか?
⇒どちらでも大丈夫かと思います。
ただ、リポジトリのバックアップを更に行いたいと考えた時には、1台のサーバの方が管理が容易かと思います。

②「アプリA」「アプリB」それぞれのディレクトリを作成し1台のサーバーに複数のリポジトリが存在しても問題ないか?
⇒システム的な問題は無いと思います。もし、別プロジェクトのソースが見えてしまうとマズい様なら、ユーザーに権限を適切に振ってあげましょう。

③本番環境へのリリースについて
⇒これは、ご自身で決めて良いのでは、と思います。
基本的に修正したソースのみを反映させるのであれば、手動でやるのが良い気がします。
または、ファイル同期ソフトを使ってリリース対象のサーバとSVNの最新のリポジトリを同期させるかですかね。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.12%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる