Im Folgenden ist aufgeführt, was ich getan habe, nachdem ich einige Nachforschungen angestellt hatte, um das Setup von hgwebdir.cgi auf IIS6 zu erhalten. Es basiert auf folgenden Websites:
Sie müssen Folgendes auf dem Server installieren:
- Mercurial (ich habe Version 1.5 verwendet)
- Python 2.6. Die Version von Python hängt von der installierten Version von Mercurial ab. Mercurial 1.5 verwendet Python 2.6. Installieren Sie x86, auch wenn Sie x64 ausführen.
Die Schritte für mich waren:
- Erstellen Sie ein Verzeichnis für die Website. Ich habe c: \ inetpub \ wwwroot \ hg verwendet.
- Klicken Sie in IIS mit der rechten Maustaste auf den Ordner für hg, wählen Sie Eigenschaften aus und wählen Sie die Registerkarte Basisverzeichnis.
- Klicken Sie auf die Schaltfläche Anwendung erstellen. Setzen Sie die Ausführungsberechtigungen auf "Skripte".
- Klicken Sie weiterhin auf der Registerkarte Basisverzeichnis auf die Schaltfläche Konfiguration. Klicken Sie im Popup "Anwendungskonfiguration" auf die Schaltfläche Hinzufügen, um eine Anwendungserweiterung hinzuzufügen. Die ausführbare Datei lautet c: \ Python26 \ python.exe -u "% s" "% s". Die Erweiterung ist .cgi. Setzen Sie die "Verben" auf "Limit auf: GET, HEAD, POST". Überprüfen Sie sowohl die Skript-Engine als auch die vorhandene Datei.
- Klicken Sie auf der Registerkarte Verzeichnissicherheit im Abschnitt Authentifizierung und Zugriffssteuerung auf die Schaltfläche Bearbeiten. Deaktivieren Sie alle Authentifizierungsmethoden und aktivieren Sie die Methode "Grundlegende Authentifizierung". Legen Sie die Standarddomäne fest, wenn Sie Ihre Active Directory-Domäne verwenden möchten.
- Klicken Sie in IIS im linken Bereich auf den Ordner Web Service Extensions. Klicken Sie auf den Link "Neue Webdiensterweiterung hinzufügen". Der Name der Erweiterung sollte Python sein. Die erforderliche Datei lautet c: \ Python26 \ python.exe -u "% s" "% s". Stellen Sie sicher, dass die neue Erweiterung "Zulässig" ist.
Jetzt ist ein guter Zeitpunkt, um zu testen, ob Python funktioniert. Erstellen Sie eine Datei in Ihrem neuen Hg-Ordner mit dem Namen test.cgi. Fügen Sie den folgenden Python-Code ein:
print 'Status: 200 OK'
print 'Content-type: text/html'
print
print '<html><head>'
print ''
print '<h1>It works!</h1>'
print ''
print ''
Öffnen Sie den Browser für Ihre Site, z. B. http: //localhost/hg/test.cgi
Sie sollten sehen "Es funktioniert!" im Browser.
Als nächstes bringen wir das hgwebdir zum Laufen.
- Löschen Sie test.cgi
- Klonen Sie das HG-Repo in ein neues Verzeichnis:
https://www.mercurial-scm.org/repo/hg/
- Kopieren Sie hgwebdir.cgi aus dem geklonten hg-Repo in Ihr Webverzeichnis: c: \ inetpub \ wwwroot \ hg \
- Bearbeiten Sie die Datei und ändern Sie sie
application = hgwebdir('hgweb.config')
wsgicgi.launch(application)
zu
application = hgwebdir('c:\inetpub\wwwroot\hg\hgweb.config')
wsgicgi.launch(application)
- Entpacken Sie die Datei Library.zip im Mercurial-Verzeichnis c: \ Programme \ Mercurial \ in Ihr Webverzeichnis c: \ inetpub \ wwwroot \ hg \
- Kopieren Sie das Vorlagenverzeichnis von c: \ Programme \ Mercurial \ templates \ nach c: \ inetpub \ wwwroot \ hg \ templates \
- Erstellen Sie eine Datei mit dem Namen hgweb.config in Ihrem Webverzeichnis.
Jetzt ist ein guter Zeitpunkt, um es auszuprobieren. Gehen Sie im Browser zur folgenden URL : http: //localhost/hg/hgwebdir.cgi
- Bearbeiten Sie die Datei hgweb.config und fügen Sie Folgendes ein:
[collections]
\\server\share$\Hg\ = \\server\share$\Hg\
[web]
allow_push = *
push_ssl = false
Dies sind alle meine Einstellungen, zum Beispiel haben wir unsere Repos in Unterverzeichnissen unter \\ server \ share $ \ Hg. Die Web-App wird unter den Berechtigungen des angemeldeten Benutzers über den Browser ausgeführt, sodass er Lese- / Schreibberechtigungen für die Freigabe benötigt.
Der letzte Schritt besteht darin, lange Verbindungen zuzulassen, die beim ersten Klonen eines Repos auftreten können. Führen Sie den folgenden Befehl aus, um das Zeitlimit auf 50 Minuten zu erhöhen:
cd \inetpub\AdminScripts\
cscript adsutil.vbs GET /W3SVC/CGITimeout
cscript adsutil.vbs SET /W3SVC/CGITimeout 3000