mod_python testen ob installiert ?

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
snakeseven
User
Beiträge: 405
Registriert: Freitag 7. Oktober 2005, 14:37
Wohnort: Berlin
Kontaktdaten:

Sonntag 19. März 2006, 13:06

Hi,
habe unter Susi-Linux Apache2 laufen und will jetzt mod_python dazu nehmen.
Habe mod_python installiert und bin zum Testen genauso vorgegangen, wie hier beschrieben:

http://www.modpython.org/live/current/d ... onfig.html
http://www.modpython.org/live/current/d ... sting.html

Aber alles was mir der Browser anzeigt, ist dann das Testscript selber:

Code: Alles auswählen

from mod_python import apache

def handler(req):
    req.content_type = 'text/plain'
    req.write("Hello World!")
    return apache.OK
(die fehlerhafte Einrückung, die mir die Vorschau anzeigt, ist im Original nicht)
Hat einer von euch mod_python zum Laufen bekommen und kann mir einen Tipp geben ?
Gruss, Seven
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Sonntag 19. März 2006, 13:16

Schon mal:

/etc/init.d/apache2 restart

gemacht? Unabhängig davon: die Konfiguration von mod_python ist die allergrößte Scheiße. Wenn Du nicht umbedingt auf modpy angewiesen bist, dann guck Dir FastCGI an... Mit entsprechenden Wrappern (zum Beispiel jon-py) hat das die selbe Geschwindigkeit und ist WSGI-kompatibel, und ist erheblich einfacher zu benutzen.
--- Heiko.
snakeseven
User
Beiträge: 405
Registriert: Freitag 7. Oktober 2005, 14:37
Wohnort: Berlin
Kontaktdaten:

Sonntag 19. März 2006, 13:54

modelnine hat geschrieben:... Wenn Du nicht umbedingt auf modpy angewiesen bist, dann guck Dir FastCGI an...
Also das 'restart' werde ich auf jeden Fall ausprobieren.
Auf CGI habe ich eigentlich keine Lust, schließlich kann ich ja alles was mit CGI geht auch in Python programmieren ? Es muss ja gehen, denn es soll ja auch User geben, die mit mod_python keine Probleme haben.

Gruss, Seven
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Sonntag 19. März 2006, 14:09

FastCGI != CGI. FastCGI ist im Endeffekt was ähnliches wie modpy, nämlich dass ein Interpreter transient geladen wird, und der selbe Interpreter mit dem selben Programm immer wieder neu die eintreffenden Request beantwortet. modpy ist nix anderes, nur Python-spezifisch.
--- Heiko.
snakeseven
User
Beiträge: 405
Registriert: Freitag 7. Oktober 2005, 14:37
Wohnort: Berlin
Kontaktdaten:

Sonntag 19. März 2006, 16:04

Hm, also hier steht was anderes über Fast CGI:

http://www.at-mix.de/fastcgi.htm

Ich will aber mit Python arbeiten. Gibt es unterschiedliche Fast-CGIs ?

Gruss, Seven, der sich auf Arbeit nicht einloggen kann.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Sonntag 19. März 2006, 16:19

Sag doch lieber was du eigentlich damit machen willst. Vielleicht wäre da ein Framework für dich geeigneter?
My god, it's full of CARs! | Leonidasvoice vs Modvoice
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Sonntag 19. März 2006, 16:31

Um mal kurz den Unterschied zwischen mod_python, FastCGI und CGI zu detailieren:

CGI: Ein Programm liegt irgendwo im Document-Tree, und wird vom Apache-Server jedes mal neu gestartet wenn eine Anfrage kommt. Das Programm kriegt über das Environment Parameter mit die spezifizieren wie auf das CGI zugegriffen wurde.

Fast-CGI: Ein Programm wird vom FastCGI-Modul einmal geladen, und wartet dann in einer Art Busy-Loop. Sobald mod_fastcgi eine Anfrage bekommt wird diese Anfrage serialisiert, per stdin an den Prozess (der ja schon bereits läuft) geschickt, von einer Middelware (z.B. jon-py) deserialisiert, und dann an das eigentliche dynamische Skript weitergegeben. Die Übergabe an das eigentliche Skript (vielleicht sollte man eher Handler sagen) findet mittels WSGI statt (bei jon-py).

mod_python: Ein Python-Interpreter wird geladen, das entsprechende Modul wird importiert, und sobald eine Anfrage auf die entsprechende URL kommt wo das Modul liegt ruft mod_python eine Funktion des Moduls auf, nämlich den handler. Die Daten bekommt das Modul über ein apache-Objekt, welches den Zustand des aktuellen mod_python threads enthält.

Vorteil von 2+3: beide laden den Python-Interpreter ein mal, und nicht jedes mal wenn das CGI gestartet werden soll.

Gleichheit von 2+3: siehe den Vorteil.

Dass die Parameterübergabe bei 2+3 unterschiedlich ist liegt an der Middleware. Es gibt auch für mod_python Middleware die aus einer mod_python-Anfrage eine WSGI-kompatible Anfrage macht und an einen WSGI-Handler dispatcht. Nur macht das mod_python nicht automatisch, genauso wenig wie's FastCGI automatisch macht, denn beide benutzen proprietäre Protokolle um das aktuelle Request in die laufende Instanz reinzukriegen (mod_python direkt, weil's nur auf Python ausgelegt ist, FastCGI über eine Serialisierungsmethode).

Sonst: FastCGI ist im Prinzip genau das selbe wie mod_python auch, nur allgemeiner, denn eben nicht nur für Python gedacht. Ganz egal was jemand anderes sagt, der hats dann einfach nicht verstanden.
--- Heiko.
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Sonntag 19. März 2006, 19:40

Dann gäbe es noch SCGI, dass einen server auf irgendeinem port startet und dort vom apachen befehle entgegennimmt und die ausgabe an den apachen weiterleitet.

Und nochwas zu mod_python: wenn du es nicht wegen einer anwendung brauchst würde ich es nicht nehmen. Mach eine WSGI kompatible anwendung und lass es auf FastCGI laufen. Vorteile: Es funktioniert [sic!], es ist schnell und es läuft mit SuExec
TUFKAB – the user formerly known as blackbird
Benutzeravatar
jens
Moderator
Beiträge: 8482
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Montag 20. März 2006, 07:18

@modelnine: Deine ganzen letzten Beiträge solltest du in's Wiki packen! Oder am besten, wenn du so ausführlich Antwortest, dann direkt im Wiki schreiben und nur einen Link im Forum setzten :lol:


@blackbird: Ist modPython über WSGI auch nicht empfehlenswert? Ich hab zwar bisher noch nicht probiert, wollte es aber irgendwann mal machen... Im Windows XMAPP Paket erhält man IMHO nur ein modPython und kein fastCGI...

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Montag 20. März 2006, 10:10

jens hat geschrieben:@blackbird: Ist modPython über WSGI auch nicht empfehlenswert? Ich hab zwar bisher noch nicht probiert, wollte es aber irgendwann mal machen... Im Windows XMAPP Paket erhält man IMHO nur ein modPython und kein fastCGI...
Ich gehe davon aus, dass man FastCGI support hat. Selbst php läuft über FastCGI runder als über mod_php.
TUFKAB – the user formerly known as blackbird
snakeseven
User
Beiträge: 405
Registriert: Freitag 7. Oktober 2005, 14:37
Wohnort: Berlin
Kontaktdaten:

Montag 20. März 2006, 14:20

Ok, worum es geht: Zur Zeit läuft alles auf Win-XP mit Zope. Folgende externe Methode schreibt ein Dummy-Textfile. Die nötigen Infos zieht sich ein weiteres threadgesteuertes Script außerhalb von Zope aus dem Dateinamen. Nachdem dieses Script seinen Job erledigt hat, wird das Textfile wieder gelöscht.

Code: Alles auswählen

def bestell1(self):
    mess = ""
    nam = self.REQUEST.selectName
    mus = self.REQUEST.selectMusik
    em = self.REQUEST.selectEmail
    tel = self.REQUEST.selectTelnr

    fname = mess + nam + "_" + mus + "_" + em + "_" + tel
    try:
        datei = open("/home/xx/Documents/Messages/Bestell1/" + fname + ".txt","a")
        datei.close()
        return "Message: "+mess+"\nName(n):   "+nam[1:]+"\nMusik:     "+mus+"\nE-Mail:    "+em+"\nTel-Nr.:   "+tel
    except:
        return "Es ist ein Fehler aufgetreten. Anfrage wurde nicht bearbeitet"
Jetzt will ich das ganze auf einen Miet-Root-Server packen, aber unter Apache statt Zope. Erstens finde ich Zope für dieses Bischen Script überdimensioniert, zweitens ist auf den meisten Mietservern Apache schon drauf und ich muß nicht ein Zope auf einen Apache raufoperieren. Da ich die externen Methoden aus Zope gern weiterverwenden würde, kam ich auf mod_python. Vieleicht ginge CGI, Perl oder PHP auch, aber ich habe keine Erfahrungen damit. Laut Paketmanager ist mod-python 3.1.3-43 drauf, aber ich bekomme es nicht getestet. Ich hoffe, mein Anliegen wird klar.

Grüße, Seven
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Montag 20. März 2006, 17:01

snakeseven hat geschrieben:Laut Paketmanager ist mod-python 3.1.3-43 drauf, aber ich bekomme es nicht getestet. Ich hoffe, mein Anliegen wird klar.
Dann wirds nicht gehten. mod_python zu konfigurieren ist eine Kunst für sich.

Für deine Zweck scheint CGI noch das beste zu sein, vor allem wenn du auf dem Server keine root-Rechte hast.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
snakeseven
User
Beiträge: 405
Registriert: Freitag 7. Oktober 2005, 14:37
Wohnort: Berlin
Kontaktdaten:

Montag 20. März 2006, 17:23

Leonidas hat geschrieben: Für deine Zweck scheint CGI noch das beste zu sein, vor allem wenn du auf dem Server keine root-Rechte hast.
Ich muss natürlich einen Server mit Root-Rechten mieten, weil ich ja auch noch Lame dazuinstallieren muss. CGI wäre für das bischen Dateierstellen warscheinlich wirklich das Einfachste. Blöd aber, dass ich wegen dem schlecht dokumentierten mod_python zum CGI Programmieren genötigt werde, wo ich doch Python kann ?

Gruss, Seven
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Montag 20. März 2006, 17:29

snakeseven hat geschrieben:Blöd aber, dass ich wegen dem schlecht dokumentierten mod_python zum CGI Programmieren genötigt werde, wo ich doch Python kann ?
Das ist nicht nur das schlecht dokumentierte mod_python sondern das nicht mit mod_php vergleichbare mod_python. Ich würde mod_python nicht direkt nutzen, sondern nur als Verbindung mit Apache (oder FastCGI/SCGI) und dann WSGI oder eines von den Web-Frameworks nutzen. Da hast du alles dabei und es funktioniert auch gescheit und ist dokumentiert und hat viele User und dementsprechend viel Support.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Montag 20. März 2006, 17:57

snakeseven hat geschrieben:CGI wäre für das bischen Dateierstellen warscheinlich wirklich das Einfachste. Blöd aber, dass ich wegen dem schlecht dokumentierten mod_python zum CGI Programmieren genötigt werde, wo ich doch Python kann ?
Hi Seven!

Ich glaube, du hast das falsch verstanden. CGI ist **nicht** gleich Perl.
Du kannst auch mit Python CGI-Programme erstellen.

Siehe: http://www.python-forum.de/viewtopic.php?p=31590#31590
Den Server brauchst du nicht, wenn du den Apache einsetzt. Aber das ist schon mal ein Beispiel für CGI.

Hier ist noch ein einfacheres Beispiel für CGI: http://www.python-forum.de/viewtopic.php?p=17612#17612

Und da drinnen wird aufgezeigt, wie du zu den Formulardaten kommst: http://python.org/doc/2.4.2/lib/node471.html

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Antworten