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- setup rules-file [[http://www.startupcto.com/server-tech/subversion/locking-a-branch-in-svn]]
ssh+svn
may be taken from [[http://www.startupcto.com/server-tech/subversion/setting-up-svn]]
This procedure is for a vanilla OS, ifApache
is already installed and configured you may have to rethink the configuration.
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 onsubversion.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¶
Von Jeremias Keihsler vor 13 Tagen aktualisiert · 3 Revisionen