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

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

最終更新日:Aug 27, 2024

Subversion (SVN) はオープンソースのバージョン管理システムで、以前のファイルバージョンを確認し、その変更を時間の経過とともに追跡できます。 SVNを使用してブランチを作成し、複数のバージョンのファイルまたはデータを処理できます。 このトピックでは、SVNのデプロイと使用方法について説明します。

SVN

SVNが管理するデータはリポジトリに保存されます。 ファイルに加えられたすべての変更の完全な履歴を保持します。 以前のバージョンにロールバックするか、リポジトリからファイルの変更履歴を取得できます。 SVNでは、次の用語または操作が一般的に使用されます。

  • リポジトリ: ソースコードを格納します。

  • チェックアウト: リポジトリからソースコードをチェックアウトして、オンプレミスのデバイスに作業コピーを作成します。

  • Commit: 変更されたコードをリポジトリにコミットします。

  • 更新: リポジトリのソースコードをオンプレミスデバイスの作業コピーに同期します。

準備

Elastic Compute Service (ECS) インスタンスを作成します。 詳細については、「カスタム起動タブでインスタンスを作成する」をご参照ください。

ECSインスタンスが次の要件を満たしていることを確認します。

  • インスタンスは、静的パブリックIPアドレス (自動割り当てまたはシステム割り当てパブリックIPアドレスとも呼ばれます) またはelastic IPアドレス (EIP) に関連付けられています。 EIPをインスタンスに関連付ける方法については、「EIPの関連付けまたは関連付けの解除」をご参照ください。

  • インスタンスは、Alibaba Cloud Linux 3、Alibaba Cloud Linux 2、またはCentOS 7.xオペレーティングシステムを実行します。

  • インスタンスのインスタンスタイプは、SVNをデプロイするための要件を満たしています。 プロジェクトの規模とチームのサイズに基づいて、インスタンス作成時にインスタンスタイプを選択します。 4つ以上のvCPUと4 GiB以上のメモリを持つインスタンスタイプを使用することを推奨します。

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

    説明

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

SVNアクセス方法

ビジネス要件に基づいて、HTTP経由またはsvnserveを使用してSVNにアクセスできます。 アクセス方法の違いを次の表に示します。

項目

HTTPによるSVNアクセス

svnserveによるSVNアクセス

プロトコル

HTTPを使用します。

カスタムSVNプロトコル。

アクセスモード

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

クライアントのみ。

ポート

ポート80

ポート3690。

セキュリティ

暗号化通信のHTTPS。

デフォルトでは、平文通信。 暗号化設定を完了して通信を暗号化できます。

設定

webサーバー上の設定。

SVNサーバー上の設定。

機能

アクセス制御やログクエリなどのその他の機能。

より少なく、より簡単な機能。

HTTPアクセスでSVNをデプロイする

ステップ1: SVNのインストール

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

    詳細については、「パスワードまたはキーを使用したLinuxインスタンスへの接続」をご参照ください。

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

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

    svnserve --version

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

    查看SVN版本

手順2: Apache HTTPサーバー (httpd) のインストール

  1. 次のコマンドを実行して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 (httpd) モジュールです。

次のコマンドを実行して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 

    查看版本库文件

    次の表に、SVNディレクトリとファイルを示します。

    ディレクトリまたはファイル

    説明

    db

    バージョン管理データファイルを格納するディレクトリ。

    フック

    フックスクリプトを格納するディレクトリ。

    locks

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

    フォーマット

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

    conf

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

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

    SVNのパスワードは平文で保存されますが、HTTPは平文パスワードをサポートしません。 したがって、passwdという名前の別のファイルを作成する必要があります。 この例では、ユーザー名はuserTest、パスワードはpassWDTestです。 次のいずれかのコマンドを実行して、passwdファイルを作成します。

    • SVNリポジトリにユーザーを初めて追加するときは、-cパラメーターを指定して次のコマンドを実行し、passwdファイルを作成します。

      sudo htpasswd -c /var/svn/svnrepos/conf/passwd userTest
    • SVNリポジトリのユーザーを初めて追加しない場合は、次のコマンドを実行してpasswdファイルを作成します。

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

    プロンプトに従ってユーザーのパスワードを設定します。

  5. 次のコマンドを実行して、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

      修改svn服务配置

    4. Escキーを押して挿入モードを終了し、:wqと入力し、enterキーを入力してファイルを保存して閉じます。

  8. SVNリポジトリを起動します。

    SVNリポジトリへの絶対パスを含む次のコマンドを実行して、リポジトリを開始します。

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

    killall svnserveコマンドを実行して、SVNサービスを停止できます。

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

    ps -ef | grep svn

    次のコマンド出力は、SVNサービスが開始されたことを示します。查看SVN服务状态

ステップ5: Apacheの設定

  1. 次のコマンドを実行して、httpd設定ファイルを追加および編集します。

    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. 次のコマンドを実行して、httpdサービスを開始します。

    sudo systemctl start httpd.service

svnserveベースのアクセスでSVNをデプロイする

ステップ1: SVNのインストール

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

    詳細については、「パスワードまたはキーを使用したLinuxインスタンスへの接続」をご参照ください。

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

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

    svnserve --version

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

    查看SVN版本

ステップ2: SVNの設定

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

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

    cd svnrepos
    ls 

    查看版本库文件

    次の表に、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と入力し、enterキーを入力してファイルを保存して閉じます。

  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

      修改svn服务配置

    4. Escキーを押して挿入モードを終了し、:wqと入力し、enterキーを入力してファイルを保存して閉じます。

  6. SVNリポジトリを起動します。

    SVNリポジトリへの絶対パスを含む次のコマンドを実行して、リポジトリを開始します。

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

    killall svnserveコマンドを実行して、SVNサービスを停止できます。

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

    ps -ef | grep svn

    次のコマンド出力は、SVNサービスが開始されたことを示します。查看SVN服务状态

SVNの使用

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

  1. チェックアウト: ソースコードをチェックして、オンプレミスデバイスで作業コピーを作成します。

  2. 他の人はソースコードを変更し、変更をリポジトリにコミットします。

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

  4. ソースコードを変更してデバッグします。

  5. コミット: 変更されたソースコードをリポジトリにコミットします。 他のユーザーは変更を表示できます。

チェックアウト: ソースコードをチェックアウトしてオンプレミスの作業コピーを作成する

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

  2. オンプレミスプロジェクトフォルダーの空白領域を右クリックします。

    この例では、プロジェクトフォルダはC:\Testです。

  3. SVNチェックアウト...

    snv-1

  4. 次のパラメーターを設定し、[OK] をクリックします。

    • リポジトリのURL: SVNリポジトリのURLを入力します。

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

      • svnserveを使用してSVNにアクセスする場合、SVNリポジトリのURLをsvn:// <ECSインスタンスのパブリックIPアドレス>/ の形式で入力します。

        説明

        SVNリポジトリの親ディレクトリからSVNを起動する場合、ソースコードをチェックアウトするURLにSVNリポジトリの名前を含める必要があります。

    • チェックアウトディレクトリ: ソースコードをチェックアウトして作業コピーを作成するオンプレミスディレクトリを指定します。 この例では、オンプレミスディレクトリはC:\Testです。

    svn-2

    説明

    SVNに初めてログインするときに、設定したユーザー名とパスワードをpasswdファイルに入力します。

    次のメッセージは、チェックアウト操作が完了したことを示します。svn-5

更新: リポジトリから最新バージョンのソースコードを取得

SVNリポジトリでプロジェクトを更新した後、オンプレミスのプロジェクトフォルダーの空白領域を右クリックし、SVN Updateを選択して、リポジトリからプロジェクトへのすべての変更を取得し、プロジェクトの最新バージョンをダウンロードできます。

image.png

説明

オンプレミスプロジェクトフォルダーの空白領域を右クリックしてSVN Updateを選択すると、プロジェクトフォルダー内のすべてのファイルが上書きされます。 上書きプロセスによるコンテンツの損失を防ぐため、更新操作を実行する前に、元のコンテンツをプロジェクトフォルダーにバックアップすることをお勧めします。

コミット: 変更されたソースコードをリポジトリにコミットします

オンプレミスの変更をリポジトリにコミットするには、次の手順を実行します。

  1. オンプレミスプロジェクトフォルダーの空白領域を右クリックし、[SVN Commit...] を選択します。

    image.png

  2. コミットメッセージを入力し、コミットするオブジェクトを選択し、[OK] をクリックします。

    オンプレミスでプロジェクトに加えた変更は、SVNリポジトリにコミットされ、リポジトリ内のプロジェクトに適用されます。

    説明
    • 新しいリポジトリバージョンが既にあるファイルをコミットしようとすると、競合が発生します。 コミットが失敗します。 この問題を解決するには、オンプレミスのプロジェクトをバックアップし、SVNリポジトリから最新のプロジェクトファイルをチェックアウトし、オンプレミスの最新のプロジェクトファイルを変更してから、変更したプロジェクトファイルをリポジトリにコミットします。

    • コミットしたプロジェクトからファイルが削除されると、次の図に示すメッセージが表示され、ファイルが欠落していることを示します。显示删除文件

削除されたファイルの復元

ファイルを削除した後、SVNでファイルを復元できます。

  1. オンプレミスのプロジェクトフォルダーを開き、フォルダー内の空白の領域を右クリックして、SVNチェックアウトを選択します。プロジェクトの最新バージョンをチェックアウトします。

  2. ファイルを削除します。

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

    • 削除操作がコミットされていない場合は、オンプレミスのプロジェクトフォルダーの空白領域を右クリックし、TortoiseSVN > Revert... を選択します。

      image.png

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

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

      2. ログで、削除されたファイルの削除ログエントリをクリックします。 削除されたファイルに関する情報が表示されます。

        image.png

      3. 削除したファイルを右クリックし、リビジョンを保存して...

        image.png

      4. リビジョンを保存して... ダイアログボックスでファイル名を入力し、[保存] をクリックして、ファイルが削除されたディレクトリにファイルを保存します。image.png

  4. オンプレミスプロジェクトフォルダーを開き、フォルダー内の空白領域を右クリックして、[SVN Commit...] を選択します。 オンプレミスのプロジェクトデータは、SVNリポジトリに同期されます。

よくある質問

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

image

原因:

  • SVNサーバが起動されていません。

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

  • ECSインスタンスのfirewalldサービスは開始されますが、SVNサーバーが必要とするポートのトラフィックは許可されていません。

解決策:

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

    ps -ef | grep svn

    次の図に示すコマンド出力は、SVNサービスが開始されたことを示します。 次のコマンド出力が返されない場合は、sudo svnserve -d -r /var/svn/svnrepos/ コマンドを実行してSVNを起動します。 查看SVN服务状态

  2. ECSインスタンスが属するセキュリティグループのルールがSVNサーバーの要件を満たしているかどうかを確認します。

    1. HTTP経由のSVNアクセス: ポート22、80、および443を開く必要があります。

    2. svnserveによるSVNアクセス: ポート22、80、443、および3690を開く必要があります。

  3. firewalldサービスを照会します。

    1. firewalldサービスのステータスを照会します。

      sudo firewall-cmd -- state
      • firewalldサービスが非実行状態の場合、firewalldサービスは開始されず、SVNサーバーに影響を与えません。

      • firewalldサービスが実行中の場合、firewalldサービスが開始されます。 次のステップを実行します。

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

      sudo firewall-cmd -- add-port=3690/tcp -- per
    3. 変更を有効にするには、firewalldサービス構成をリロードします。

      sudo systemctl reload firewalld