Sind Schlangenbisse schädlich?

Lumio

Lumio

Tripel-As
Oder anders gefragt: ist mod_python genauso schwach wie mod_php?

Ich möcht gern endlich ne Möglichkeit haben, mehr mit Python zu arbeiten. Und alles was ich finde, um Django zu installieren ist, dass man für Apache erstmal mod_python braucht. Allerdings kommt bei mir dann die Frage auf, ob ich dann nicht genau die selben Probleme habe wie mit mod_php?

Kennt sich jemand damit aus, und kann mir jemand sagen, wie ich das ganze mit fastCGI bzw fcgi hinbekomme?

Vielen vielen Dank :)
 
Du kannst ja auch gleich auf Zope setzen und damit einen speziell fuer Python ausgelegten Webserver verwenden. Ansonsten sehe ich nicht, was an mod_php schaedlich oder schwach sein sollte. Es kommt halt auf den Verwendungszweck an. Fuer Multi-User-Umgebungen ist es nunmal nur bedingt geeignet. Alternativ kannst du natuerlich auch Python-Skripte einfach als CGI laufen lassen. Musst halt nur einen entsprechenden Handler dafuer definieren.
 
Wenn du dich erst in Django einarbeiten willst kannst auch erst den eingebauten Server nutzen, der ist zwar nicht für den produktiv Einsatz aber zum entwickeln echt klasse.

hier mal das Tutorial von der Django Seite: klick
 
Ich hab Django via WSGI (bzw. FastCGI) auf lighttpd laufen. Ist eigentlich recht flott. Kannst das HOWTO haben wenn du willst. Ist gerade 2 Tage alt und noch warm. ;)
Werde aber noch andere Webserver testen bevor ich meine Meinung in Stein meisel. nginx und Apache fehlen noch. ;)

Aber der von Django empfohlene Weg für produktive Umgebungen ist Apache mit mod_wsgi. Und auch sehr gut dokumentiert: http://docs.djangoproject.com/en/dev/howto/deployment/modwsgi/#howto-deployment-modwsgi

Für die Entwicklung nehm ich auch den eingebauten Webserver. Der ist recht cool.

mfg
 
Zuletzt bearbeitet:
Hm, ich sollte mal MVC kapieren. Das tu ich noch kein bisschen :) Leider helfen mir die Wiki-Artikel über MVC nix.

Aber einfach mal probieren. Bin grad in der Arbeit, weshalb ichs grad nicht testen kann, aber mal schaun.

Achja, und ich verwende MAMP... ich würds irgendwie da gern einbinden, oder ist das nicht wirklich mögliche? Naja is ja eigentlich Apache, aber wahrscheinlich lohnt sichs nicht wirklich.
 
Du musst einfach das mod_wsgi Modul einbinden. Siehe Link.

MVC ist afaik die Trennung von Business Logik, Präsenstationsschicht, etc.
Zu deutsch: Im Code ist kein Designzeug und anders rum. Du kannst z.B. einmal ein Modul schreiben und für verschiedene Seiten nutzen. So hab ich es zumindest verstanden. Bin aber auch kein Code-Profi. ;)

mfg
 
So wie ich es verstanden ist, ist es irgendwie so, dass man hier wieder verstärkt Layout/Design von Code trennt. Beispielsweise mit Templates...

Also folgendermassen dann:
layout.html = template
module.xy = code
controller.xy = verbindungsstück zw. layout und module.

Oder? Dann hab ichs nämlich so schon fast komplett in meinem CMS umgesetzt
 
Uff... das is hart. Ich weiss nicht genau wie ich damit anfangen soll. Ich verwendet Python ja eigentlich garnicht. :) Also kann ichs auch nicht wirklich.

Ich probier mal ein wenig rum.
 
Hm, kann ich Python auch wie PHP einsetzen? Also ohne Framework? Dafür ist mod_python dann eigentlich zum entwickeln nicht schlecht, oder? Weil ich sollt erstmal Python selber lernen.
 
Natuerlich laesst sich Python auch ohne Framework zur Webentwicklung nutzen. Du musst dann halt viele Funktionalitaeten selbst schreiben, die dir sonst das Framework abnimmt. Theoretisch koenntest du Python-Skripte auch wie normale CGI-Skripte vom Webserver ausfuehren lassen, solange ein Python-Interpreter auf dem Webserver vorhanden ist.
 
reicht es einfach einen wrapper zu kreieren (für suexec) der dann (weiss grad nicht genau, wo der interpreter liegt) einfach sagt
Code:
#!/bin/sh
exec /usr/bin/python "$@"
 
Okay, ich habs probiert... folgendes kommt in der suexec log:
Code:
[2009-08-11 20:08:32]: uid: (2001/lumio) gid: (2001/2001) cmd: tmp.py
[2009-08-11 20:08:32]: target uid/gid (2001/2001) mismatch with directory (2001/33) or program (2001/33)

Allerdings schaut die Datei tmp.py
Code:
-rwxr-xr--  1 lumio www-data   12 2009-08-11 19:39 tmp.py
Und das script so:
Code:
-rwxr-xr-x 1 lumio web_users 36 2009-08-11 19:57 python-cgi

//edit: ok, das hab ich grad geklärt... war noch ein bisschen was von der alten serverstruktur übrig, weshalbs nicht geklappt hat.

allerdings kommt nun folgendes in der error.log beim apache2
Code:
[Tue Aug 11 20:21:50 2009] [notice] mod_fcgid: server /var/www/citrosaft/htdocs/tmp.py(9654) started
suexec failure: could not open log file
fopen: Permission denied
[Tue Aug 11 20:21:50 2009] [warn] (104)Connection reset by peer: mod_fcgid: read data from fastcgi server error.
[Tue Aug 11 20:21:50 2009] [error] [client 90.146.174.186] Premature end of script headers: tmp.py
 
Zuletzt bearbeitet:
"Premature end of script headers" weisst zumeist darauf hin, dass kein ordentlicher HTTP-Output geliefert wird, der mit 2 Zeilenumbruechen nach der Content-Type-Definition aufhoert. Du musst zumindest den ausgelieferten Output anstaendig definieren, indem du ein "Content-type: text/plain\n\n" o.ae. zuerst ausgibst. Wenn du mal dein Logging fixt, wirst du im Error-Log vermutlich eine genauere Beschreibung des Fehlers finden.
 
Also bei apache einfach den log-level erhöhen. Gut, danke :) werd ich dann morgen machen :)
 
Hier mal der relevante Log-Ausschnitt:
Code:
[Wed Aug 12 13:25:02 2009] [notice] mod_fcgid: server /var/www/citrosaft/htdocs/tmp.py(20212) started
[Wed Aug 12 13:25:02 2009] [notice] Apache/2.2.3 (Ubuntu) DAV/2 mod_fastcgi/2.4.2 mod_ssl/2.2.3 OpenSSL/0.9.8c configured -- resuming normal operations
[Wed Aug 12 13:25:02 2009] [warn] (104)Connection reset by peer: mod_fcgid: read data from fastcgi server error.
[Wed Aug 12 13:25:02 2009] [error] [client 85.125.39.34] Premature end of script headers: tmp.py
[Wed Aug 12 13:25:02 2009] [debug] mod_deflate.c(447): [client 85.125.39.34] Zlib: Compressed 675 to 413 : URL /tmp.py
[Wed Aug 12 13:25:02 2009] [debug] mod_deflate.c(447): [client 85.125.39.34] Zlib: Compressed 1150 to 197 : URL /favicon.ico
[Wed Aug 12 13:25:02 2009] [debug] mod_headers.c(612): headers: ap_headers_output_filter()
[Wed Aug 12 13:25:08 2009] [notice] mod_fcgid: process /var/www/citrosaft/htdocs/tmp.py(20212) exit(communication error), terminated by calling exit(), return code: 1

allerdings sagt mir das jetz eher wenig...
 
Gibt dein Skript einen anstaendigen HTTP-Header aus?
 
Das Script selbst nicht.

Meinst du das CGI-Script oder das Python-Script?
Kann ich das mit dem Header auch im CGI-Script machen?
 
Ich meine das Skript, das du da aufrufst. Ob es nun ein CGI-Skript ist oder anderweitig aufgerufen wird, spielt keine Rolle. Wenn es anstaendig mit einem Browser kommunizieren soll, muss es eine Location- oder Content-Type-Definition u.ae. als erste Zeile ausgeben und diese muss mit einem doppelten Zeilenumbruch abgeschlossen werden.
 

Ähnliche Themen

Keine Zugriff von Windows 10 auf Sambafreigaben

Empfehlung für Server Distribution

Autostart auf raspbmc

CentOS 7 Grafikkarte auswählen

java-package (debian7) probleme.

Zurück
Oben