Projekt

Allgemein

Profil

Aktionen

Install SVN-Server

Requirements

To install svn you will need the following:
  • a installed and supported operating system (e.g. CentOS 8.x)
  • root-access
  • a fast internet connection

Preliminary note

most of this is taken from

Install

yum install mod_dav_svn subversion

Configuration

/etc/httpd/conf.modules.d/10-subversion.conf

modify the preinstalled /etc/httpd/conf.modules.d/10-subversion.conf analogue to

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so
LoadModule dontdothat_module  modules/mod_dontdothat.so

<Location /svn>
  DAV svn
  SVNParentPath /var/www/svn
  AuthName "Subversion repositories" 
  AuthType Basic
   AuthUserFile /etc/svn-auth-users
   AuthzSVNAccessFile  /etc/svn-authz-users
  Require valid-user
</Location>

if you placed the svn-server behind a proxy and you are experiencing '502 Bad Gateway' when copying then you may also rewrite the Destination inside the Header:

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so
LoadModule dontdothat_module  modules/mod_dontdothat.so

# rename Destination to prevent 502 Bad Gateway Error when renaming files
RequestHeader edit Destination ^https http early

<Location /svn>
  DAV svn
  SVNParentPath /var/www/svn
  AuthName "Subversion repositories" 
  AuthType Basic
  AuthUserFile /etc/svn/svn-auth
  AuthzSVNAccessFile /svn/authz
  Require valid-user
</Location>
LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

<Location /svn>
   DAV svn
   SVNParentPath /var/www/svn
   AuthType Basic
   AuthName "Subversion repositories" 
   AuthUserFile /etc/svn-auth-users
   AuthzSVNAccessFile  /etc/svn-authz-users
   Require valid-user
</Location>

Add SVN users

  • first-time usage (will clear any existing user!)
    htpasswd -cm /etc/svn-auth-users testuser
    
  • follow up usage
    htpasswd -m /etc/svn-auth-users testuser
    

    Note: Use exactly same file and path name as used on subversion.conf file. This example use /etc/svn-auth-users file.

Create SVN repository

mkdir /var/www/svn
cd /var/www/svn

svnadmin create testrepo
chown -R apache:apache testrepo

chcon -R -t httpd_sys_content_t /var/www/svn/testrepo

Following enables commits over http
chcon -R -t httpd_sys_rw_content_t /var/www/svn/testrepo

Configure SVN repository

To disable anonymous access and enable access control add following rows to testrepo/conf/svnserve.conf

## Disable anonymous access ##
anon-access = none

## Enable access control ##
authz-db = authz

Create trunk, branches and tags structure under testrepo

Create “template” directories with following command:

mkdir -p /tmp/svn-structure-template/{trunk,branches,tags}

Then import template to project repository using svn import command:
svn import -m 'Initial import' /tmp/svn-structure-template/ http://localhost/svn/testrepo/

Setup User/Repo based access control

Create “template” directories with following command:

vim /etc/svn/svn-authz-users

Then import template to project repository using svn import command:
# Allow full access to all repos
[/]
* = 
master = rw

[homepage:/]
* =
master = rw
external_chk = r

# Lock MyRepo Branch_A
# Note that you only need the MyRepo: prefix if you have more than one repo
[janus:/z_Deploy]
* = r
master = rw

[janus:/11002]
* = r
master = rw
developer = rw

[ATX_Neuenstein:/]
* = 
master = rw
client = r

# Lock all tags in all repos; only allow 'master' to create new tags.
[/tags]
* = r
master = rw

Start Apache and modify firewall rules

Start Apache:

systemctl start httpd.service
systemctl enable httpd.service

Open the HTTP service port:

firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --reload

Usage

open in your browser

http://localhost/svn/testrepo/

SSL secured web-server

see also http://wiki.centos.org/HowTos/Https

Backup/Restore SVN repositories

Backup/Restore SVN

Von Jeremias Keihsler vor 13 Tagen aktualisiert · 3 Revisionen