apache + mod_python = Massig Probleme -.-'

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
AngelusNoctis
User
Beiträge: 92
Registriert: Sonntag 16. Dezember 2007, 20:03

Hi

Wollte heute das erste mal Python im Web benutzen.

Mein Probleme sind nun folgender massen:

1. Muss komischerweise im eine Funktion existieren
2. Existiert keine Funktion wied die Datei nicht gefunden
3. Was hat es mit CGI auf sich?
4. Wie muss die *.py aussehen damit sie funzt?


Ich bin dieser Anleitung gefolgt: http://www.modpython.org/live/current/d ... onfig.html was auch klappt aber nur wenn eine Funktion besteht und z.B. "print" funktioniert garnicht.


Dies klappt

Code: Alles auswählen

def index(req):
 res = 10 + 10
 return res 
Dies nicht:

Code: Alles auswählen

def index(req):
 res = 10 + 10
 print res 
Dies auch nicht:

Code: Alles auswählen

 res = 10 + 10
 print res 
Wenn keine Funktion exisiert bekomm ich sogar folgende Meldung:

Code: Alles auswählen

Objekt nicht gefunden!

Der angeforderte URL konnte auf dem Server nicht gefunden werden. Sofern Sie den URL manuell eingegeben haben, überprüfen Sie bitte die Schreibweise und versuchen Sie es erneut.

Sofern Sie dies für eine Fehlfunktion des Servers halten, informieren Sie bitte den Webmaster hierüber.
Error 404
localhost
Sat Mar 7 17:45:54 2009
Apache/2.2.11 (Unix) mod_ssl/2.2.11 OpenSSL/0.9.8j DAV/2 mod_python/3.3.1 Python/2.6 

In meinem Buch "Einführung in Python" ist der Code in der *.py aber ganz normal als wenn man es mit der PVM nutzen würde nur klappt das bei mir ned.

Wie zum Teufel richte ich jetzt mod_python richtig ein und wie nutz ich es richtig?
Muss alles im ordner cgi-bin sein oder wie?
Wie muss die *.py aussehen?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Lies den Eintrag zu mod_python in unseren FAQ, dort steht alles was man zu mod_python wissen muss :)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
AngelusNoctis
User
Beiträge: 92
Registriert: Sonntag 16. Dezember 2007, 20:03

Leonidas hat geschrieben:Lies den Eintrag zu mod_python in unseren FAQ, dort steht alles was man zu mod_python wissen muss :)
Hilft mir ehrlich gesagt nichts:

Weder:
[wiki]FAQ#IchHabeProblemeMitModPython[/wiki]
Noch:
[wiki]Web-Skripte zum Laufen bringen[/wiki]?highlight=(web)
Oder gar:
[wiki]Python im Web[/wiki]?highlight=(web)
[wiki]Python und die Webentwicklung[/wiki]?highlight=(web)


Toll und nu?
BlackJack

Und nu musst Du uns noch verraten warum das alles nichts hilft.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ack. Ich sehe schon im ersten Wiki-Link die Lösung.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
hendrikS
User
Beiträge: 420
Registriert: Mittwoch 24. Dezember 2008, 22:44
Wohnort: Leipzig

Macht irgendwie einen planlosen Eindruck.

Was möchtest Du eigentlich erreichen (im Browser darstellen)?

Hast Du es überhaupt schon mal geschafft aus einem py File lauffähiges HTML zu erzeugen ind im Browser darzustellen?
root_tux_linux
User
Beiträge: 36
Registriert: Sonntag 16. Dezember 2007, 04:18

Also ich wollte Python Code eingebettet in HTML haben.

Das ganze mit Apache + mod_python

In der Apache Config hatte ich folgendes:

Code: Alles auswählen

<Directory "/srv/http/html">                                                                                                                                                                                      
    Options Indexes FollowSymLinks                                                                                                                                                                                
    AllowOverride None                                                                                                                                                                                            
    Order allow,deny                                                                                                                                                                                              
    Allow from all                                                                                                                                                                                                
    AddHandler mod_python .py                                                                                                                                                                                   
    PythonHandler mod_python.publisher                                                                                                                                                                                  
    PythonDebug On                                                                                                                                                                                                
</Directory>    

Code: Alles auswählen

LoadModule python_module /usr/lib/httpd/modules/mod_python.so 
Selbst das Test-CGI Script vom Wiki funktioniert NICHT mit *.py.

Geht nicht:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# Debugging für CGI-Skripte 'einschalten'
import cgitb; cgitb.enable()

print "Content-Type: text/html;charset=utf-8\n"
print "Hello World!"

Code: Alles auswählen

root /srv/http/html/cgi-bin #  ls -la test-cgi.py
-rwxr-xr-x 1 http http 190  8. Mär 06:13 test-cgi.py
root /srv/http/html/cgi-bin #
Beim Aufrufen der Seite bekomm ich einfach nur:

Code: Alles auswählen

Objekt nicht gefunden!

Der angeforderte URL konnte auf dem Server nicht gefunden werden. Sofern Sie den URL manuell eingegeben haben, überprüfen Sie bitte die Schreibweise und versuchen Sie es erneut.

Sofern Sie dies für eine Fehlfunktion des Servers halten, informieren Sie bitte den Webmaster hierüber.
Error 404
localhost
Sun Mar 8 06:20:43 2009
Apache/2.2.11 (Unix) mod_ssl/2.2.11 OpenSSL/0.9.8j DAV/2 mod_python/3.3.1 Python/2.6 
Die URL ist 100% richtig und das mptest.py von modpython.org funktioniert solangs in einer Funktion ist, ansonsten kommt auch "Objekt nicht gefunden".


Nach suchen im Internet fand ich nun heraus das man über PSP python in html einbetten kann und es funzt sogar.

Änderung von Apache Config:

Code: Alles auswählen

   Options Indexes FollowSymLinks                                                                                                                                                                                
    AllowOverride None                                                                                                                                                                                            
    Order allow,deny                                                                                                                                                                                              
    Allow from all                                                                                                                                                                                                
    AddHandler mod_python .psp                                                                                                                                                                                   
    PythonHandler mod_python.psp                                                                                                                                                                               
    PythonDebug On

Dies funktioniert nun:

Code: Alles auswählen

<html>
<title>Foobar</title>
<body bgcolor=000000 text="ffffff">
<%
f = open('foobar.txt', 'r')
req.write(f.read())
%>
</body>
</html>


Letzte Fragen:
Wieso funzt das Test-CGI Script nicht mit *.py? (.htaccess liegt in cgi-bin)





Mfg
AMD Athlon 64 X2 6000+, ASUS M2N-SLI Deluxe, ASUS EN8600GTS Silent, 4GB Apacer DDR2 800Mhz | Gentoo Linux x86_64
AMD Sempron 2500+, MSI KT4, ASUS N6200, 2x 512MB Apacher DDR 400Mhz, Hauppauge PVR150 | Arch Linux i686
### Sorry for my bad english ###
BlackJack

@root_tux_linux: Was sagen denn die Apache-Logs zu dem Fehler?

Und wenn ich mal raten müsste: Wenn Du für *.py `mod_python` als Handler angibst, funktioniert *.py als CGI nicht mehr.
root_tux_linux
User
Beiträge: 36
Registriert: Sonntag 16. Dezember 2007, 04:18

BlackJack hat geschrieben:@root_tux_linux: Was sagen denn die Apache-Logs zu dem Fehler?

Und wenn ich mal raten müsste: Wenn Du für *.py `mod_python` als Handler angibst, funktioniert *.py als CGI nicht mehr.

Code: Alles auswählen

[Sun Mar 08 06:46:41 2009] [error] [client 127.0.0.1] script not found or unable to stat: /srv/http/html/cgi-bin/test-cgi.py

Code: Alles auswählen

root /srv/http/html/cgi-bin #  ls -la test-cgi.py
-rwxr-xr-x 1 http http 1395  8. Mär 21:59 test-cgi.py

Ausserhalb von cgi-bin funzen auch nur *.psp :(
AMD Athlon 64 X2 6000+, ASUS M2N-SLI Deluxe, ASUS EN8600GTS Silent, 4GB Apacer DDR2 800Mhz | Gentoo Linux x86_64
AMD Sempron 2500+, MSI KT4, ASUS N6200, 2x 512MB Apacher DDR 400Mhz, Hauppauge PVR150 | Arch Linux i686
### Sorry for my bad english ###
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Die "richtige" Lösung wäre ja, mod_python in die Tonne zu treten und eine richtiges Framework zu nehmen, nicht eine an Apache-gebundene Schrottlösung die keiner mehr nutzt.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Leonidas hat geschrieben:Die "richtige" Lösung wäre ja, mod_python in die Tonne zu treten und eine richtiges Framework zu nehmen, nicht eine an Apache-gebundene Schrottlösung die keiner mehr nutzt.
Ob die dann aber funzt?
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Genau ... wenn außerhalb von cgi-bin nur Paintshop Pro Dateien "funzen", kann das mit nem Framework auch nich klappen ... es sei denn es sind .php Dateien gemeint und Python ist nich installiert?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

birkenfeld hat geschrieben:Ob die dann aber funzt?
Funzt und funkelt. Gegebenfalls kann man das Ergebnis noch 'schoppen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
root_tux_linux
User
Beiträge: 36
Registriert: Sonntag 16. Dezember 2007, 04:18

cofi hat geschrieben:Genau ... wenn außerhalb von cgi-bin nur Paintshop Pro Dateien "funzen", kann das mit nem Framework auch nich klappen ... es sei denn es sind .php Dateien gemeint und Python ist nich installiert?
PSP = Python Server Pages .



@Leonidas

Welches Framework wäre denn zu empfehlen und gibts da deutsche tutorials?
Was'n an mod_python "schrott"?
Wie ist den z.B. youtube aufgebaut? Soll ja python nutzen.



Mfg.
AMD Athlon 64 X2 6000+, ASUS M2N-SLI Deluxe, ASUS EN8600GTS Silent, 4GB Apacer DDR2 800Mhz | Gentoo Linux x86_64
AMD Sempron 2500+, MSI KT4, ASUS N6200, 2x 512MB Apacher DDR 400Mhz, Hauppauge PVR150 | Arch Linux i686
### Sorry for my bad english ###
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

root_tux_linux hat geschrieben:PSP = Python Server Pages .
Nutzt kein Mensch mehr.
Welches Framework wäre denn zu empfehlen und gibts da deutsche tutorials?
Irgendetwas dass WSGI kompatibel ist. Django, Pylons, Turbogears... die Liste ist lang. Tutorials findet man auf den entsprechenden Webseiten mit Übersetzungen wirds allerdings schwierig.
Was'n an mod_python "schrott"?
Alles.
Wie ist den z.B. youtube aufgebaut? Soll ja python nutzen.
Das wird wahrscheinlich eine WSGI Anwendung sein.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ich würde mich erstmal darauf konzentrieren das CGI läuft... Alles ander (mod_Python, fastCGI und Co.) kann man später sehen...
WSGI Frameworks nutzten! Mein Vorschlag, wie immer: django, siehe: [wiki]Web-Frameworks#Django[/wiki];)
root_tux_linux hat geschrieben:Selbst das Test-CGI Script vom Wiki funktioniert NICHT mit *.py.
Von der Seite [wiki]Web-Skripte zum Laufen bringen[/wiki]:
Dem Apachen muss gesagt werden, dass Dateien mit der Endung .py CGI-Skripte sind. (Zur Not mal mit der Endung .cgi probieren.)
und weiter unten:
In einer .htaccess-Datei kann man folgendes definieren, damit Skripte auch außerhalb vom Verzeichnis cgi-bin laufen und die Endung .py statt .cgi haben dürfen:

Code: Alles auswählen

# Damit allgemein CGIs ausgeführt werden
Options +ExecCGI

# Dateien mit der Endung ".py" sind CGI-Skripte
AddHandler cgi-script .py

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

root_tux_linux hat geschrieben:Welches Framework wäre denn zu empfehlen und gibts da deutsche tutorials?
Django, Pylons. Zu Django gibts es ganz sicher deutsche Tutorials. Zu Englisch gibt es ebenfalls Bücher.
root_tux_linux hat geschrieben:Was'n an mod_python "schrott"?
Das Konzept einen Interpreter wie Python in Apache-Prozesse einzubetten ist falsch, die vielen Probleme die man bekommt, allgemein wie es maintained wird (fast gar nicht, auch weil es kaum jemand nutzt), weil es einen an einen spezifischen Webserver kettet. mod_python hat nur einen Vorteil, nämlich dass man darüber auf Apache-Innereien zugreifen kann. Braucht man aber für Webapplikationen nie.
root_tux_linux hat geschrieben:Wie ist den z.B. youtube aufgebaut? Soll ja python nutzen.
Ist die Frage ob auch fürs Frontend oder nur das Backend Python nutzt.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
oshoki
User
Beiträge: 30
Registriert: Donnerstag 3. Januar 2008, 22:49

Ich habe die Erfahrung gemacht, dass Python 2.6 NICHT mit mod_python funktioniert. Mit Python 2.5 habe ich es zum Laufen gebracht.
Es gab da auch schon einen Artikel im Januar http://www.python-forum.de/viewtopic.ph ... ht=#124610
root_tux_linux
User
Beiträge: 36
Registriert: Sonntag 16. Dezember 2007, 04:18

Gut gut...

Dann versuch ichs mal mit Django und WSGI.


Besten Dank für die Hilfe :)
AMD Athlon 64 X2 6000+, ASUS M2N-SLI Deluxe, ASUS EN8600GTS Silent, 4GB Apacer DDR2 800Mhz | Gentoo Linux x86_64
AMD Sempron 2500+, MSI KT4, ASUS N6200, 2x 512MB Apacher DDR 400Mhz, Hauppauge PVR150 | Arch Linux i686
### Sorry for my bad english ###
Antworten