I spent some time this afternoon setting up a public git repository for my project, Origami. I had a little bit of trouble getting the repository set up initially, particularly the cgi aspect of it all. Below outlines the steps I took to configure Lighttpd for gitweb, hosted on FreeBSD.
Installation
First, of course, I installed the git port:
portmaster devel/git
I made sure to select the gitweb option, which is de-activated by default. The other options are up to you.
Configuration
Second, I configured Lighttpd in the simplest manner I could find. This solution uses the existing gitweb files in-place. This is contrary to what the pkg-message prescribes, but I like this idea because it’ll ensure that upgrades are handled automatically. I don’t plan to run any additional repositories either, so using the one central set of files is preferable in my situation. This is my configuration:
$HTTP["host"] =~ "^origami.zelut.org" {<br /> $HTTP["url"] =~ "/gitweb/" {<br /> server.indexfiles = ( "gitweb.cgi" )<br /> }<br /> alias.url += ( "/gitweb/" => "/usr/local/share/examples/git/gitweb/" ),<br /> cgi.assign = ( ".cgi" => "/usr/bin/perl" )<br /> }<br />
Repository Configuration
Lastly, I update the repository configuration in /usr/local/share/examples/git/gitweb/gitweb.cgi to my repository location:
our $projectroot = "/path/to/git/repository/"
Conclusion
I find that Lighttpd configuration, once you get used to it, is much simpler than Apache configuration. It’s all a matter of taking the time to learn the options (and finding examples, like this one) and it gets simpler.
I think this configuration for gitweb is very clean, requires minimal configuration additions, and is hopefully pretty self explanatory. I hope it works for you as well.