2010-12-04 19 views
9

Ich versuche, Mercurial auf IIS 7.5 (Win 7 x64) zu hosten und weiterhin in einen Fehler laufen, den ich nicht zu beheben scheinen.Mercurial und hgweb auf IIS 7.5 - Python Fehler

Ich habe Jeremy Skinners Tutorial hier gefolgt: Mercurial on IIS7

Statt hgwebdir, verwende ich hgweb, wie ich bin mit Mercurial 1.7.2

Ich habe Python installiert und arbeiten. Ich habe eine IIS-Anwendung für Mercurial bei http://localhost/hg up -> im Verzeichnis c: \ inetpub \ wwwroot \ hg

Ich legte das Vorlagen-Verzeichnis in c: \ inetpub \ wwwroot \ hg ich die library.zip-Datei in c extrahierte : \ inetpub \ wwwroot \ hg

Als ich die Website besuchte, erhalte ich einen Fehler -> Datei "C: \ inetpub \ wwwroot \ hg \ hgweb.cgi", Zeile 15, aus dem Import Import Import; demandimport.enable() Import. Kein Modul mit dem Namen Mercurial“

Wenn für diesen Fehler suchen, fand ich folgende Antworten: https://stackoverflow.com/questions/2123798/

die akzeptierte Antwort Folgen, änderte ich meine hgweb.cgi wie folgt aussehen:

#!c:/python/python26/python.exe 
# 
# An example hgweb CGI script, edit as necessary 
# See also https://www.mercurial-scm.org/wiki/PublishingRepositories 

# Path to repo or hgweb config to serve (see 'hg help hgweb') 
config = "/path/to/repo/or/config" 

# Uncomment and adjust if Mercurial is not installed system-wide: 
import sys; sys.path.insert(0, "c:\inetpub\wwwroot\hg") 

# Uncomment to send python tracebacks to the browser if an error occurs: 
#import cgitb; cgitb.enable() 

from mercurial import demandimport; demandimport.enable() 
from mercurial.hgweb import hgweb, wsgicgi 
application = hgweb('c:\inetpub\wwwroot\hg\hgweb.config') 
wsgicgi.launch(application) 

Danach tun, bekomme ich immer noch den gleichen Fehler habe ich keine Ahnung, was anderes zu tun Jede Hilfe wäre sehr dankbar

Edi 1:... Screenshot von c: \ inetpub \ wwwroot \ hg wie pro Anfrage: My Hg directory

+0

Konnten Sie einen Screenshot oder whatnot des Inhalts von c: \ inetpub \ wwwroot \ hg posten? Vielleicht sind die Dateien in einem Unterverzeichnis gelandet, was sie eigentlich sollen. –

+0

@Lasse Gepostet Screenshot nach Ihrer Anfrage. – thorkia

+0

Ich hatte den gleichen Fehler und recherchierte die daraufhin erstellte Lösung [http://www.firegarden.com/software/hosting-mercurial-repo-iis7-windows-server-2008r2-x64 -python-isapi-cgi) – Firegarden

Antwort

15

Ich habe in der letzten Woche mit dem gleichen Setup gekämpft. Diese für 1.7.2

ist ein more recent link fand ich problematisch sein, ich

Es sieht für mich wie sie einige wesentliche Änderungen, wie Quecksilber-Werke in IIS kürzlich gemacht haben, so dass der Link oben wird Jeremy Skinners Tutorial musste ein paar Dinge anders machen.

Diese Anweisungen sind für 1.7.x, wenn Sie 1.8.x verwenden, lesen Sie unbedingt Ethans Kommentar unten!

Ich folgte den Anweisungen in the comments of /contrib/win32/hgwebdir_wsgi.py.

  • Installieren Python 2.6.6

  • In Python System PATH (zu Leben leichter zu machen)

  • pywin32 v214 installieren (mit dem Python Installer Wichtig!) ( Beachten Sie, dass diese gebaut gegen Python 2.6)

  • Installieren isapi_wsgi

  • download the mercurial source package
    Extrakt, dann auf Ausführen

     
    python setup.py --pure build_py -c -d . build_ext -i build_mo --force 
    python setup.py --pure install --force 
    
  • Kopieren hgwebdir_wsgi.py aus/contrib/win32 auf den Ordner, den Sie hosten möchten es aus.

  • Erstellen Sie eine Datei hgweb.config in dem Ordner, von dem aus Sie hosten werden. Fügen Sie den Inhalt

     
    [paths] 
    yourRepoName = c:\yourRepoLocation 
    
  • bearbeiten hgwebdir_wsgi.py die hgweb.config zu zeigen. path_prefix ist 0, wenn hg der Stamm der Website ist. wenn Sie es in einem vdir 1 tief setzen, dann ist es 1 usw.

  • Run Python hgwebdir_wsgi.py die isapi dll _hgwebdir_wsgi.dll zu erstellen. Konsole sollte "Installation abgeschlossen" drucken

  • Erstellen Sie Ihre App-Pool in IIS (kein verwalteten Code)

  • Erstellen Sie Ihre Website, mit dem Ordner auf den gleichen Ordner wie hgwebdir_wsgi.py

  • hinzufügen Handler vom Typ Modul verwenden "*" als die Abbildung, wählen _hgwebdir_wsgi.dll wie die ausführbare Datei, wählen Sie IsapiModule als Typ, Mercurial-ISAP Ich als Name (obwohl Name ist nicht wirklich wichtig)

  • Bearbeiten Feature Berechtigungen des Moduls zu ermöglichen, auszuführen.

web.config (für die letzten 2 Stufen):

<system.webServer> 
<handlers accessPolicy="Read, Execute, Script"> 
<add name="Mercurial-Isapi" path="*" verb="*" modules="IsapiModule" scriptProcessor="C:\inetpub\hgweb\_hgwebdir_wsgi.dll" resourceType="Unspecified" /> 
</handlers> 
</system.webServer> 

Nach all dem konnte ich es zum Laufen bringen.

Eine letzte Sache, habe ich mfc71.dll zu windows/system32 kopieren, obwohl ich nicht sicher bin, war es notwendig, http://python.net/crew/skippy/win32/

Ich denke, den wichtigsten Unterschied zwischen dem, was ich hier habe und was das ist oben Link ist, dass ich die "pure Python" mercurial installieren, Obwohl ich ein kompletter Python-Neuling bin, bin ich mir nicht sicher. Auch habe ich die "Python-Installationen" für pywin und isapi_wsgi statt der einfachen Windows-MSIS.

+0

Alles funktioniert gut, bis ich zu diesem Schritt komme: Führen Sie python hgwebdir_wsgy.py, um die isapi dll _hgwebdir_wsgy.dll zu erstellen. Konsole sollte auszudrucken „Installation abgeschlossen“ Ich erhalte die folgende Fehlermeldung: Traceback (jüngste Aufforderung zuletzt): File „hgwebdir_wsgi.py“, Zeile 61, in Import isapi_wsgi Import: Kein Modul mit dem Namen isapi_wsgi – thorkia

+0

Gefolgt alle Richtungen , und wenn ich http: // localhost/hg/besuche, bekomme ich das Verzeichnis doesnt list files error ... Gibt es etwas anderes, was ich tun sollte? – thorkia

+0

Sieht so aus, als hätte ich einen sehr wichtigen Schritt vergessen, indem ich isapi_wsgi installiert habe. Ich habe es hinzugefügt und den obigen Link hinzugefügt. Tut mir sehr leid. – Brook

1

Ich hatte vorher viele Fehler. Alle python, pywin32, isapi_wsgi deinstalliert und wie oben beschrieben deinstalliert. Es funktionierte wie ein Kinderspiel. Luc

3

Ich schrieb up to date instructions on how to setup a mercurial repository on IIS7 die aktuellen Versionen von Mercurial mit (1.8.x) als auch die aktuelle Version von Python (2.7).

Dies wird für Sie arbeiten und ich schätze es, wenn Sie es verwenden, um die Antwort zu wählen (oder ab;)).

+0

Endlich ein Tutorial, das mit 64-Bit-Windows-Server funktioniert 2008, IIS 7, Python 2.7 und Mercurial 1.7.2+. Vielen Dank! –