openSUSE Leap 16

Subversion : HTTP でアクセスする2025/12/24

 

HTTP でリポジトリにアクセスできるよう設定します。

[1]

こちらを参考に Apache httpd をインストールして起動しておきます

[2]

こちらを参考に Apache httpd に SSL/TLS の設定を実施しておきます (任意)

[3] 必要なパッケージをインストールしておきます。
dlp:~ #
zypper -n install subversion-server
[4] Apache httpd の設定です。
例として [/srv/svn/repos/project] リポジトリにアクセスできるよう設定します。
dlp:~ #
mkdir -p /srv/svn/repos/project

dlp:~ #
svnadmin create /srv/svn/repos/project

dlp:~ #
svn mkdir file:///srv/svn/repos/project/trunk -m "create"

dlp:~ #
svn mkdir file:///srv/svn/repos/project/branches -m "create"

dlp:~ #
svn mkdir file:///srv/svn/repos/project/tags -m "create"

dlp:~ #
vi /etc/apache2/conf.d/svn.conf
# 新規作成

LoadModule dav_svn_module /usr/lib64/apache2/mod_dav_svn.so
LoadModule authz_svn_module /usr/lib64/apache2/mod_authz_svn.so
<Location /project>
    DAV svn
    AuthType Basic
    AuthName "DAV SVN"
    AuthUserFile /srv/svn/.svnpasswd
    Require valid-user
    SVNPath /srv/svn/repos/project
</Location> 

# ユーザー登録

dlp:~ #
htpasswd -Bc /srv/svn/.svnpasswd suse

New password:
Re-type new password:
Adding password for user suse
dlp:~ #
chown -R wwwrun:wwwrun /srv/svn/repos/project

dlp:~ #
systemctl restart apache2

[5] アクセス権を設定する場合は以下のようにします。
dlp:~ #
vi /srv/svn/repos/project/conf/authzsvn.conf
# 新規作成
# グループを定義

[groups]
developer = suse,leap
operator = sles
# ルートディレクトリのアクセス権は [Read]

[/]
* = r
# [trunk] 配下のアクセス権は [developer] のみ [Read/Write]

[project:/trunk]
@developer = rw
# [branches] 配下のアクセス権は [operator] のみ [Read/Write]

[project:/branches]
@operator = rw
# [tags] 配下のアクセス権は [operator] のみ [Read/Write]

[project:/tags]
@operator = rw
dlp:~ #
vi /etc/apache2/conf.d/svn.conf
LoadModule dav_svn_module /usr/lib64/apache2/mod_dav_svn.so
LoadModule authz_svn_module /usr/lib64/apache2/mod_authz_svn.so
<Location /project>
    DAV svn
    AuthType Basic
    AuthName "DAV SVN"
    AuthUserFile /srv/svn/.svnpasswd
    Require valid-user
    SVNPath /var/svn/repos/project
    # 追記
    AuthzSVNAccessFile /srv/svn/repos/project/conf/authzsvn.conf
</Location> 

dlp:~ #
systemctl reload apache2

[6] 任意のホストから HTTP/HTTPS アクセスして設定を確認します。
leap@node01:~>
svn --username suse list https://dlp.srv.world/project

Authentication realm: <https://dlp.srv.world:443> DAV SVN
Password for 'suse': ********

branches/
tags/
trunk/

leap@node01:~>
echo 'store-plaintext-passwords = no' >> ~/.subversion/servers
leap@node01:~>
mkdir work

leap@node01:~>
cd work
leap@node01:~/work>
svn --username suse co https://dlp.srv.world/project

Authentication realm: <https://dlp.srv.world:443> DAV SVN
Password for 'suse': ********

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

leap@node01:~/work>
cd project/trunk
# 適当にバージョン管理下の任意のファイル編集後に
# [sles] ユーザーで [trunk] へ [commit]

leap@node01:~/work/project/trunk>
echo index.html >> index.html

leap@node01:~/work/project/trunk>
svn add index.html

leap@node01:~/work/project/trunk>
svn --username sles ci index.html -m "update by sles"

Authentication realm: <https://dlp.srv.world:443> DAV SVN
Password for 'sles': ********

Adding         index.html
Transmitting file data .svn: E195023: Commit failed (details follow):
svn: E195023: Changing file '/home/leap/work3/project/trunk/index.html' is forbidden by the server
svn: E175013: While preparing '/home/leap/work3/project/trunk/index.html' for commit
svn: E175013: Access to '/project/!svn/txr/3-4/trunk/index.html' forbidden
# 設定通り拒否された

# [leap] ユーザーで [trunk] へ [commit]

leap@node01:~/work/project/trunk>
svn --username leap ci index.html -m "update by leap"

Authentication realm: <https://dlp.srv.world:443> DAV SVN
Password for 'leap': ********

Adding         index.html
Transmitting file data .done
Committing transaction...
Committed revision 4.
# 設定通り [commit] できた
[7] HTTP のため Web ブラウザーで参照アクセスすることもできます。
関連コンテンツ