Install Subversion Server on OpenSUSE 12.3

1. Install requirements

zypper install subversion subversion-server apache2 apache2-doc apache2-prefork libapr1 libapr-util1 libneon libneon-devel

2. Create account

groupadd -r svn
useradd -r -g svn -d /home/svn -s /bin/false svn

3. Add Apache2 module

a2enmod dav
a2enmod dav_svn
a2enmod authz_svn

4. Configure Apache

vi /etc/apache2/conf.d/subversion.conf

<IfModule mod_dav_svn.c>
  <Location /svn>
    Order allow,deny
    Allow from all
    DAV svn
    SVNParentPath /home/svn/repos
    SVNListParentPath OnAuthType Basic
    AuthName "Subversion access requires login."
    AuthUserFile /home/svn/users/svn_passwd
    Require valid-user
    AuthzSVNAccessFile /home/svn/users/svn_acl
  </Location>
</IfModule>

5. Prepare directories

mkdir -p /home/svn/repos
mkdir -p /home/svn/users
chown root:www /home/svn/repos
chown root:www /home/svn/users
chmod 750 /home/svn/repos
chmod 750 /home/svn/users

6. Add SVN user

touch /home/svn/users/svn_passwd
chown root:www /home/svn/users/svn_passwd
chmod 640 /home/svn/users/svn_passwd
htpasswd2 /home/svn/users/svn_passwd user01

7. Create SVN access list

vi /home/svn/users/svn_acl

[groups]
admins = root, user01
web-developers = user01, user03
everyone = user01, user02, user03

[/]
@admins = rw
[www.myweb.com:/]
user01 = rw
user03 = r
chown root:www /home/svn/users/svn_acl
chmod 640 /home/svn/users/svn_acl

8. Create repogitory

svnadmin create /home/svn/repos/www.myweb.com

chown -R wwwrun:www /home/svn/repos/*/{db,locks}
chown wwwrun:www /home/svn/repos/*

9. Apply skin of directory index(3rd-party XSLT)

http://www.reposstyle.com

10. Script for new repogitory (tip)

vi ~/bin/create_repo

#!/bin/bash
svnuser=root
svnpass=rootpass

if [ -z "$1" ]
then
  echo "Usage: `basename $0` [repository name]"
  exit 1
fi

svnadmin create /home/svn/repos/$1
chown wwwrun:www /home/svn/repos/$1
chown -R wwwrun:www /home/svn/repos/*/{db,locks}
svn mkdir -m "initial structure" -q http://$svnuser:$svnpass@127.0.0.1/svn/$1/branches http://$svnuser:$svnpass@127.0.0.1/svn/$1/tags http://$svnuser:$svnpass@127.0.0.1/svn/$1/trunk

exit 0

 

♦ References

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.