Blogs/20061105 mod python
Hallo Zusammen,
heute musste ich mich gezwungener Maßen mit mod python auseinandersetzen. Dies ist ein Apache Modul um python skripte im Web ausführen zu können.
Das ganze hört sich schön einfach an und der Kunde wollte bestimmt auch nichts böses von mir, jedoch trieb mich dieses python module in den absoluten Wahnsinn.
Ich meine die Installation ist ja reichlich einfach:
apt-get install libapache2-mod-python
Das wars ja dann eigentlich auch schon. Könnte man meinen...
Also gut installiert in den entsprechenden vhost eingebunden, im Browser ein Testkript aufgerufen und was passiert? 404 und 500 durch die Bank gemischt...
Nach dem offiziellen Handbuch (http://www.modpython.org/live/mod_python-3.2.10/doc-html/inst-testing.html) Lag ich bei meinen Testversuchen scheinbar gar nicht schlecht:
| File: /etc/apache2/vhosts-enable/vhost.conf |
<Directory /some/directory/htdocs/test>
AddHandler mod_python .py
PythonHandler mod_python.pubilsher
PythonDebug On
</Directory> |
Sah also ganz gut aus. Mein Testskript sah ein wenig anderst aus wurde jedoch auf das der genannten URL angepasst:
| File: /some/directory/htdocs/test/test.py |
from mod_python import apache
def handler(req):
req.content_type = 'text/plain'
req.write("Hello World!")
return apache.OK |
Es war toll, ich bekam keine 500 Fehler mehr, aber der 404 hielt sich konstant. Die Log zeigte auch, dass eigentlich alles in Ordnung ist:
| File: /var/log/apache2/error.log |
[notice] mod_python: (Re)importing module 'mod_python.publisher' [notice] [client] Publisher loading page /var/www/test/test2.py |
Was zur Hölle geht da schief?
Gegooglet was das zeug hielt und die Leitung aushielt, jedoch brachte es mich keinen Schritt weiter. Letztendlich hab ich dann doch nach ca 3 Stunden vergeblichen ausprobierens die Mailingliste von mod_python kontaktiert.
Diese gaben mir dann doch sehr hilfreiche Antworten:
Wenn man den pubilsher nimmt ist es nicht so einfach jedes X beliebige Pythonskript auszuführen, sondern die Pythonskripte müssen eine bestimmte Struktur haben.
Dieser hab ich mich dann auch gerne angepasst und mein testskript folgendermaßen abgeändert:
| File: /some/directory/htdocs/test/test.py |
from mod_python import apache
def index(req):
req.content_type = "text/plain"
req.write("Hello World! Blarg!")
return apache.OK |
Man höre und staune: es ging ohne das kleinste Problem...
Was lernen wir daraus? Lieber gleich andere Leute belästigen? Nein ganz bestimmt nicht, sonder lieber unter den richtigen Schlüsselwörtern googeln, aber dies hat mich sowas von zur Verzweiflung gebracht, dass ich dies dann doch für die bessere Alternative gehalten habe.
Also wenn nochmals jemand dies so ausprobieren möchte, dann tut euch keinen Zwang an sondern testet es gleich mit dem richtigen Skript.
schönen Sonntag noch --crypt 23:22, 5. Nov 2006 (CET)
Kommentare
Ja, dass war wirklich einer der bescheuertsten Sachen die mir jeh begegnet sind. Aber du hast es, wie bislang alles, hinbekommen Oli. Super!