Webserver für Mercurial



  • Ich kann dir leider bei deinem konkreten Problem nicht helfen, aber ich würde sagen Apache auf Windows ist keine gute Idee. Das macht vermutlich so gut wie niemand, deswegen wirst du bei Fehlern und Problemen oft auf dich alleine gestellt sein.



  • Wieso das denn? Ist doch Unfug.

    Damals, als wir noch Subversion benutzt haben, hatten wir auch Jahrelang Apache unter Windows am laufen. War völlig Problemfrei.



  • Wo ist das Problem?



  • BadWolf schrieb:

    Wieso das denn? Ist doch Unfug.

    Damals, als wir noch Subversion benutzt haben, hatten wir auch Jahrelang Apache unter Windows am laufen. War völlig Problemfrei.

    Zwei Probleme, die ich auch ohne tieferes Apache-Wissen auf Anhieb erkenne:
    1. So ein Setup haben weniger Leute, deswegen ist man bei Problemen eher auf sich allein gestellt.
    2. Die Apache-Version auf Windows muss man mangels Paketmanager irgendwie anders, vermutlich manuell, updaten, was man schnell vergisst. Man nutzt also schnell eine veraltete Apache-Version mit entsprechenden Sicherheitslücken.

    Dass es funktioniert, hab ich nicht bezweifelt. Ich habe nur davon abgeraten, weil sowas zu installieren unter Linux eben doch deutlich einfacher ist und das Resultat vermutlich sicherer.

    Wenn man weiß, was man tut, geht es aber bestimmt auch auf Windows. Das Posting des OPs erweckt auf mich aber eben einen anderen Eindruck.



  • In der Hoffnung jmd. hätte dasselbe oder ein ähnliches Problem poste ich hier mal die aktuelle Fehlermeldung:

    [Fri Jul 01 12:27:30 2011] [error] [client 127.0.0.1] mod_wsgi (pid=1672): Target WSGI script 'C:/vhosts/hg.example.net/cgi-bin/hgweb.wsgi' cannot be loaded as Python module.
    [Fri Jul 01 12:27:30 2011] [error] [client 127.0.0.1] mod_wsgi (pid=1672): Exception occurred processing WSGI script 'C:/vhosts/hg.example.net/cgi-bin/hgweb.wsgi'.
    [Fri Jul 01 12:27:30 2011] [error] [client 127.0.0.1] Traceback (most recent call last):
    [Fri Jul 01 12:27:30 2011] [error] [client 127.0.0.1] File "C:/vhosts/hg.example.net/cgi-bin/hgweb.wsgi", line 17, in <module>
    [Fri Jul 01 12:27:30 2011] [error] [client 127.0.0.1] application = hgweb(config)
    [Fri Jul 01 12:27:30 2011] [error] [client 127.0.0.1] File "mercurial\\hgweb\\__init__.pyc", line 26, in hgweb
    [Fri Jul 01 12:27:30 2011] [error] [client 127.0.0.1] File "mercurial\\hgweb\\hgwebdir_mod.pyc", line 61, in __init__
    [Fri Jul 01 12:27:30 2011] [error] [client 127.0.0.1] File "mercurial\\hgweb\\hgwebdir_mod.pyc", line 70, in refresh
    [Fri Jul 01 12:27:30 2011] [error] [client 127.0.0.1] File "mercurial\\ui.pyc", line 35, in __init__
    [Fri Jul 01 12:27:30 2011] [error] [client 127.0.0.1] File "mercurial\\demandimport.pyc", line 75, in __getattribute__
    [Fri Jul 01 12:27:30 2011] [error] [client 127.0.0.1] File "mercurial\\demandimport.pyc", line 47, in _load
    [Fri Jul 01 12:27:30 2011] [error] [client 127.0.0.1] File "mercurial\\util.pyc", line 576, in <module>
    [Fri Jul 01 12:27:30 2011] [error] [client 127.0.0.1] File "mercurial\\demandimport.pyc", line 85, in _demandimport
    [Fri Jul 01 12:27:30 2011] [error] [client 127.0.0.1] File "mercurial\\windows.pyc", line 21, in <module>
    [Fri Jul 01 12:27:30 2011] [error] [client 127.0.0.1] File "mercurial\\demandimport.pyc", line 75, in __getattribute__
    [Fri Jul 01 12:27:30 2011] [error] [client 127.0.0.1] File "mercurial\\demandimport.pyc", line 47, in _load
    [Fri Jul 01 12:27:30 2011] [error] [client 127.0.0.1] File "mercurial\\osutil.pyc", line 12, in <module>
    [Fri Jul 01 12:27:30 2011] [error] [client 127.0.0.1] File "mercurial\\osutil.pyc", line 10, in __load
    [Fri Jul 01 12:27:30 2011] [error] [client 127.0.0.1] ImportError: DLL load failed: The specified module could not be found.

    Offensichtlich wird irgend eine DLL oder ein Modul nicht gefunden.

    Diese Fehlermeldung wird ins Logfile geschrieben, sobald das entsprechende wsgi Skripts ausgeführt wird.

    Simon



  • theta schrieb:

    Offensichtlich wird irgend eine DLL oder ein Modul nicht gefunden.

    Dann schau mal nach, welche das ist 😉



  • Michael E. schrieb:

    theta schrieb:

    Offensichtlich wird irgend eine DLL oder ein Modul nicht gefunden.

    Dann schau mal nach, welche das ist 😉

    Natürlich. 😉

    Laut Dependecy Walker (Profiling) ist es:

    LoadLibraryExA("C:\Program Files\Python26\mercurial.osutil.pyd", 0x00000000, LOAD_WITH_ALTERED_SEARCH_PATH) called from "PYTHON26.DLL" at address 0x1E02A4A5.
    LoadLibraryExA("C:\Program Files\Python26\mercurial.osutil.pyd", 0x00000000, LOAD_WITH_ALTERED_SEARCH_PATH) returned NULL. Error: The specified module could not be found (126).



  • So nun muss du überprüfen, ob das Modul ladbar sein kann und entsprechen maßnahme einleiten 😉 Wobei mich greade wunder, das Python Script lad Python26.dll selbst? O.o



  • So, ich denke ich bin einen Schritt weiter, immerhin erscheint die Übersicht der Repositories im Browser.

    Das Problem scheint das vorkompilierte osutil.pyd File zu sein.
    Bei mir hats geklappt, nachdem ich die Mercurial Sourcen heruntergeladen habe und das File osutil.py (unkompiliert) aus mercurial/pure ins Verzeichnis mercurial der Installation (z.B. C:\Program Files\Python26\Lib\site-packages\mercurial) kopiert habe. Getestet habe ich das nur beim Mercurial Python Package (nicht beim MSI). Das orginal osutil.pyd habe ich umbenannt.

    Edit:
    Nicht nur osutil.py muss aus mercurial/pure kopiert werden, sondern alle *.py Files aus dem pure Verzeichnis - die entsprechenden *.pyd sind zu löschen!

    Ich nehme an, das Problem dürfte beim MSI Package analog zu beheben sein - dort heisst das "korrupte" File einfach osutil.pyc.



  • Nachdem ich das oben genannte Setup lauffähig hatte, kam die nächste Hürde: SSL einschalten. Da alles ein wenig verwirrend ist, die Doku nicht durchgängig und es sehr viele Optionen gibt, gelang es mir nicht.

    Desshalb bin ich darauf umgestiegen einen Visual SVN Server zu installieren und den zusätzlich zu SVN auch für Mercurial zu konfigurieren.
    http://stackoverflow.com/questions/2428870/hosting-mercurial-hg-via-visualsvn-server

    Zusätzlich zu den Schritten in der Anleitung habe ich noch folgende Dinge geändert:
    - SVN und HG Repos in separate Verzeichnisse gesteckt (auch den Registry Key RepositoriesRoot bei HKLM\Software\VisualSVN\VisualSVN Server anpassen)
    - index.html angepasst (d.h. automatische weiterleitung entfernt und die mercurial repositories verlinkt)

    Das funktioniert jetzt so.


Anmelden zum Antworten