Cgit ist ein Web-Interface für git. Es ist in C realisiert und arbeitet als CGI-Skript.
Im folgenden wird beschrieben, wie cgit mit nginx unter Ubuntu 10.04 aufgesetzt und konfiguriert wird. Die Anleitung sollte sich jedoch leicht auf andere Versionen bzw. Distributionen übertragen lassen.
Zunächst wird das Programm fcgiwrap benötigt. Da es leider bei Ubuntu 10.04 noch nicht vorhanden ist, gibt es hier zwei Möglichkeiten. Entweder es wird von Hand selbst "gebaut" oder es wird versucht ein vorhandenes Paket zu installieren. In diesem Fall wurde sich dafür entschieden ein fertiges Paket aus einer neueren Ubuntu Version zu verwenden. Da dieses Jahr noch auf Ubuntu 12.04 aktualisiert werden soll wurde auch das fcgiwrap Paket aus dieser Version genommen und installiert.
$ sudo apt-get update
$ sudo dpkg -i fcgiwrap_1.0.3-3_i386.deb
$ sudo apt-get -f install
Da cgit leider nicht in den Paketquellen vorhanden ist, muss es auch selbst gebaut werden, das ist jedoch relativ einfach zu machen. Zunächst werden die dafür benötigten Pakete installiert.
$ sudo apt-get install build-essential git-core libssl-dev
Für ein leichteres und schnelleres Update wird anschließend direkt der stable Zweig des git Repositories verwendet.
$ git clone git://hjemli.net/pub/git/cgit
$ cd cgit/
$ git submodule init git submodule update
$ git checkout stable
Im stable Zweig kann dann direkt mit dem "Bauen" begonnen werden.
$ make
Theoretisch könnte cgit jetzt direkt mit make install ins System installiert werden, da jedoch cgit an einer anderen Stelle liegen soll, wird es einfach von Hand kopiert.
Achtung: Wer die Mapage benötigt müsste diese auch von Hand kopieren.
$ cp cgit /mein/cgi-bin/
$ sudo mkdir /var/www/cgit/
$ sudo cp cgit.css cgit.png /var/www/cgit/
$ sudo chown -R www-data:www-data /var/www/cgit
Ist dies geschafft kann nginx konfiguriert werden.
server {
listen git.example.org:80;
server_name git.example.org;
access_log /var/log/nginx/git.log;
error_log /var/log/nginx/git.error;
root /var/www/cgit/;
proxy_redirect off;
location ~* ^.+\.(css|png|ico)$ {
expires 30d;
}
location / {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /mein/cgi-bin/cgit;
fastcgi_pass unix:/var/run/fcgiwrap.socket;
fastcgi_param PATH_INFO $uri;
fastcgi_param QUERY_STRING $args;
}
}
Nun noch nginx neu starten.
$ sudo service nginx restart
Zum Schluss muss noch die Datei /etc/cgitrc angelegt werden. Der Inhalt könnte wie folgt aussehen.
root-title=Mein cgit Server
root-desc=
css=/cgit.css
logo=/cgit.png
snapshots=tar.gz tar.bz2
virtual-root=/
enable-index-links=1
enable-log-filecount=1
enable-log-linecount=1
enable-commit-graph=1
repo.url=erstes-repo
repo.path=/var/git/erstes-repo
repo.desc=Erstes Repo
repo.owner=Ich
repo.url=zweites-repo
repo.path=/var/git/zweites-repo
repo.desc=Zweites Repo
repo.owner=Du
Achtung: Für mehr Sicherheit sollte der Dienst fcgiwrap noch einmal geprüft werden. Laufen alle Prozesse mit den gewünschten Nutzerrechten und in der gewünschten Umgebung?