Apache, Paython, mod_wsgi, Mercuial -> Internal Server Error

Django, Flask, Bottle, WSGI, CGI…
Antworten
McKay
User
Beiträge: 3
Registriert: Dienstag 15. März 2011, 15:28

Hi,

ich möchte ein Mercurial Server unter Windows zum laufen bekommen, dies gelingt mir aber nicht. Ich hoffe hier nun den ein oder andern Tip zubekommen. Und nein ich möchte ihn nicht unter Linux zum laufen brigen...

Nun was habe ich bisher gemacht...

Unter Windows XP habe ich folgende Programme Installiert...
- Apache 2.2.17 under c:/wamp/Apache2.2
- Python 2.6.6 under c:/Python26
- Mercurial 1.8.1 under c:/Mercurial
- Mercurial-1.8.1.win32-py2.6.exe unter C:\Python26\Lib\site-packages\

und fogende configs angepast...
Apache config (httpd.conf):

Code: Alles auswählen

LoadModule wsgi_module modules/mod_wsgi-win32-ap22py26-3.3.so

LISTEN 81
<VirtualHost *:81>

    WSGIScriptAliasMatch ^(.*)$ c:/wamp_python/scripts/hgwebdir.wsgi$1

    <Directory c:/wamp_python/scripts>
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
    
    CustomLog logs/wsgi_access.log combined
    ErrorLog logs/wsgi_error.log
</VirtualHost>

c:/wamp_python/scripts/hgwebdir.wsgi

Code: Alles auswählen

#!C:/Python26/python.exe
#

# import sys
# sys.path.insert(0, "c:/Mercurial/lib")

from mercurial.hgweb.hgweb_mod import hgweb
from mercurial.hgweb.hgwebdir_mod import hgwebdir

config = "c:/wamp_python/config/hgweb.config"
application = hgwebdir(config)
"c:/wamp_python/config/hgweb.config"

Code: Alles auswählen


[web]
# gitweb, monoblue, spartan
# style = coal

allow_archive = bz2 gz zip
maxchanges = 200
allow_push = *
push_ssl = false

# baseurl = /

[paths]
/ = c:/wamp_python/repositorys/**
In der Apache Error-Logdatei steht nun fogendes, wenn ich die Seite ansurfe...

[Tue Mar 15 15:36:18 2011] [error] [client 127.0.0.1] mod_wsgi (pid=1232): Target WSGI script 'C:/wamp_python/scripts/hgwebdir.wsgi' cannot be loaded as Python module.
[Tue Mar 15 15:36:18 2011] [error] [client 127.0.0.1] mod_wsgi (pid=1232): Exception occurred processing WSGI script 'C:/wamp_python/scripts/hgwebdir.wsgi'.
[Tue Mar 15 15:36:18 2011] [error] [client 127.0.0.1] Traceback (most recent call last):
[Tue Mar 15 15:36:18 2011] [error] [client 127.0.0.1] File "C:/wamp_python/scripts/hgwebdir.wsgi", line 7, in <module>
[Tue Mar 15 15:36:18 2011] [error] [client 127.0.0.1] from mercurial.hgweb.hgweb_mod import hgweb
[Tue Mar 15 15:36:18 2011] [error] [client 127.0.0.1] File "C:\\Python26\\lib\\site-packages\\mercurial\\hgweb\\__init__.py", line 10, in <module>
[Tue Mar 15 15:36:18 2011] [error] [client 127.0.0.1] import hgweb_mod, hgwebdir_mod
[Tue Mar 15 15:36:18 2011] [error] [client 127.0.0.1] File "C:\\Python26\\lib\\site-packages\\mercurial\\hgweb\\hgweb_mod.py", line 10, in <module>
[Tue Mar 15 15:36:18 2011] [error] [client 127.0.0.1] from mercurial import ui, hg, hook, error, encoding, templater
[Tue Mar 15 15:36:18 2011] [error] [client 127.0.0.1] File "C:\\Python26\\lib\\site-packages\\mercurial\\ui.py", line 10, in <module>
[Tue Mar 15 15:36:18 2011] [error] [client 127.0.0.1] import config, util, error
[Tue Mar 15 15:36:18 2011] [error] [client 127.0.0.1] File "C:\\Python26\\lib\\site-packages\\mercurial\\config.py", line 9, in <module>
[Tue Mar 15 15:36:18 2011] [error] [client 127.0.0.1] import error, util
[Tue Mar 15 15:36:18 2011] [error] [client 127.0.0.1] File "C:\\Python26\\lib\\site-packages\\mercurial\\util.py", line 17, in <module>
[Tue Mar 15 15:36:18 2011] [error] [client 127.0.0.1] import error, osutil, encoding
[Tue Mar 15 15:36:18 2011] [error] [client 127.0.0.1] ImportError: DLL load failed: Eine DLL-Initialisierungsroutine ist fehlgeschlagen.


Hat jemand eine Idee, woran es liegen könnte, dass ich einen 500er Internal Server Error bekommen?
BlackJack

Gibt es in `C:\\Python26\\lib\\site-packages\\mercurial\\` denn eine Datei `osutil.pyd` (eventuell auch eine andere Endung)? Die kann anscheinend nicht geladen werden. Die beiden andere Module am Ende des Tracebacks sind nämlich in Python geschrieben.
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Wieso hast du denn Mercurial doppelt installiert?

Edit: Eventuell enthält dieses nicht offizielle Mercurial-Setup nicht die gesamte Library, sondern nur die für THG notwendige. Installiere Mercurial am besten Mal vom Sourcecode. (Visual Studio 2008 erforderlich, die kostenlose Express-Version reicht)
„Lieber von den Richtigen kritisiert als von den Falschen gelobt werden.“
Gerhard Kocher

http://ms4py.org/
McKay
User
Beiträge: 3
Registriert: Dienstag 15. März 2011, 15:28

Also eine „osutil.pyd“ ist im C:\Python26\Lib\site-packages\mercurial vorhanden.

Ich habe die c:/wamp_python/scripts/hgwebdir.wsgi noch mal angepasst den laut Beschreibung müsste das so richtiger sein...
http://mercurial.selenic.com/wiki/HgWeb ... h_mod_wsgi

Code: Alles auswählen

from mercurial import demandimport; demandimport.enable()
from mercurial.hgweb.hgwebdir_mod import hgwebdir

config = "c:/wamp_python/config/hgweb.config"
application = hgwebdir(config)
Der Error ausschrieb hat sich etwas geändert…

[Tue Mar 15 17:14:36 2011] [error] [client 127.0.0.1] mod_wsgi (pid=736): Target WSGI script 'C:/wamp_python/scripts/hgwebdir.wsgi' cannot be loaded as Python module.
[Tue Mar 15 17:14:36 2011] [error] [client 127.0.0.1] mod_wsgi (pid=736): Exception occurred processing WSGI script 'C:/wamp_python/scripts/hgwebdir.wsgi'.
[Tue Mar 15 17:14:36 2011] [error] [client 127.0.0.1] Traceback (most recent call last):
[Tue Mar 15 17:14:36 2011] [error] [client 127.0.0.1] File "C:/wamp_python/scripts/hgwebdir.wsgi", line 13, in <module>
[Tue Mar 15 17:14:36 2011] [error] [client 127.0.0.1] application = hgwebdir(config)
[Tue Mar 15 17:14:36 2011] [error] [client 127.0.0.1] File "C:\\Python26\\lib\\site-packages\\mercurial\\hgweb\\hgwebdir_mod.py", line 61, in __init__
[Tue Mar 15 17:14:36 2011] [error] [client 127.0.0.1] self.refresh()
[Tue Mar 15 17:14:36 2011] [error] [client 127.0.0.1] File "C:\\Python26\\lib\\site-packages\\mercurial\\hgweb\\hgwebdir_mod.py", line 70, in refresh
[Tue Mar 15 17:14:36 2011] [error] [client 127.0.0.1] u = ui.ui()
[Tue Mar 15 17:14:36 2011] [error] [client 127.0.0.1] File "C:\\Python26\\lib\\site-packages\\mercurial\\ui.py", line 35, in __init__
[Tue Mar 15 17:14:36 2011] [error] [client 127.0.0.1] for f in util.rcpath():
[Tue Mar 15 17:14:36 2011] [error] [client 127.0.0.1] File "C:\\Python26\\lib\\site-packages\\mercurial\\demandimport.py", line 75, in __getattribute__
[Tue Mar 15 17:14:36 2011] [error] [client 127.0.0.1] self._load()
[Tue Mar 15 17:14:36 2011] [error] [client 127.0.0.1] File "C:\\Python26\\lib\\site-packages\\mercurial\\demandimport.py", line 47, in _load
[Tue Mar 15 17:14:36 2011] [error] [client 127.0.0.1] mod = _origimport(head, globals, locals)
[Tue Mar 15 17:14:36 2011] [error] [client 127.0.0.1] File "C:\\Python26\\lib\\site-packages\\mercurial\\util.py", line 576, in <module>
[Tue Mar 15 17:14:36 2011] [error] [client 127.0.0.1] from windows import *
[Tue Mar 15 17:14:36 2011] [error] [client 127.0.0.1] File "C:\\Python26\\lib\\site-packages\\mercurial\\demandimport.py", line 85, in _demandimport
[Tue Mar 15 17:14:36 2011] [error] [client 127.0.0.1] return _origimport(name, globals, locals, fromlist)
[Tue Mar 15 17:14:36 2011] [error] [client 127.0.0.1] File "C:\\Python26\\lib\\site-packages\\mercurial\\windows.py", line 21, in <module>
[Tue Mar 15 17:14:36 2011] [error] [client 127.0.0.1] posixfile.__doc__ = osutil.posixfile.__doc__
[Tue Mar 15 17:14:36 2011] [error] [client 127.0.0.1] File "C:\\Python26\\lib\\site-packages\\mercurial\\demandimport.py", line 75, in __getattribute__
[Tue Mar 15 17:14:36 2011] [error] [client 127.0.0.1] self._load()
[Tue Mar 15 17:14:36 2011] [error] [client 127.0.0.1] File "C:\\Python26\\lib\\site-packages\\mercurial\\demandimport.py", line 47, in _load
[Tue Mar 15 17:14:36 2011] [error] [client 127.0.0.1] mod = _origimport(head, globals, locals)
[Tue Mar 15 17:14:36 2011] [error] [client 127.0.0.1] ImportError: DLL load failed: Eine DLL-Initialisierungsroutine ist fehlgeschlagen.

Achso und bei jedem Aufruf kommt da auch noch eine Windows Fehler Box, also vor der Änderung kam die auch schon.

>> Microsoft Visual C++ Runtime Library
Runtime Error!

Programm: c:\wamp\Apache2.2\bin\httpd.exe
R6034
An application has made an attempt to load the C runtime library incorrectly.
Please contact the application's support team for more information.

@ ms4py
das erste ist das Programm das zweite sind die Web Python Scripte


Edit: Kann es sein das mir irgendwelche Windows Libraray fehlen die ich manuell nach installieren muss?

Edit: die Mercurial Binary's sind von hier: http://mercurial.selenic.com/wiki/Download
und die mod_wsgi von hier http://code.google.com/p/modwsgi/downloads/list
ich denke mal das ich die noch mal kompilieren sollte wenn ich es den könnte (noch nie so was gemacht)
Als PHP und Javascript Programmierer braucht man so was ja nicht...
Zuletzt geändert von McKay am Dienstag 15. März 2011, 17:52, insgesamt 1-mal geändert.
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

ms4py hat geschrieben:Edit: Eventuell enthält dieses nicht offizielle Mercurial-Setup nicht die gesamte Library, sondern nur die für THG notwendige. Installiere Mercurial am besten Mal vom Sourcecode. (Visual Studio 2008 erforderlich, die kostenlose Express-Version reicht)
Das ist immer noch meine Vermutung...

Oder die doppelte Installation von Mercurial ist doch ein Problem. Du hast es nämlich doppelt installiert: Die Standard-Binaries (was du als Programm bezeichnet) ist ein Standalone mit Hilfe von "py2exe" und das zweite ist ein Installer mit "bdist_winist". Aber beides mal ist es das Mercurial-Paket, wobei das zweite eventuell nicht vollständig ist, da es von THG kommt.

Edit: Ok, es ist also doch ein offizielles Paket. Naja, dann doch die Vermutung wegen der doppelten Installation.
„Lieber von den Richtigen kritisiert als von den Falschen gelobt werden.“
Gerhard Kocher

http://ms4py.org/
McKay
User
Beiträge: 3
Registriert: Dienstag 15. März 2011, 15:28

Also ich mache keine 2 Installationen... das zweite Mercurial Packet beinhaltet nur die Python Scripte... die für den Web Server betrieb notwendig sind.
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

McKay hat geschrieben:Also ich mache keine 2 Installationen... das zweite Mercurial Packet beinhaltet nur die Python Scripte... die für den Web Server betrieb notwendig sind.
Doch machst du, siehe meine Erklärung von oben...
(In deinem Python-Script Ordner ist eine hg.bat und in C:\Mercurial eine hg.exe, die beide dasselbe machen...)
„Lieber von den Richtigen kritisiert als von den Falschen gelobt werden.“
Gerhard Kocher

http://ms4py.org/
Antworten