すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:SVN のデプロイと使用

最終更新日:Feb 18, 2025

Subversion ( SVN ) は、ブランチ管理システムで時間の経過に伴うデータの変更を効率的に管理するオープンソースのバージョン管理システムです。このトピックでは、Elastic Compute Service ( ECS ) で SVN をデプロイおよび使用する方法について説明します。

準備

SVN をデプロイするための ECS インスタンスを作成します。詳細については、「カスタム起動タブでインスタンスを作成する」をご参照ください。

インスタンスは、次の要件を満たしている必要があります。

  • インスタンスには、固定パブリック IP アドレス(システム割り当てまたは自動割り当てパブリック IP アドレスとも呼ばれます)が割り当てられているか、EIP が関連付けられています。パブリック帯域幅を有効にする方法については、「パブリック帯域幅を有効にする」をご参照ください。

  • オペレーティングシステム: Alibaba Cloud Linux 3、Alibaba Cloud Linux 2、または CentOS 7.x。

  • インスタンスタイプ: SVN サービスのデプロイに必要なインスタンスタイプは、プロジェクトの仕様とチームの規模によって異なります。4 vCPU と 4 GiB 以上のメモリを搭載したインスタンスタイプを使用することをお勧めします。

  • ポート 22、80、および 443 でのトラフィックを許可するために、インスタンスのセキュリティグループにインバウンドルールが追加されます。詳細については、「セキュリティグループルールの追加」をご参照ください。

    説明

    svnserve を使用して SVN にアクセスする場合は、ポート 3690 を開くセキュリティグループのインバウンドルールを追加します。

説明

ここをクリックして Terraform Explorer に移動すると、Terraform コードを実行して ECS に SVN をデプロイおよび使用できます。

SVN のデプロイ

SVN は、HTTP と svnserve の 2 つのアクセスモードをサポートしています。これらの 2 つのモードの主な違いは次のとおりです。ビジネスニーズに基づいて、次のデプロイ方法のいずれかを選択してください。

機能

HTTP モード

svnserve モード

プロトコル

通信用の HTTP。

通信用のカスタム SVN プロトコル。

アクセス方法

Web ブラウザまたはクライアント。

クライアントのみ。

ポート

通信用のポート 80。

通信用のポート 3690。

セキュリティ

暗号化通信用の HTTPS。

デフォルトではプレーンテキスト通信。安全な通信のために暗号化設定を適用できます。

構成

Web サーバー上の構成。

SVN サーバー上の構成。

サポートされている機能

アクセスの制御やログクエリなど、より多くの機能。

より少なく、よりシンプルな機能。

HTTP 経由で SVN をデプロイする

ステップ 1: SVN をインストールする

  1. SVN をインストールする Linux インスタンスに接続します。

    詳細については、「Workbench を使用して SSH 経由で Linux インスタンスに接続する」をご参照ください。

  2. 次のコマンドを実行して SVN をインストールします。

    sudo yum install -y subversion
  3. 次のコマンドを実行して SVN のバージョンを確認します。

    svnserve --version

    次のコマンド出力例は、SVN がインストールされていることを示しています。

    Check SVN Version

ステップ 2: Apache をインストールする

  1. 次のコマンドを実行して、Apache HTTP Server ( httpd ) をインストールします。

    sudo yum install httpd -y
  2. 次のコマンドを実行して httpd のバージョンを確認します。

    httpd -version

    次のコマンド出力例は、httpd がインストールされていることを示しています。

    image.png

ステップ 3: mod_dav_svn をインストールする

mod_dav_svn は、SVN リポジトリへの Web アクセスを可能にする Apache HTTP Server モジュールです。

次のコマンドを実行して mod_dav_svn をインストールします。

sudo yum install mod_dav_svn -y

ステップ 4: SVN を構成する

  1. 次のコマンドを順番に実行して SVN リポジトリを作成します。

    sudo mkdir /var/svn
    cd /var/svn
    sudo svnadmin create /var/svn/svnrepos
  2. 次のコマンドを実行して、SVN リポジトリの所有権を apache ユーザーに変更します。

    sudo chown -R apache:apache /var/svn/svnrepos
  3. 次のコマンドを順番に実行して、SVN リポジトリに自動的に生成されたファイルを確認します。

    cd svnrepos
    ls

    Verify Repository Files

    次の表は、SVN リポジトリ内のディレクトリとファイルについて説明しています。

    フォルダ

    説明

    db

    すべてのバージョン管理データファイルを格納します。

    hooks

    フックスクリプトを格納します。

    locks

    SVN リポジトリのロックファイルを格納し、リポジトリへのアクセスを追跡するために使用できます。

    format

    単一の整数値を含むテキストファイル。この値は、現在の SVN リポジトリのバージョン番号を示します。

    conf

    リポジトリのユーザー名とアクセス権限を格納する SVN リポジトリ構成ファイル。

  4. 次のコマンドを実行して、SVN リポジトリのユーザー名とパスワードを設定します。

    SVN パスワードはプレーンテキストで保存されます。HTTP はプレーンテキストパスワードをサポートしていないため、passwd という名前の別のファイルを作成します。この例では、userTest という名前のユーザーを passWDTest というパスワードで追加します。状況に応じて、次のコマンドのいずれかを使用します。

    • SVN リポジトリに最初のユーザーを追加するには、-c パラメータを使用してファイルを作成します。

      sudo htpasswd -c /var/svn/svnrepos/conf/passwd userTest
    • 追加のユーザーを追加するには、次のコマンドを実行します。

      sudo htpasswd /var/svn/svnrepos/conf/passwd userTest

    プロンプトが表示されたら、ユーザーのパスワードを入力します。

  5. SVN リポジトリの conf ディレクトリに移動します。

    cd /var/svn/svnrepos/conf/
  6. ユーザーの読み取りおよび書き込み権限を設定します。

    1. 次のコマンドでアクセス制御ファイルを開きます。

      sudo vim authz
    2. i を押して挿入モードに入ります。

    3. ファイルの最後に次の行を追加して、ユーザー ( userTest ) に読み取り ( r ) および書き込み ( w ) 権限を付与します。

      [/]
      userTest=rw

      svn-4

    4. Esc キーを押し、:wq と入力し、Enter キーを押して構成を保存して終了します。

  7. SVN 構成ファイルを変更します。

    1. 次のコマンドで SVN 構成ファイルを開きます。

      sudo vim svnserve.conf
    2. i を押して挿入モードに入ります。

    3. 次の行の先頭からシャープ記号 ( # ) とスペースを削除します。

      説明

      行の先頭にスペースがないこと、および等号 ( = ) の前後にスペースがあることを確認してください。

      anon-access = read
      auth-access = write
      password-db = passwd
      authz-db = authz
      realm = /var/svn/svnrepos

      image

    4. Esc キーを押し、:wq と入力して保存して終了します。

  8. SVN サービスをアクティブ化し、SVN リポジトリへの絶対パスを指定します。

    次のコマンド例を実行して、SVN リポジトリへの絶対パスを指定します。

    sudo svnserve -d -r /var/svn/svnrepos/
    説明

    SVN サービスを停止するには、killall svnserve コマンドを実行します。

  9. 次のコマンドを実行して、SVN サービスが有効になっているかどうかを確認します。

    ps -ef |grep svn

    次のコマンド出力例は、SVN サービスが実行されていることを示しています。Check SVN Service Status

ステップ 5: Apache を構成する

  1. 次のコマンドで Apache 構成ファイルを追加および編集します。

    sudo vim /etc/httpd/conf.d/subversion.conf
  2. i を押して挿入モードに入ります。

  3. subversion.conf ファイルに次の構成情報を入力します。

    <Location /svn>
    DAV svn
    SVNParentPath /var/svn
    AuthType Basic
    AuthName "Authorization SVN"
    AuthzSVNAccessFile /var/svn/svnrepos/conf/authz
    AuthUserFile /var/svn/svnrepos/conf/passwd
    Require valid-user
    </Location>
  4. Esc キーを押し、:wq と入力し、Enter キーを押して構成を保存して終了します。

  5. Apache サービスを開始します。

    sudo systemctl start httpd.service

svnserve 経由で SVN をデプロイする

ステップ 1: SVN をインストールする

  1. SVN をインストールする Linux インスタンスに接続します。

    詳細については、「Workbench を使用して SSH 経由で Linux インスタンスに接続する」をご参照ください。

  2. 次のコマンドを実行して SVN をインストールします。

    sudo yum install -y subversion
  3. 次のコマンドを実行して SVN のバージョンを確認します。

    svnserve --version

    次のコマンド出力例は、SVN がインストールされていることを示しています。

    Check SVN Version

ステップ 2: SVN を構成する

  1. 次のコマンドを順番に実行して SVN リポジトリを作成します。

    sudo mkdir /var/svn
    cd /var/svn
    sudo svnadmin create /var/svn/svnrepos
  2. 次のコマンドを順番に実行して、SVN リポジトリに自動的に生成されたファイルを確認します。

    cd svnrepos
    ls

    Verify Repository Files

    次の表は、SVN リポジトリ内のディレクトリとファイルについて説明しています。

    フォルダ

    説明

    db

    すべてのバージョン管理データファイルを格納します。

    hooks

    フックスクリプトを格納します。

    locks

    SVN リポジトリのロックファイルを格納し、リポジトリへのアクセスを追跡するために使用できます。

    format

    単一の整数値を含むテキストファイル。この値は、現在の SVN リポジトリのバージョン番号を示します。

    conf

    リポジトリのユーザー名とアクセス権限を格納する SVN リポジトリ構成ファイル。

  3. SVN リポジトリのユーザー名とパスワードを設定します。

    1. 次のコマンドでユーザー構成ファイルを開きます。

      cd conf/
      sudo vim passwd
    2. i を押して編集モードに入ります。

    3. [ users ] の下に、username = password の形式でユーザー名とパスワードを追加します。たとえば、userTest = passWDTest です。

      説明

      等号 ( = ) の前後にスペースを追加します。

      svn-3

    4. Esc キーを押し、:wq と入力して保存して終了します。

  4. ユーザーの読み取りおよび書き込み権限を設定します。

    1. 次のコマンドでアクセス制御ファイルを開きます。

      sudo vim authz
    2. i を押して挿入モードに入ります。

    3. ファイルの最後に次の行を追加して、ユーザー ( userTest ) に読み取り ( r ) および書き込み ( w ) 権限を付与します。

      [/]
      userTest=rw

      svn-4

    4. Esc キーを押し、:wq と入力し、Enter キーを押して構成を保存して終了します。

  5. SVN 構成ファイルを変更します。

    1. 次のコマンドで SVN 構成ファイルを開きます。

      sudo vim svnserve.conf
    2. i を押して挿入モードに入ります。

    3. 次の行の先頭からシャープ記号 ( # ) とスペースを削除します。

      説明

      行の先頭にスペースがないこと、および等号 ( = ) の前後にスペースがあることを確認してください。

      anon-access = read
      auth-access = write
      password-db = passwd
      authz-db = authz
      realm = /var/svn/svnrepos

      image

    4. Esc キーを押し、:wq と入力して保存して終了します。

  6. SVN サービスをアクティブ化し、SVN リポジトリへの絶対パスを指定します。

    次のコマンド例を実行して、SVN リポジトリへの絶対パスを指定します。

    sudo svnserve -d -r /var/svn/svnrepos/
    説明

    SVN サービスを停止するには、killall svnserve コマンドを実行します。

  7. 次のコマンドを実行して、SVN サービスが有効になっているかどうかを確認します。

    ps -ef |grep svn

    次のコマンド出力例は、SVN サービスが実行されていることを示しています。Check SVN Service Status

SVN の使用

このセクションでは、SVN でコードを管理する手順について説明します。

  1. チェックアウト: SVN リポジトリからチェックアウトすることにより、ローカルデバイスにソースコードの作業コピーを作成します。

  2. 他のユーザーがリポジトリ内のソースコードを変更してコミットする場合があります。

  3. 更新: リポジトリからローカルの作業コピーにソースコードの最新バージョンを取得します。

  4. ローカルの作業コピーでソースコードを変更およびデバッグします。

  5. コミット: 変更をリポジトリに送信して、他のユーザーが更新されたコードにアクセスできるようにします。

ソースコードをローカルディレクトリにチェックアウトする ( チェックアウト )

  1. オンプレミスの Windows マシンに TortoiseSVN クライアント をダウンロードしてインストールできます。

  2. ローカルプロジェクトフォルダで右クリックし、[SVN チェックアウト...] を選択します。

    たとえば、プロジェクトフォルダは C:\Test です。

  3. ポップアップメニューで、[SVN チェックアウト...] を選択します。

    snv-1

  4. リポジトリ URL とチェックアウトディレクトリを入力し、[OK] をクリックします。

    • リポジトリの URL: ソースコードが保存されている URL。

      • HTTP アクセスモード: URL 経由でアクセスするには、http://<ECS インスタンスのパブリック IP>/svn/<SVN リポジトリ名> の形式を使用します。

      • svnserve アクセスモードの場合、URL 形式は svn:/// です。

        説明

        SVN が SVN リポジトリの上のディレクトリで開始されている場合は、チェックアウト URL にリポジトリ名を含めます。

    • チェックアウトディレクトリ: ソースコードがチェックアウトされるディレクトリ。この例では、ディレクトリは C:\Test です。

    svn-2

    説明

    最初のログイン時に、passwd ファイルに設定したユーザー名とパスワードを入力します。

    チェックアウト操作の実行後の結果は次のとおりです。svn-5

更新を取得する ( 更新 )

SVN リポジトリでプロジェクトが更新された後、ローカルプロジェクトフォルダで右クリックし、[SVN 更新] を選択して最新のプロジェクトファイルをダウンロードします。更新が表示されます。

image.png

説明

[SVN 更新] を選択すると、プロジェクトフォルダ内のすべてのファイルが上書きされます。データの損失を防ぐために、更新する前にプロジェクトをバックアップすることをお勧めします。

変更をコミットする ( コミット )

ローカルの変更をリポジトリにコミットするには、次の手順に従います。

  1. プロジェクトフォルダで右クリックし、[SVN コミット...] を選択します。

    image.png

  2. 変更のコメントを入力し、コミットするファイルを選択して、[OK] をクリックします。

    ローカルの変更が SVN リポジトリにコミットされ、プロジェクトに反映されます。

    image.png

    説明
    • リポジトリに新しいバージョンのファイルが存在するために競合が発生した場合、コミットは失敗します。これを解決するには、ローカルプロジェクトをバックアップし、SVN リポジトリから最新のファイルをチェックアウトし、ローカルで変更を加えてから、リポジトリにコミットします。

    • コミットしているプロジェクトからファイルが削除されると、次のメッセージが表示されます。Deleted File Message

ファイルを復元する

SVN で削除されたファイルを復元するには、次の手順に従います。

  1. ローカルプロジェクトフォルダを開き、右クリックして [SVN チェックアウト...] を選択してデータをチェックアウトします。

  2. 作業コピーからファイルを削除します。

  3. 削除操作を SVN リポジトリにコミットしたかどうかに応じて、次のいずれかの方法を使用して削除されたファイルを復元します。

    • 削除操作がコミットされていない場合は、右クリックして [tortoisesvn] > [元に戻す...] を選択します。

      image.png

    • 削除操作がコミットされている場合、ファイルはリポジトリから削除されます。復元するには、次の手順に従います。

      1. 右クリックして [tortoisesvn] > [ログを表示] を選択して操作ログを表示します。

      2. ログで、ファイルの削除エントリを見つけてクリックして、詳細を表示します。

        image.png

      3. 削除されたファイルを右クリックし、[リビジョンを保存...] を選択します。

        image.png

      4. 保存ダイアログボックスで、ファイル名を入力し、[保存 ( S )] をクリックして、削除されたファイルを元の場所に復元します。image.png

  4. 元のフォルダに戻り、[SVN コミット...] を選択して、復元されたファイルをリポジトリと同期します。

FAQ

TortoiseSVN を使用して SVN サーバーにアクセスすると、ホストが応答しないことを示すエラーメッセージが表示されるのはなぜですか。

image

ホストが応答しないことを示すエラーメッセージは、次の原因で発生する可能性があります。

  • SVN サーバーが実行されていません。

  • SVN サーバーに必要なポートが、関連付けられているセキュリティグループで開いていません。

  • firewalld サービスが ECS インスタンスでアクティブになっていますが、SVN サーバーに必要なポートでのトラフィックを許可していません。

問題のトラブルシューティングを行うには、次の手順を実行します。

  1. SVN サービスのステータスを確認します。

    ps -ef |grep svn

    SVN サービスが実行されている場合は、下の画像のような出力が表示されます。そうでない場合は、sudo svnserve -d -r /var/svn/svnrepos/ コマンドを使用して SVN サービスを開始します。Check SVN Service Status

  2. ECS インスタンスのセキュリティグループルールで、SVN サーバーに必要なポートが許可されているかどうかを確認します。

    1. HTTP モード: ポート 22、80、および 443 が開いていることを確認します。

    2. svnserve モード: ポート 22、80、443、および 3690 が開いていることを確認します。

  3. firewalld サービスのステータスを確認します。

    1. firewalld サービスがアクティブかどうかを確認します。

      sudo firewall-cmd --state 
      • コマンド出力が not running と表示されている場合、firewalld サービスは非アクティブであり、SVN サーバーに影響を与えません。

      • コマンド出力が running と表示されている場合、firewalld サービスが開始されているため、次の手順に進むことができます。

    2. SVN の firewalld ルールで、ポート 3690 などの必要なポートを開きます。

      sudo firewall-cmd --add-port=3690/tcp --permanent
    3. 新しい設定を適用するには、firewalld サービス構成を再読み込みします。

      sudo systemctl reload firewalld