Project

General

Profile

ApacheSubversionRecipe » History » Revision 7

Revision 6 (Anonymous, 2006-08-28 00:06) → Revision 7/16 (Anonymous, 2007-04-28 12:08)

== 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: 

  * [http://httpd.apache.org/ Apache] (running at port 8080) 
  * [http://subversion.tigris.org/ Subversion] (including [http://svnbook.red-bean.com/nightly/en/svn-book.html#svn.serverconfig.httpd mod_dav_svn]) 
  * [http://www.lighttpd.net/ Lighttpd] 1.4.11 
  * An daemon system account with user and group id `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 
 }}} 


 For more information, see the [http://svnbook.red-bean.com/ Version Control with Subversion] book chapter [http://svnbook.red-bean.com/nightly/en/svn-book.html#svn.serverconfig.httpd 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 [http://lighttpd.net/documentation/proxy.html 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. 

 Checkout the test repository, and commit some stuff: 

 {{{ 
 #!ShellExample 
 $ 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 [http://forum.lighttpd.net/forum/1 Forum]!