Hi,
habe einen Webserver gehostet. Dieser ist mit folgenden Modulen kompiliert:
python-2.4
python-crypto-2.0
python-demo-2.4
python-devel-2.4
python-doc-2.4
python-fcgi-2000.09.21
python-mysql-1.2.0
python-numeric-23.7
python-openssl-0.6
python-tk-2.4
python-xml-2.4
Zusätzlich ist folgendes in der Config:
AddHandler python-program .py
PythonHandler mod_python.publisher
Kann mir jemand sagen, wie ich ein Pythonscript auf dem Account aufrufe?
Habe z.B. ein kleines Skript in einer Datei im cgi-bin Ordner:
#!/usr/bin/python
for i in range (10):
print i
print "zähle noch"
Doch weiss ich nicht, wie es aufgerufen wird.
Mit domain/cgi-bin/test.py
funktioniert nicht.
Ein Aufruf unter domain/test.py genauso nicht.
Wenn ich das Skript in den Ordner lege, wo ich PHP-Skripts abarbeite, bekomme ich eine 404-Fehlerseite.
Kennt sich da jemand aus, wie das funktionieren kann???
Axel
python-Skript auf Webserver aufrufen
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi Axel!Reksio hat geschrieben:Kann mir jemand sagen, wie ich ein Pythonscript auf dem Account aufrufe? Habe z.B. ein kleines Skript in einer Datei im cgi-bin Ordner
Zuerst die schlechte Nachricht: **mod_python** hat nichts damit zu tun, dass CGI-Skripte ausgeführt werden können.
Und jetzt die gute Nachricht: **mod_python** hat nichts damit zu tun, dass CGI-Skripte ausgeführt werden können.
Hier ein paar Links für dich:
http://www.python-forum.de/post-27484.html#27484
http://www.python.org/doc/current/lib/module-cgi.html
http://www.python-forum.de/post-33356.html#33356
Damit der Apache auch Python-Dateien als CGI-Skript interpretiert, muss dem Apachen gesagt werden, dass er das tun soll.
Dafür sind folgende Zeilen zuständig:
Code: Alles auswählen
Options ExecCGI
SetHandler cgi-script
AddHandler cgi-script .py
http://www.python-forum.de/post-34080.html#34080
Diese Einstellungen kannst du meistens auch als .htaccess-Datei setzen.
Dann muss dem CGI-Skript unbedingt im Kopf der Pfad zum Python-Interpreter mitgegeben werden. Das Coding, in dem das Skript gespeichert wurde, wäre auch nicht schlecht.
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: utf-8 -*-
Zusammenfassung:
- mod_python ist uninteressant
- Apache konfigurieren (z.B. in .htaccess-Datei)
- Skript in CGI-Ordner
- Pfad zu Python als erste Zeile des Skripts
- Coding als zweite Zeile
- Skript muss als **ausführbar** gekennzeichnet sein
mfg
Gerold
PS: Die Hinweise auf Webframeworks kommen meist von anderen Teilnehmern in diesem Forum. Deshalb spare ich mir diese Aufzählung.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wie ich verstanden habe, fehlt die Zeile Options ExecCGI. Sie ist zwingend notwendig.
Kann aber drin stehen, da ich diese Zeilen vom Provider bekommen habe. Werde ich noch nachfragen.
Habe den Pfad auf #!/usr/bin/env python geändert.
Als Skript - gesamtes Coding - habe ich nur erstmal:
for i in range (10):
print i
print "zähle noch"
Mir geht es doch nur, geht oder geht nicht. Statt print "Hallo World"
Kann ich dann die Python-Datei so aufrufen wie Perl mit domain/cgi-bin/test.py ?
Axel
Kann aber drin stehen, da ich diese Zeilen vom Provider bekommen habe. Werde ich noch nachfragen.
Habe den Pfad auf #!/usr/bin/env python geändert.
Als Skript - gesamtes Coding - habe ich nur erstmal:
for i in range (10):
print i
print "zähle noch"
Mir geht es doch nur, geht oder geht nicht. Statt print "Hallo World"
Kann ich dann die Python-Datei so aufrufen wie Perl mit domain/cgi-bin/test.py ?
Axel
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Klar geht es, wenn du's richtig einrückst und es ausführbar ist. GGf. eben auch den error.log checken, was da für Fehler kommen.Reksio hat geschrieben:Mir geht es doch nur, geht oder geht nicht. Statt print "Hallo World"
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Wie komme ich an error.log ran?
In der access_log im server_admin24 habe ich nur sowas:
...- - [20/May/2006:09:39:02 +0200] "GET /test.py HTTP/1.1" 404 1158 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3"
Soviel weiss ich auch ohne Nachschauen.
test1.py
Hier brauche ich - denke ich - keine Einrückung. Perl funzt übrigens wunderbar. Pythondatei wird scheinbar nicht gefunden, obwohl die Datei im gleichen Ordner liegt.
Axel
In der access_log im server_admin24 habe ich nur sowas:
...- - [20/May/2006:09:39:02 +0200] "GET /test.py HTTP/1.1" 404 1158 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3"
Soviel weiss ich auch ohne Nachschauen.
test1.py
Code: Alles auswählen
#!/usr/bin/python
print "Test"
Axel
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Per SSH einloggen und mit find oder locate aufspüren. Zum Beispiel.Reksio hat geschrieben:Wie komme ich an error.log ran?
Das sagt doch schon ziemlich viel aus! Das besagt nämlich, dass es die Datei die du ausführen willst an der Stelle einfach nicht gibt.Reksio hat geschrieben:88.72.199.64 - - [20/May/2006:09:39:02 +0200] "GET /test.py HTTP/1.1" 404 1158 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3"
Soviel weiss ich auch ohne Nachschauen.
Ein paar Tips meinerseits:
Nimm das Programm, benenne es in test.cgi um, mach es ausführbar (auch für den Webserveruser) und schiebs in den gleichen Pfad wie das Perl programm und rufs auch so auf wie das Perl-Programm:
Code: Alles auswählen
#!/usr/bin/env python
# Required header that tells the browser how to render the text.
print "Content-Type: text/plain\n\n"
# Print a simple message to the display window.
print "Test!\n"
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Eigentlich haben wir schon eine Wiki Seite dazu:
[wiki]Web-Skripte zum laufen bringen[/wiki]
[wiki]Web-Skripte zum laufen bringen[/wiki]
Nicht immer hat man Zugriff auf die Log-Dateien von Apache! Ich hab bei Alturo WebSpace mit SSH Zugang und da kommt man leider nicht an die LogsLeonidas hat geschrieben:Per SSH einloggen und mit find oder locate aufspüren. Zum Beispiel.Reksio hat geschrieben:Wie komme ich an error.log ran?
Habe in der Error log folgendes stehen:
Premature end of script headers
in der Conf steht, dass Scripte die Endung .py$
und das sie mit mod_python ausgeführt werden.
Habe folgendes Skript jetzt:
Mit Editor pspad im Format UTF-8 und Unix(LF) für den Zeilenumbruch abgespeichert. Kann aber nicht schauen, ob unter Linux trotzdem ein ^M drinsteht.
Perl-Scripte laufen dafür in dem Ordner problemlos.
Soll ich da über htaccess noch zusätze machen?
Bin noch nicht viel weitergekommen.
Premature end of script headers
in der Conf steht, dass Scripte die Endung .py$
und das sie mit mod_python ausgeführt werden.
Habe folgendes Skript jetzt:
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: utf-8 -*-
print "Content-type: text/html"
print ""
print "Test"
Mit Editor pspad im Format UTF-8 und Unix(LF) für den Zeilenumbruch abgespeichert. Kann aber nicht schauen, ob unter Linux trotzdem ein ^M drinsteht.
Perl-Scripte laufen dafür in dem Ordner problemlos.
Soll ich da über htaccess noch zusätze machen?
Bin noch nicht viel weitergekommen.
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Das was du da als testskript hast ist aber kein mod_python, schätzte ich...
Benenn dein Skript mal nach *.cgi um und probiere es dann. Alternativ versuche es mit dem Eintrag AddHandler cgi-script .py in der .htaccess...
Benenn dein Skript mal nach *.cgi um und probiere es dann. Alternativ versuche es mit dem Eintrag AddHandler cgi-script .py in der .htaccess...
Ändert beides nichts daran.
Habe die Datei umbenannt und bekomme gleichen Fehler. Dasselbe bei Einfügen einer Htaccess Datei mit der einen Zeile.
Habe ausserdem unter Knoppix die ^ entfernt über den Editor vom MC.
Hat jemand noch Ideen?
Habe die Datei umbenannt und bekomme gleichen Fehler. Dasselbe bei Einfügen einer Htaccess Datei mit der einen Zeile.
Habe ausserdem unter Knoppix die ^ entfernt über den Editor vom MC.
Hat jemand noch Ideen?
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Wie wäars damit: deinstallier mod_python. Danach nimmst du dir ein cgi-bin-Ordner, setzt dort +ExecCGI, AddHandler cgi-script .cgi, benennst die date in hallowelt.cgi um, schaust dass die Zeilenenden stimmen, und rufst es im Browser auf.Reksio hat geschrieben:Hat jemand noch Ideen?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Dann sollen Python-Skripte funktionieren?
Leider bin ich nicht Admin und nicht der Einzigste auf dem Server.
Habe binär per FTP die Dateien hochgeladen. Zeilenumbrüche werden mir jetzt als LF angezeigt. Trotzdem immer noch gleicher Error.
Leider bin ich nicht Admin und nicht der Einzigste auf dem Server.
Habe binär per FTP die Dateien hochgeladen. Zeilenumbrüche werden mir jetzt als LF angezeigt. Trotzdem immer noch gleicher Error.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi Reksio!Reksio hat geschrieben:Premature end of script headers
Falsche Zeilenumbrüche.
Teste deine Skripte mit http://www.python-forum.de/topic-6029.html
Es müssen alle Zeilen mit einem "LF" abgeschlossen sein.
Mit dem Programm "dos2unix" bekommst du die Zeilenumbrüche so hin wie du sie brauchst.
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Vielen Dank für Eure zahlreiche Hilfe.
Trotzdem bin ich noch nicht weiter. Die Zeilenumbrüche werden mir als LF im Editor angezeigt. Im Gegensatz zum Perl-Skript mit CR Umbrüchen, doch das läuft trotzdem.
Die Threads hatte ich schon gelesen. Hatte die Hinweise schon ausprobiert. Kann es vielleicht sein, dass die erste Zeile nicht hinhaut?
#!/usr/bin/env python
Muss bei mod_python der Pfad so angegeben werden. In der PHP-Info habe ich /usr/bin als Path gefunden, aber noch 3 andere Pfadangaben.
Wie bekomme ich raus, was da richtig ist?
Trotzdem bin ich noch nicht weiter. Die Zeilenumbrüche werden mir als LF im Editor angezeigt. Im Gegensatz zum Perl-Skript mit CR Umbrüchen, doch das läuft trotzdem.
Die Threads hatte ich schon gelesen. Hatte die Hinweise schon ausprobiert. Kann es vielleicht sein, dass die erste Zeile nicht hinhaut?
#!/usr/bin/env python
Muss bei mod_python der Pfad so angegeben werden. In der PHP-Info habe ich /usr/bin als Path gefunden, aber noch 3 andere Pfadangaben.
Wie bekomme ich raus, was da richtig ist?
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Nein, weil das was du meinst nicht mod_python sondern CGI ist. Denn du willst CGI, nicht mod_python, glaub mir.Reksio hat geschrieben:Muss bei mod_python der Pfad so angegeben werden.
Der Pfad sollte allerdings stimmen, du kannst noch versuchen die Zeilenenden auf CR zu setzen.
Die Fehlermeldung zeigt allerdings dass der Shebang einfach nicht stimmt, wenn /usr/bin/env nicht gefunden worden würde, wären die Fehlermeldungen anders.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice