Project

General

Profile

ApacheSubversionRecipe » History » Revision 15

Revision 14 (Anonymous, 2008-09-09 17:45) → Revision 15/16 (Anonymous, 2012-08-11 10:42)

h2. Important Warning 


 With lighttpd 1.4.18, and probably several other versions, you might not be able to commit to the repository!    You'll get errors like: 


 <pre> 

 svn: Commit failed (details follow): 
 svn: OPTIONS request failed on '/svn/a/b/c' 
 svn: OPTIONS of '/svn/a/b/c': 200 OK (https://dev.yoursite.com) 
 </pre> 


 See ticket #631 for more information. 


 h2. 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: 

 * "Apache":http://httpd.apache.org/ (running at port 8080) 
 * "Subversion":http://subversion.tigris.org/ (including "mod_dav_svn":http://svnbook.red-bean.com/nightly/en/svn-book.html#svn.serverconfig.httpd) 
 * "Lighttpd":http://www.lighttpd.net/ 1.4.11 
 * A daemon system account with user and group id @svn@ 

 <pre> 

 #!ShellExample 
 # groupadd svn 
 # useradd svn 
 </pre> 




 h3. Create test repository 


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


 <pre> 

 #!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 
 </pre> 


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



 h3. Setup Apache 


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


 <pre> 

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



 Setup a virtual host inside @httpd.conf@: 


 <pre> 

 <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> 
 </pre> 



 Create a users database for the @example@ user: 


 <pre> 

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



 Change Apache User and Group variables from: 

 <pre> 

 User apache 
 Group apache 
 </pre> 

 to: 

 <pre> 

 User svn 
 Group svn 
 </pre> 



 For more information, see the "Version Control with Subversion":http://svnbook.red-bean.com/ book chapter "httpd, the Apache HTTP server":http://svnbook.red-bean.com/nightly/en/svn-book.html#svn.serverconfig.httpd. 

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


 h3. Setup Lighttpd 


 Setup Lighttpd to use "mod_proxy":http://lighttpd.net/documentation/proxy.html to proxy requests to Apache at port 8080: 


 <pre> 

 $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)) 
	 ) 
 } 
 </pre> 





 h3. Test the setup 


 Restart Apache and Lighttpd. 

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


 <pre> 

 #!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 
 </pre> 


 And you should be up and running! 


 If you have any question, contact us using our "Forum":http://forum.lighttpd.net/forum/1!