CentOS Stream 8
Sponsored Link

Subversion : 他ホストからアクセスする2021/06/18

 
他ホストから Subversion リポジトリにアクセスできるよう設定します。
[1] Subversion リポジトリ作成済みのホストで [svnserve] サービスを起動します。
[root@dlp ~]#
vi /etc/sysconfig/svnserve
# リポジトリを作成しているディレクトリの最上位階層を指定

# デフォルトは以下だが必要に応じて変更可

# Specify the repository location in -r parameter:
OPTIONS="-r /var/svn"
[root@dlp ~]#
mkdir /var/svn

[root@dlp ~]#
systemctl enable --now svnserve
# テストプロジェクト作成

[root@dlp ~]#
mkdir -p /var/svn/repos/project

[root@dlp ~]#
svnadmin create /var/svn/repos/project

[root@dlp ~]#
svn mkdir file:///var/svn/repos/project/trunk -m "create"

[root@dlp ~]#
svn mkdir file:///var/svn/repos/project/branches -m "create"

[root@dlp ~]#
svn mkdir file:///var/svn/repos/project/tags -m "create"

[2] Firewalld を有効にしている場合は、SVN サービスの許可が必要です。SVN は [3690/TCP] を使用します。
[root@dlp ~]#
firewall-cmd --add-service=svn --permanent

success
[root@dlp ~]#
firewall-cmd --reload

success
[3] SELinux を有効にしている場合は、ポリシーの変更が必要です。
当例では [/var/svn] をリポジトリ階層にしているため以下の内容となっていますが、[/var] 以外の場合は内容が異なるため、適宜変更が必要です。
[root@dlp ~]#
vi svn-server.te
# 以下の内容で新規作成

module svn-server 1.0;

require {
        type svnserve_t;
        type var_t;
        class file { append create lock rename setattr unlink write };
        class dir { add_name create read remove_name rmdir write };
        class capability { chown dac_override fsetid };
}

#============= svnserve_t ==============
allow svnserve_t self:capability { chown dac_override fsetid };
allow svnserve_t var_t:dir { add_name create read remove_name rmdir write };
allow svnserve_t var_t:file { append create lock rename setattr unlink write };

[root@dlp ~]#
checkmodule -m -M -o svn-server.mod svn-server.te

checkmodule: loading policy configuration from svn-server.te
checkmodule: policy configuration loaded
checkmodule: writing binary representation (version 19) to svn-server.mod
[root@dlp ~]#
semodule_package --outfile svn-server.pp --module svn-server.mod

[root@dlp ~]#
semodule -i svn-server.pp

[4] 任意の他ホストから、作成済みの Subversion リポジトリにアクセスします。
例として、[1] で作成したテストプロジェクト [/var/svn/repos/project] へアクセスします。
なお、デフォルトでは読み取りアクセス権のみのため、[commit] 等は実行不可です。
[commit] したい場合は [svn://] アクセス時のアクセス権の設定が必要です
# 階層の指定は [1] で SVN トップの階層に指定したディレクトリからの相対パス

# 当例の場合

# トップの階層 : [/var/svn]

# リポジトリの階層 : [/var/svn/repos/project]

# 相対パス : [repos/project]

[cent@node01 ~]$
svn list svn://dlp.srv.world/repos/project

branches/
tags/
trunk/

[cent@node01 ~]$
mkdir ./work

[cent@node01 ~]$
svn checkout svn://dlp.srv.world/repos/project ./work

A    work/branches
A    work/tags
A    work/trunk
Checked out revision 3.

[cent@node01 ~]$
ll work

total 0
drwxrwxr-x. 2 cent cent 6 Jun 17 20:08 branches
drwxrwxr-x. 2 cent cent 6 Jun 17 20:08 tags
drwxrwxr-x. 2 cent cent 6 Jun 17 20:08 trunk
[5] Subversion サーバー側で [svnserve] サービスを起動せずに、SSH 経由でアクセスすることも可能です。
[cent@node01 ~]$
svn ls svn+ssh://cent@dlp.srv.world/var/svn/repos/project

cent@dlp.srv.world's password:
branches/
tags/
trunk/

[cent@node01 ~]$
mkdir ./work2

[cent@node01 ~]$
svn co svn+ssh://cent@dlp.srv.world/var/svn/repos/project ./work2

cent@dlp.srv.world's password:
A    work2/branches
A    work2/tags
A    work2/trunk
Checked out revision 3.
関連コンテンツ