Elastic Compute Service (ECS) インスタンスに HTTP または svnserve を使用して Subversion (SVN) をデプロイし、チェックアウト、アップデート、コミットを通じてコードを管理します。
前提条件
ECS インスタンスを作成します。詳細については、「カスタム起動タブを使用したインスタンスの作成」をご参照ください。
インスタンスは、次の要件を満たす必要があります。
-
インスタンスに静的パブリック IP アドレスまたは Elastic IP アドレス (EIP) があること。詳細については、「パブリック帯域幅の有効化」をご参照ください。
-
オペレーティングシステム:Alibaba Cloud Linux 3、Alibaba Cloud Linux 2、または CentOS 7.x。
-
インスタンスタイプ:少なくとも 4 vCPU と 4 GiB のメモリ。正確な仕様は、プロジェクトのサイズとチームの規模によって異なります。
-
セキュリティグループのインバウンドルールで、ポート 22、80、443 へのトラフィックが許可されていること。詳細については、「セキュリティグループルールの追加」をご参照ください。
説明svnserve モードを使用する場合は、ポート 3690 へのトラフィックも許可する必要があります。
このチュートリアルでは、SVN をデプロイするためのワンクリック環境構築機能を提供しています。 ワンクリックで実行
SVN のデプロイ
SVN は、HTTP と svnserve の 2 つのアクセスモードをサポートしています。次の表で比較し、いずれかを選択してください。
|
機能 |
HTTP モード |
svnserve モード |
|
プロトコル |
HTTP |
カスタム SVN プロトコル |
|
アクセス方法 |
Web ブラウザーまたは SVN クライアント |
SVN クライアントのみ |
|
ポート |
80 |
3690 |
|
セキュリティ |
HTTPS 暗号化 |
デフォルトではプレーンテキスト、暗号化はオプション |
|
設定 |
Web サーバー設定 |
SVN サーバー設定 |
|
機能サポート |
権限管理やログ表示など、より多くの機能 |
より少ない機能 |
HTTP を使用した SVN のデプロイ
ステップ1:SVN のインストール
-
Linux インスタンスに接続します。
詳細については、「ワークベンチを使用した Linux インスタンスへの接続」をご参照ください。
-
SVN をインストールします。
sudo yum install -y subversion -
SVN のバージョンを確認します。
svnserve --version次のような出力は、SVN がインストールされたことを示します。

ステップ2:Apache のインストール
-
httpd をインストールします。
sudo yum install httpd -y -
httpd のバージョンを確認します。
httpd -version次のような出力は、httpd がインストールされたことを示します。

ステップ3:mod_dav_svn のインストール
mod_dav_svn は、SVN リポジトリへの Web アクセスを提供する Apache モジュールです。
mod_dav_svn をインストールします。
sudo yum install mod_dav_svn -y
ステップ4:SVN の設定
-
SVN リポジトリを作成します。
sudo mkdir /var/svn cd /var/svn sudo svnadmin create /var/svn/svnrepos -
SVN リポジトリのユーザーグループを apache に変更します。
sudo chown -R apache:apache /var/svn/svnrepos -
自動生成されたリポジトリファイルを表示します。
cd svnrepos ls
次の表で、Subversion のディレクトリについて説明します。
内容
説明
db
すべてのバージョン管理データファイルを格納します。
hooks
フックスクリプトファイルを格納します。
locks
リポジトリにアクセスするクライアントを追跡します。
format
リポジトリのレイアウトバージョンを示す整数を含むテキストファイルです。
conf
アクセスアカウントと権限を含む SVN リポジトリの設定ファイルです。
-
コマンドを実行して、SVN リポジトリのユーザーとパスワードを追加します。
デフォルトでは、SVN はプレーンテキストのパスワードを使用しますが、HTTP ではハッシュ化されたパスワードが必要です。別の passwd ファイルを生成します。この例では、ユーザー名が
userTest、パスワードがpassWDTestのユーザーが追加されます。次のいずれかのコマンドを実行します。-
最初のユーザーを追加するには、
-cパラメーターを使用してファイルを作成します。sudo htpasswd -c /var/svn/svnrepos/conf/passwd userTest -
2人目以降のユーザーを追加するには、
-cを省略します。sudo htpasswd /var/svn/svnrepos/conf/passwd userTest
プロンプトに従ってパスワードを設定します。
-
-
conf ディレクトリに移動します。
cd /var/svn/svnrepos/conf/ -
アカウントの読み取り権限と書き込み権限を設定します。
-
アクセス制御ファイルを開きます。
sudo vim authz -
iを押して編集モードに入ります。 -
ファイルの末尾に次のコードを追加します。
userTestはアカウント、rは読み取り権限、wは書き込み権限です。[/] userTest = rw
-
Escキーを押し、:wqと入力して Enter キーを押し、保存して終了します。
-
-
SVN サービスの設定を変更します。
-
SVN サービスの設定ファイルを開きます。
sudo vim svnserve.conf -
iを押して編集モードに入ります。 -
次の行を見つけ、コメント記号 (#) と先頭のスペースを削除します。
説明各行はスペースで始まってはならず、等号 (=) の両側にスペースが必要です。
anon-access = read auth-access = write password-db = passwd authz-db = authz realm = /var/svn/svnrepos
-
Escキーを押し、:wqと入力して Enter キーを押し、保存して終了します。
-
-
SVN リポジトリを起動します。
このコマンドはリポジトリを直接指定します。
sudo svnserve -d -r /var/svn/svnrepos/説明SVN サービスを停止するには、
killall svnserveコマンドを実行します。 -
SVN サービスが起動しているかどうかを確認します。
ps -ef | grep svn次のような出力は、SVN サービスが実行中であることを示します。

ステップ5:Apache の設定
-
httpd 設定ファイルを作成して編集します。
sudo vim /etc/httpd/conf.d/subversion.conf -
iを押して編集モードに入ります。 -
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> -
Escキーを押し、:wqと入力して Enter キーを押し、保存して終了します。 -
Apache サービスを起動します。
sudo systemctl start httpd.service
svnserve を使用した SVN のデプロイ
ステップ1:SVN のインストール
-
Linux インスタンスに接続します。
詳細については、「ワークベンチを使用した Linux インスタンスへの接続」をご参照ください。
-
SVN をインストールします。
sudo yum install -y subversion -
SVN のバージョンを確認します。
svnserve --version次のような出力は、SVN がインストールされたことを示します。

ステップ2:SVN の設定
-
SVN リポジトリを作成します。
sudo mkdir /var/svn cd /var/svn sudo svnadmin create /var/svn/svnrepos -
自動生成されたリポジトリファイルを表示します。
cd svnrepos ls
次の表で、Subversion のディレクトリについて説明します。
内容
説明
db
すべてのバージョン管理データファイルを格納します。
hooks
フックスクリプトファイルを格納します。
locks
リポジトリにアクセスするクライアントを追跡します。
format
リポジトリのレイアウトバージョンを示す整数を含むテキストファイルです。
conf
アクセスアカウントと権限を含む SVN リポジトリの設定ファイルです。
-
SVN リポジトリのユーザー名とパスワードを設定します。
-
ユーザー設定ファイルを開きます。
cd conf/ sudo vim passwd -
iを押して編集モードに入ります。 -
[users]セクションに移動し、ユーザー名とパスワードを追加します。説明フォーマット:
username = password。たとえば、「userTest = passWDTest」のように指定します。等号 (=) の両側にスペースが必要です。
-
Escキーを押し、:wqと入力して Enter キーを押し、保存して終了します。
-
-
アカウントの読み取り権限と書き込み権限を設定します。
-
アクセス制御ファイルを開きます。
sudo vim authz -
iを押して編集モードに入ります。 -
ファイルの末尾に次のコードを追加します。
userTestはアカウント、rは読み取り権限、wは書き込み権限です。[/] userTest = rw
-
Escキーを押し、:wqと入力して Enter キーを押し、保存して終了します。
-
-
SVN サービスの設定を変更します。
-
SVN サービスの設定ファイルを開きます。
sudo vim svnserve.conf -
iを押して編集モードに入ります。 -
次の行を見つけ、コメント記号 (#) と先頭のスペースを削除します。
説明各行はスペースで始まってはならず、等号 (=) の両側にスペースが必要です。
anon-access = read auth-access = write password-db = passwd authz-db = authz realm = /var/svn/svnrepos
-
Escキーを押し、:wqと入力して Enter キーを押し、保存して終了します。
-
-
SVN リポジトリを起動します。
このコマンドはリポジトリを直接指定します。
sudo svnserve -d -r /var/svn/svnrepos/説明SVN サービスを停止するには、
killall svnserveコマンドを実行します。 -
SVN サービスが起動しているかどうかを確認します。
ps -ef | grep svn次のような出力は、SVN サービスが実行中であることを示します。

SVN の使用
SVN でコードを管理するには、次の手順に従います。
-
チェックアウト:ソースコードをローカルコンピューターにチェックアウトします。
-
他のユーザーがソースコードを変更し、リポジトリにコミットします。
-
アップデート:最新のコードを取得します。
-
ソースコードを変更し、デバッグします。
-
コミット:変更したコードをリポジトリにコミットします。これにより、他のプログラマーが変更内容を確認できるようになります。
ソースコードのローカルディレクトリへのチェックアウト (Checkout)
-
ローカルの Windows コンピューターに TortoiseSVN クライアントをダウンロードしてインストールします。
-
ローカルプロジェクトフォルダーの空白領域を右クリックします。
この例では、フォルダーは
C:\Testです。 -
ポップアップメニューで、[SVN チェックアウト...] を選択します。

-
以下の情報を入力し、[OK] をクリックします:
-
[リポジトリの URL]:ソースコードが格納されている URL です。
-
HTTP アクセスモード:URL のフォーマットは
http://<ECS インスタンスのパブリック IP アドレス>/svn/<SVN リポジトリ名>です。 -
svnserve アクセスモード:URL のフォーマットは
svn://<インスタンスのパブリック IP アドレス>/です。説明SVN サービスがリポジトリの親ディレクトリで開始された場合、SVN チェックアウト URL にリポジトリ名を追加します。
-
-
[チェックアウトディレクトリ]: ソースコード用のローカルディレクトリ。この例では
C:\Testです。
説明初回ログイン時、[passwd] ファイルで設定したユーザー名とパスワードを入力します。
以下にチェックアウトが成功した場合の画面を示します。

-
アップデートの取得 (Update)
サーバー側の SVN リポジトリが更新された後、ローカルプロジェクトフォルダーの空白領域を右クリックし、[SVN 更新] を選択して最新のプロジェクトをダウンロードします。

元のプロジェクトフォルダーで [SVN Update] を実行すると、既存のコンテンツが上書きされます。データ損失を防ぐため、アップデートする前にプロジェクトをバックアップしてください。
変更のコミット (Commit)
ローカルでの変更をサーバー側のリポジトリにコミットします。
-
プロジェクトファイルの空白領域を右クリックし、[SVN コミット...] を選択します。

-
バージョン更新コメントを入力し、コミットするコンテンツを選択して、[OK] をクリックします。
ローカルプロジェクトがリポジトリプロジェクトを上書きします。
説明-
2人のユーザーが変更をコミットした場合、バージョンが古くなっているため、後のコミットは失敗します。プロジェクトをバックアップし、サーバーから最新バージョンをダウンロードして、ローカルフォルダーを変更内容で上書きしてから、[SVN Commit] をクリックしてください。
-
コミットされたプロジェクト内のファイルを削除すると、次のようなメッセージが表示されます。

-
ファイルの復元
SVN で削除されたファイルを復元します。
-
ローカルのプロジェクトフォルダーを開き、右クリックして [SVN チェックアウト...] を選択します。
-
ファイルの1つを削除します。
-
変更をコミットしたかどうかに基づいて、適切な操作を選択します。
-
コミットされていない場合は、空白領域を右クリックし、を選択します。

-
すでにコミットしている場合は、サーバー側のリポジトリが同期され、リポジトリ上のファイルも削除されます。次の手順で復元します。
-
空白の領域を右クリックし、を選択します。
-
削除のログエントリをクリックします。削除されたデータが下に表示されます。

-
削除されたデータを右クリックし、[リビジョンを...に保存] をクリックします。

-
ファイル名を設定して [保存] をクリックすると、ファイルが元の場所に復元されます。

-
-
-
元のフォルダーを開き、[SVN コミット...] をクリックしてリポジトリと同期します。
よくある質問
TortoiseSVN を使用して SVN サーバーにアクセスすると、"The host did not respond" というプロンプトが表示されるのはなぜですか?

考えられる原因:
-
SVN サーバーが起動していない。
-
必要なポートがセキュリティグループで開かれていない。
-
firewalld ファイアウォールが有効になっているが、必要なポートが許可されていない。
次のようにトラブルシューティングします。
-
SVN サービスの状態を確認します。
ps -ef | grep svn次のような出力は、SVN サービスが実行中であることを示します。そうでない場合は、
sudo svnserve -d -r /var/svn/svnrepos/を実行して起動します。
-
セキュリティグループのルールが SVN サーバーの要件を満たしているかどうかを確認します。
-
HTTP モード:ポート 22、80、443。
-
svnserve モード:ポート 22、80、443、3690。
-
-
firewalld ファイアウォールを確認します。
-
firewalld の状態を確認します。
sudo firewall-cmd --state-
not runningと表示された場合、ファイアウォールは無効であり、SVN には影響しません。 -
runningと表示された場合、ファイアウォールは有効です。次のステップに進みます。
-
-
ポート 3690 など、必要な SVN ポートへのトラフィックを許可します。
sudo firewall-cmd --add-port=3690/tcp --permanent -
firewalldの設定をリロードします。sudo systemctl reload firewalld
-