Subversion : HTTP でアクセスする2025/12/24 |
|
HTTP でリポジトリにアクセスできるよう設定します。 |
|
| [1] | |
| [2] | |
| [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:~>
leap@node01:~/work> echo 'store-plaintext-passwords = no' >> ~/.subversion/servers
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 ブラウザーで参照アクセスすることもできます。 |
|
|
| Sponsored Link |
|
|