Running gitweb in FastCGI Mode

Screenshot of gitweb

Maybe my Google-fu is just failing me on this one, but I had a hell of a time getting gitweb to run in FastCGI mode. The key was combining gitweb's --fastcgi flag with the FCGI_SOCKET_PATH environment variable, in addition to a quick library install:

apt-get install libcgi-fast-perl libfcgi-procmanager-perl

Not complicated, but as a Perl novice it took some digging before I got the right combo of settings. Also, I didn't realize that a FastCGI-enabled script will run in CGI mode rather than listen for connections if it's missing that socket environment variable. (An oversimplification, but that's the specific behavior I saw with this script.)

Here's my final setup:

/etc/init/gitweb-fcgi.conf

Here's an Upstart script to start a gitweb wrapper under Ubuntu 10.04. I'm using gitolite and I want the script to run as my git user, hence the call to su.

start on startup
stop on shutdown

exec su git -c /path/to/custom/gitweb.fcgi
respawn

gitweb.fcgi

And here's that custom gitweb wrapper:

#!/bin/sh
export FCGI_SOCKET_PATH=127.0.0.1:9002
/usr/local/share/gitweb/gitweb.cgi --fastcgi

And you might as well install the GitHub copycat theme while you're at it.