Setting up SVN with HTTP Access On Centos 5


Subversion is a fantastic version management and software configuration management tool for teams and individuals to manage software applications. It offers many advantages over it's CVS ancestor such as it's built-in compatibility with Apache through the WebDAV protocol giving easy remote access over HTTP.

(Your server will require an external IP address to be accessed from an external location)

This tutorial will take you step-by-step through the install and set-up process for Subversion.


The easiest way to install and manage packages on Linux is using yum. It can detect dependencies and resolve them for you - easing many headaches! If you do not have it installed then you can quickly install it from the terminal.

Run the following commands to install it (hit y where necessary to confirm the process):

rpm -Uvh
                      rpm -Uvh

Open in new window

Yum should now be ready to use!


1. From the terminal run the following commands (hit y where necessary to confirm the process):

yum install subversion
                      yum install mod_dav_svn

Open in new window

mod_dav_svn allows integration with Apache through the WebDAV protocol.

You may find that SVN is already installed by default.

Enter svnadmin into the terminal to confirm correct installation.


1. First you must create a directory for your svn repository. Through this tutorial my repository will be in the  / directory and called repos. You should change the paths throughout the tutorial if you want to place the repository in a different place.

To create your repository and assign permissions open the terminal and run the following commands:
mkdir /repos
                      svnadmin create /repos
                      chown -R apache.apache /repos
                      chmod g+s /repos/db

Open in new window

2. Within /etc/httpd/conf.d you will find a file called subversion.conf. This file configures SVN to work with Apache. You must edit it to specify your SVN repository and secure it.

First copy and paste the file renaming it to subversion-backup.conf. This is just incase you make any mistakes - you can restore the file to its original with little hassle.

Then delete the contents of the original file. Add in the following to the file, changing directories where necessary to your own repository.

<Location /repos>
                           DAV svn
                           SVNPath /repos
                           AuthType Basic
                           AuthName "Your Subversion Repository"
                           AuthUserFile /etc/httpd/passwd/password
                           Require valid-user

Open in new window

This is all the changes you need to make to Apache. You have now told Apache where your SVN repository is and told it to authenticate the user. The last thing we need to do is create the username and password for the user

3. From your terminal enter the following commands to set the SVN username and password.

mkdir /etc/httpd/passwd
                      htpasswd -b -c /etc/httpd/passwd/password svn_username svn_password

Open in new window

Whichever username and password you choose - it will be required to authenticate when you attempt to connect to the SVN repository over HTTP.

You should note that your password is stored in plain-text and sent over the web in plain text unless you use SSL. This is outside the scope of this article.

Thats all there is to setting up SVN. Restart Apache to make all your changes take effect.

To test your setup open a web browser and navigate to http://externalip/repos

It should return:

Revision 0: /
Powered by Subversion version 1.0.4 (r9844).

You can now use various clients such as Eclipse (with a plug-in) to add to your repositories.


Comments (0)

Have a question about something in this article? You can receive help directly from the article author. Sign up for a free trial to get started.