apache + mod_python = Massig Probleme -.-'

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

Samstag 7. März 2009, 19:02

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
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Samstag 7. März 2009, 19:07

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 Modvoice
AngelusNoctis
User
Beiträge: 86
Registriert: Sonntag 16. Dezember 2007, 20:03

Samstag 7. März 2009, 21:30

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

Samstag 7. März 2009, 22:04

Und nu musst Du uns noch verraten warum das alles nichts hilft.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Samstag 7. März 2009, 22:25

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

Sonntag 8. März 2009, 01:24

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

Sonntag 8. März 2009, 06:32

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

Sonntag 8. März 2009, 10:34

@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

Sonntag 8. März 2009, 22:01

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
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Sonntag 8. März 2009, 22:45

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 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

Sonntag 8. März 2009, 23:02

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
Moderator
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Sonntag 8. März 2009, 23:21

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
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Sonntag 8. März 2009, 23:25

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 Modvoice
root_tux_linux
User
Beiträge: 36
Registriert: Sonntag 16. Dezember 2007, 04:18

Montag 9. März 2009, 03:34

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: 2435
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Montag 9. März 2009, 03:51

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.
Antworten