Project

General

Profile

Important Warning

This will not work with current versions of svn until https://github.com/lighttpd/lighttpd1.4/pull/38 is applied (currently targetting lighttpd 1.4.40)

See ticket #631 for more information.

Apache+Subversion Recipe

This recipe shows how to setup an example subversion repository using Apache 2.2, mod_dav_svn, and lighttpd 1.4.11.

We will create a subversion repository hosted at the example address: `http://projects.example.com/svn/test/`.

Before you continue, make sure you have installed:


#!ShellExample
# groupadd svn
# useradd svn

Create test repository

Create the subversion repository, and set its owner and group to svn:


#!ShellExample
# mkdir -pm700 /var/svn/projects.example.com
# svnadmin create /var/svn/projects.example.com/test
# chown -R svn:svn /var/svn/projects.example.com

NB: This implies that you are running Apache from that user:group too.

Setup Apache

Create the directory for the projects.example.com domain public files:


#!ShellExample
# mkdir -p /var/www/projects.example.com/httpdocs

Setup a virtual host inside httpd.conf:


<VirtualHost *:8080>
    ServerName projects.example.com
    DocumentRoot /var/www/projects.example.com/httpdocs

    <Location /svn/test>
        DAV svn
        SVNPath /var/svn/projects.example.com/test
        AuthType Basic
        AuthName "Test Subversion repository" 
        AuthUserFile /var/svn/projects.example.com/test/conf/users
        Require valid-user
        Order allow,deny
        Allow from all
    </Location>
</VirtualHost>

Create a users database for the example user:


#!ShellExample
# htpasswd -cm /var/svn/projects.example.com/test/conf/users example

Change Apache User and Group variables from:


User apache
Group apache

to:


User svn
Group svn

For more information, see the Version Control with Subversion book chapter httpd, the Apache HTTP server.

Notice: If using SSL with Lighttpd change ServerName to `https://projects.example.com` or some Subversion commands may not work.

Setup Lighttpd

Setup Lighttpd to use mod_proxy to proxy requests to Apache at port 8080:


$HTTP["host"] == "projects.example.com" {
    server.document-root = "/var/www/projects.example.com/httpdocs" 
    proxy.server = (
        "/svn/test" => (("host" => "127.0.0.1", "port" => 8080))
    )
}

Test the setup

Restart Apache and Lighttpd.

Perform initial project import, checkout the test repository, and commit some stuff:


#!ShellExample
$ svn import /var/www/projects.example.com/httpdocs file:///var/svn/projects.example.com/test -m "Initial import" 
$ svn checkout --username example http://projects.example.com/svn/test
$ cd test
$ svn mkdir testbranches tags trunk
$ svn commit

And you should be up and running!

If you have any question, contact us using our Forum!