HgWebDir unter lighttpd


Heute mal ein kleiner Trick, wie man hgwebdir.cgi problemlos unter lighttpd zum Laufen bekommt, da es ein paar kleine Tricks braucht. Aber eigentlich ist es ganz einfach.

Also zuerst sollte man sich das Script herunterladen. Ich lade es in /var/www/hg/ wobei /var/www/ mein Document-Root ist.

Danach muss man ein paar Zeilen zur Serverkonfiguration hinzufügen.

server.modules += ("mod_cgi")

$HTTP["url"] =~ "^/hg/" {
	cgi.assign = (
		".cgi" => "/usr/bin/python",
	)
}

Damit führt lighttpd nach einem Restart alle .cgi Dateien in /hg/ mit Python aus. Dies können wir unter http://server-name/hg/hgwebdir.cgi testen. Es sollte eine Seite mit einer leeren Liste und einem Mercurial-Logo erscheinen.

Jetzt kann man im gleichen Verzeichnis in dem auch die Datei hgwebdir.cgi die Datei hgweb.config erstellen.

Diese Datei könnte etwa so aussehen:

[web]
style = gitweb
[paths]
repo1 = /pfad/zum/repository
repo2 = /pfad/zum/anderen/repository

Das Ergebnis sollte dann etwa so wie hier aussehen.

Jetzt ist http://server-name/hg/hgwebdir.cgi aber keine schöne URL und http://server-name/hg/ wäre doch viel schöner. Dazu können wir mod_rewrite verwenden. Die Konfiguration könnte dann etwa so aussehen:

server.modules += ("mod_cgi", "mod_rewrite")

$HTTP["url"] =~ "^/hg/" {
	cgi.assign = (
		".cgi" => "/usr/bin/python",
	)
}
url.rewrite-once = (
	"^/hg(/.*)$" => "/hg/hgwebdir.cgi$1",
)

Das endet aber in einem Chaos. Viel besser hierfür geeignet ist mod_alias. Damit lässt sich das ganze problemlos machen:

server.modules += ("mod_cgi", "mod_alias")

$HTTP["url"] =~ "^/hg/" {
	cgi.assign = (
		".cgi" => "/usr/bin/python",
	)
	alias.url = (
		"/hg" => "/var/www/hg/hgwebdir.cgi"
	)
}

Damit funktioniert alles perfekt. Wichtig ist, dass der volle Pfad zum CGI-Script angegeben wird.

Im Mercurial Wiki finden sich weitere Informationen, wie man Push-Support unter lighttpd einrichtet.

Ältere Artikel

Django 1.0 erschienen!


Sei (nicht) böse: Chrome


Internet Explorer 8 - Bessert sich Microsoft?


“Even kernel panic looks nice!”


Django 1.0 Beta ist da


delicious 2.0 ist da!


Upload Status mit Django und AJAX anzeigen


Ubuntu 8.10 Alpha 3 erschienen


Django newforms-admin jetzt im Trunk


izibi weblog

Dieses Weblog ist die digitale Müllhalde eines Geeks. Dieser Geek heißt Julian und nutzt Linux. Er entwickelt gerne Webanwendungen mit Django, wie zum Beispiel Xairro.com. Über Django schreibt er auch Artikel.