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

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

最終更新日:Jan 06, 2025

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

準備

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

インスタンスは次の要件を満たす必要があります。

  • インスタンスには、静的パブリックIPアドレスが割り当てられているか、Elastic IPアドレス (EIP) に関連付けられています。 パブリックアクセスを有効にする方法がわからない場合は、「パブリックアクセスの有効化」をご参照ください。

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

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

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

    説明

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

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

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

    フック

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

    locks

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

    フォーマット

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

    conf

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

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

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

    • 最初のユーザーを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と入力し、保存して終了します。

  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と入力し、保存して終了します。

  5. 次のコマンドでApacheサービスを起動します。

    sudo systemctl start httpd.service

SVNへのsvnserveアクセスのデプロイ

ステップ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

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

    フック

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

    locks

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

    フォーマット

    単一の整数値を含むテキストファイル。 値は、現在の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と入力し、保存して終了します。

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

ローカルディレクトリへのソースコードのチェックアウト (Checkout)

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

  2. ローカルプロジェクトフォルダーを右クリックし、SVN Checkoutを選択します。

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

  3. ポップアップメニューで、[SVN Checkout...] を選択します。

    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 Updateを選択して最新のプロジェクトファイルをダウンロードします。 更新が表示されます。

image.png

説明

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

Commit changes (コミット)

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

  1. プロジェクトフォルダーを右クリックし、SVN Commit... を選択します。

    image.png

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

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

    image.png

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

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

ファイルの復元

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

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

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

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

    • 削除操作がコミットされていない場合は、右クリックしてTortoiseSVN > Revert... を選択します。

      image.png

    • 削除操作がコミットされると、ファイルはリポジトリから削除されます。 復元するには、次の手順を実行します。

      1. 右クリックし、TortoiseSVN > ログの表示を選択して操作ログを表示します。

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

        image.png

      3. 削除したファイルを右クリックし、[Save Revision To...] を選択します。

        image.png

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

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

よくある質問

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 
      • コマンド出力が実行中でないと表示される場合、firewalldサービスは非アクティブであり、SVNサーバーに影響を与えません。

      • コマンド出力が実行中と表示される場合、firewalldサービスが開始され、次のステップに進むことができます。

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

      sudo firewall-cmd --add-port=3690/tcp --per
    3. 新しい設定を適用するには、firewalldサービス設定をリロードします。

      sudo systemctl reload firewalld