Python aufm Apache zum Laufen kriegen :oops:

Probleme bei der Installation?
CrackPod
User
Beiträge: 205
Registriert: Freitag 30. Juni 2006, 12:56

Hallo,

es ist mir schon fast peinlich, aber ich weiß nichtmehr weiter.
Ich habe mir unter Ubuntu Edgy(6.10) Apache2 installiert. Aber ich bekomme Python weder mit mod_python(wieso wird im Forum merfach davon abgeraten, wenn es doch schneller als cgi ist?), noch mit cgi zum laufen..

Code: Alles auswählen

#Eintrag im apache2.conf
cat /etc/apache2/apache2.conf
[...]<Directory /var/www> 
  Options +ExecCGI
  AddHandler cgi-script .cgi .py .pcy .pyo
</Directory>
#das cgi Skript
cat /var/www/apache2-default/cgi.py 
#!/usr/bin/python
#-*-Encoding: utf-8 -*-
print "Content-type: text/html\n\n";
print "Hello, World.";
Das Skript ist ausführbar. Nachdem ich die config Datei bearbeitet habe, habe ich den Apache neugestartet, es kam keine Fehlermeldung. Wenn ich die Seite aber aufrufe(http://127.0.0.1/apache2-default/cgi.py), dann bekomm ich einen 403 Fehler. Warum das?
Auch mit mod_python funzt es nicht, da will er die Datei dann runterladen. Das Modul wird geladen:

Code: Alles auswählen

cat /etc/apache2/mods-enabled/mod_python.load 
LoadModule python_module /usr/lib/apache2/modules/mod_python.so
In der apache.conf hatte ich folgendes drinnen stehen:

Code: Alles auswählen

cat /etc/apache2/apache2.conf
<Directory /var/www> 
   AddHandler mod_python .py .pyc .pyo
   PythonDebug On
</Directory>
Was soll ich tun? Bzw, wie kann ich das zum Laufen bekommen?
ls -l auf die Datei sagt mir folgendes(vielleicht liegt ja auch in den Rechten der Fehler und ich weiß es nur nich, dass ich was anderes als 755 nehmen muss :wink: )

Code: Alles auswählen

ls -l cgi.py 
-rwxr-xr-x 1 root root 102 2007-03-28 21:33 cgi.py
Wär schön, wenn ihr mir helft. Ich weiß, dieses Thema gab schon x mal, aber ich sitz da jetz schon ewig dran und in jedem Thread stehen die selben Tipps, die ich schon zig mal probiert hab udn keiner hat mir geholfen. Ich muss irgendwas anderes falsch gemacht haben -.-
Edit:
Ich habs jetz noch weiter mit mod_python probiert und mir eine /etc/apache/mods-enabled/mod_python.conf angelegt:

Code: Alles auswählen

<IfModule mod_python.c>
        AddHandler mod_python .py .pyc .pyo
        PythonHandler mod_python.publisher
        PythonDebug On
</IfModule>
##Nochma die apache.conf
<Directory /var/www> 
   AddHandler mod_python .py .pyc .pyo
   AddHandler python-program .py .pyc .pyo
   PythonHandler mod_python.publisher
   PythonDebug On
</Directory>
Jetzt bekomme ich, wenn die cgi.py aufrufe einen 404 Fehler. Die Datei ist aber zu 100% da. Error.log:

Code: Alles auswählen

[Wed Mar 28 22:06:06 2007] [notice] mod_python: Creating 8 session mutexes based on 6 max processes and 25 max threads.
[Wed Mar 28 22:06:06 2007] [notice] Apache/2.0.55 (Ubuntu) mod_python/3.2.8 Python/2.4.4c1 configured -- resuming normal operations
[Wed Mar 28 22:06:08 2007] [notice] mod_python: (Re)importing module 'mod_python.publisher'
[Wed Mar 28 22:06:09 2007] [notice] [client 127.0.0.1] Publisher loading page /var/www/apache2-default/cgi.py
Mir ist aufgefallen, als ich mir die Datei angeschaut hab, dass da auch drin steht:

Code: Alles auswählen

[Wed Mar 28 21:06:17 2007] [error] [client 127.0.0.1] Options ExecCGI is off in this directory: /var/www/apache2-default/test.cgi
Das war aber um die Zeit, als ich es mit cgi versucht habe. Jedoch wundert mich diese Meldung, da ich ja wie oben gepostet habe

Code: Alles auswählen

<Directory /var/www> 
  Options +ExecCGI
  AddHandler cgi-script .cgi .py .pcy .pyo
</Directory>
In der apache.conf stehen hatte, als ich es getestet habe... Ich habe auch immer schön brav den Apache neugestartet, nachdem ich Änderungen vorgenommen habe.
Achja: Auch mit folgendem Skript geht es nicht:

Code: Alles auswählen

#!/usr/bin/python
#-*-Encoding: utf-8-*-
from mod_python import apache

def handler(req):
    req.write("Hello World!")
    return apache.OK
Hoffe auf Hilfe :D
Und bevor ichs vergess :D

Code: Alles auswählen

python -V
Python 2.4.4c1
LG Tobi
CrackPod
User
Beiträge: 205
Registriert: Freitag 30. Juni 2006, 12:56

Ich habe es jetzt (glaube ich) hinbekommen. Ich habe vorerst einmal cgi genommen. In meiner apache.conf steht jetzt:

Code: Alles auswählen

<Directory "/usr/local/httpd/htdocs/test">
    AddHandler python-program .py
    PythonHandler test
    Option +ExecCGI
    PythonDebug On
</Directory> 
Das ist doch ein mischmasch oder? Options +ExecCGI müsste doch mit einem AddHandler cgi-prgramm o.ä. reichen, dachte ich? Ich hab auch gedacht, dass AddHandler python-program PythonHandler udn PYthonDebug nur bei verwendung mod_python notwendig is.
Irgendwie steig ich grad gar nich durch. Wäre nett, wenn mir das morgen mal jemand erklären könnte. Am besten auch, warum man cgi statt mod_python nehmen soll.
Edit habe nru kurz auf den Monitor geschaut ghestern... Es gibt das cgi nur als Klartext aus, lässt es aber nich durch den Parser. was mach ich falsch?
LG
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Das sieht allerdings nicht ganz nach reinem CGI aus. Zumindest "PythonDebug On" ist IMHO für modPython...

Reines CGI funktioniert recht einfach, schau mal hier: [wiki]Web-Skripte zum laufen bringen[/wiki]
i.d.R. muß einfach nur ein Python installiert sein, was bei Ubuntu sowieso der Fall ist. Du must allerdings das machen was unter "Ausführungsrechte" steht:
In einer .htaccess kann man folgendes definieren, damit Skripte auch außerhalb vom cgi-bin Verzeichnis 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
CrackPod
User
Beiträge: 205
Registriert: Freitag 30. Juni 2006, 12:56

Ja, so einfach wenns wär-.-
Ich hab immer noch den 403er. Auch mit .htaccess:

Code: Alles auswählen

# Damit allgemein CGIs ausgeführt werden
Options +ExecCGI
# Dateien mit der Endung ".py" sind CGI-Skripte
AddHandler cgi-script .py
Hier mal meine gesamte config Datei: apache2.conf, httpd.conf sonst noch was benötigt? Den Server hab ich auch schon 2 ma force-reloaden lassen.
LG
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Schau dir mal die ganzen Punkte auf [wiki]Web-Skripte zum laufen bringen[/wiki]an und versuche es erstmal mit einem kleine Test CGI Skript (Auch auf der Wiki Seite)...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
CrackPod
User
Beiträge: 205
Registriert: Freitag 30. Juni 2006, 12:56

Ich glaube du hast meine Posts nicht richtig gelesen, sonst hättest du bemerkt, dass ich das test Skript von der Wikiseite bzw diversen manuals genommen habe. Ich hab jetz auch noch das 2.(das längere skript) getestet, wobei ich das ergebniss vorhersagen konnte 403 Fehler
Forbidden

You don't have permission to access /htdocs/cgitest.py on this server.
Apache/2.0.55 (Ubuntu) mod_python/3.2.8 Python/2.4.4c1 Server at 127.0.0.1 Port 80
Ich post jetz einfach nochma meine log Datei:

Code: Alles auswählen

[Thu Mar 29 16:08:52 2007] [notice] mod_python: Creating 8 session mutexes based on 6 max processes and 25 max threads.
[Thu Mar 29 16:08:52 2007] [notice] Apache/2.0.55 (Ubuntu) mod_python/3.2.8 Python/2.4.4c1 configured -- resuming normal operations
[Thu Mar 29 16:08:57 2007] [error] [client 127.0.0.1] Options ExecCGI is off in this directory: /var/www/htdocs/cgitest.cgi
[Thu Mar 29 16:09:00 2007] [error] [client 127.0.0.1] Options ExecCGI is off in this directory: /var/www/htdocs/cgitest.py
Woran liegt das ganze? Die Dateien gehören www-data(ich habs auch schon mit Dateien probiert, die von mir erstellt wurden) Rechte sind 755.

LG
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Ich nutze schon immer mod_python und hatte das problem noch nie. hast du mal die dokumente der gruppe zugeordnet mit der apache läuft?

Funktioniert mod_python eigenständig?
Hier zweite Post habe ich mal mod_python kurzanleitung geschreiben:
http://www.python-forum.de/topic-8788.html?highlight=

PS: ich finde es kein Fehler modpython zu nutzen ich weiß auch nicht was manche hier gegen modpython haben ;-)

Der ModPython Publisher ist sehr gut. Einfach zukonfen, wenn modpython einmal läuft. Du bist aber an mod_python gebunden und somit an apache gebunden.


*edit*
Man kann aber auch mit mod_python CGI laufen lassen. Das hat doch keine Nachteile oder?
Zuletzt geändert von Sr4l am Donnerstag 29. März 2007, 15:45, insgesamt 1-mal geändert.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

CrackPod hat geschrieben:Aber ich bekomme Python weder mit mod_python(wieso wird im Forum merfach davon abgeraten, wenn es doch schneller als cgi ist?), noch mit cgi zum laufen..
Da siehst du warum abgeraten wird. Weil du eben in ein mod_python-Problem gelaufen bist. Wenn du etwas haben willst, was schneller ist als CGI ist aber nicht die gleichen Probleme wie mod_python hat, dann nimm FastCGI oder SCGI.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
CrackPod
User
Beiträge: 205
Registriert: Freitag 30. Juni 2006, 12:56

Also mod_python läut jetzt.
Aber ich würde ganz gerne alles zum Laufen bekommen(nein, es soll nicht alles gleichzeitig laufen, cih weiß, das sowas zu Problemen führen kann).
Ich will wissen, womit ich besser arbeiten kann FastCGI, CGI, SCGI oder mod_python.
Wenn ich es geschafft habe einmal Python über CGI starten zu können, wie bekomm ich es dann mit FastCGI hin? Gibt es da unterschiede bzw gibt es Unterschiede, also programmiertechnisch?
LG
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Options ExecCGI is off in this directory: /var/www/htdocs/cgitest.cgi
Das hab ich zwar noch nie als Fehler gesehen. Ich würde das so interpretieren, das dort also die Option ExecCGI aus ist und somit werden keine CGIs ausgeführt...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
CrackPod
User
Beiträge: 205
Registriert: Freitag 30. Juni 2006, 12:56

jens hat geschrieben:
Options ExecCGI is off in this directory: /var/www/htdocs/cgitest.cgi
Das hab ich zwar noch nie als Fehler gesehen. Ich würde das so interpretieren, das dort also die Option ExecCGI aus ist und somit werden keine CGIs ausgeführt...
Naja, aber wie man in meinen conf Dateien sieht, habe ich ja Options +ExecCGI drinnenstehen. Auch in der .htaccess Datei. Ich find das irgendwie sehr komisch.
Bringt es etwas, wenn ich dazu sage, dass ich den Apache2 hab und nich 1.3? HAb ich glaub ich vergessen zu erwähnen und is ja evtl von Relevanz, derer ich mir nicht bewusst bin.
LG
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Sr4l hat geschrieben:PS: ich finde es kein Fehler modpython zu nutzen ich weiß auch nicht was manche hier gegen modpython haben ;-)
Lesen. Ich weiß, der Artikel ist lang, aber meiner Meinung nach schreibt der Autor dort viele vernünftige Sachen. Das nächste mal wenn ich PHP einsetze(n muss), werde ich sehen, ob es eine vernünftige Alternative zu mod_php gibt.

Edit: Dieser Blogeintrag schildert übrigens, dass PHP5 mit FastCGI durchaus gut läuft.
Zuletzt geändert von Leonidas am Donnerstag 29. März 2007, 16:26, insgesamt 1-mal geändert.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
CrackPod
User
Beiträge: 205
Registriert: Freitag 30. Juni 2006, 12:56

Was mir auch noch aufgefallen ist: Der 403 Fehler kommt _immer_ wenn ich versuche CGI zu aktivieren, total egal, was ich in die Adresszeile eingebe. Ich find das so strange.
Hoffe mir kann jmd helfen und danke für eure Bemühungen und Links.
LG

EDIT: Mittlerweile hab ich festgestellt, dass die Dateien im voreingestellten CGI-BIN verzeichniss aufrufbar sind. Aber ich kann per ScriptAlias auch komischerweise kein anderes Verzeichniss einstellen.
Und was mich immer noch beschäftigt ist, dass das mit htaccess immer noch nicht geht-.-
abaum
User
Beiträge: 18
Registriert: Freitag 12. Januar 2007, 21:53
Kontaktdaten:

Die Direktive AllowOverride legt fest, welche Arten von Konfigurationsdirektiven in .htaccess-Dateien überschrieben werden dürfen. Da diese Dateien nur in Verzeichnissen innerhalb der DocumentRoot erlaubt sind, ist auch AllowOverride nur in <Directory>-Abschnitten gültig.
(Quelle: http://buecher.lingoworld.de/apache2/sh ... =444&o=dir)
CrackPod
User
Beiträge: 205
Registriert: Freitag 30. Juni 2006, 12:56

abaum hat geschrieben:
Die Direktive AllowOverride legt fest, welche Arten von Konfigurationsdirektiven in .htaccess-Dateien überschrieben werden dürfen. Da diese Dateien nur in Verzeichnissen innerhalb der DocumentRoot erlaubt sind, ist auch AllowOverride nur in <Directory>-Abschnitten gültig.
(Quelle: http://buecher.lingoworld.de/apache2/sh ... =444&o=dir)
Danke, dass du dir die Zeit genommen hast, deinen Post zu verfassen. Anscheinend hat die Zeit wohl nicht gereicht, dass du dir den Thread (gründlich) durchliest...
In der apache2.conf steht nämlich folgendes:
# To use CGI scripts outside /cgi-bin/:
AddHandler cgi-script .cgi .py

<Directory /var/www>
AllowOverride All
AddHandler cgi-script .py
Options +ExecCGI
</Directory>
Davon mal ganz abgesehen ist AllowOverride impliziz auf All gestellt.
Trotzdem danke.
LG
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Folgende Idee: erstmal alles mod_python betreffende rauswerfen, und dann den Handler nur auf .cgi-Dateien setzen (schon gar nicht auf .pyc oder .pyo, weil das sowieso nicht gehen würde) und dann ein genaues Directory angeben (also etwas genauer als ``/var/www``) und dann die Option ExecCGI (ohne Plus) nutzen. Wenn das geht, kann man dann noch rumschrauben.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
CrackPod
User
Beiträge: 205
Registriert: Freitag 30. Juni 2006, 12:56

Also wenn ich das Directory genau angebe, dann funktioniert es wunderbar =) Danke
Nur, warum geht es nicht auch über eine .htaccess Datei bzw global und warum kann ich den Standard cgi-bin Ordner nicht ändern?

LG
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

CrackPod hat geschrieben:Nur, warum geht es nicht auch über eine .htaccess Datei bzw global und warum kann ich den Standard cgi-bin Ordner nicht ändern?
Puh, ich glaube das zählt zu den Sachen die man noch so oft hier im Forum diskutieren kann, aber letztendlich ist sowas am einfachsten direkt auf dem Server geradezubiegen (nein, damit will ich dir jetzt nichts unterstellen, dass ist nur eine Erfahrung von mir, nachdem ich mal mehrere Stunden jemandem diktiert habe, wie man Django unter mod_python und FastCGI einrichtet).

Hast du vielleicht einen Jabber-Account?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
CrackPod
User
Beiträge: 205
Registriert: Freitag 30. Juni 2006, 12:56

Ne aber ich kann mir einen machen, nur bin ich, als ichs mal machen wollte nich 100% durchgestiegen. Hab das damals so verstanden, als ob das irc ähnlich is. Am besten wärs, wenn du mir ne PN schreiben würdest, kurz die einrichtung erklärst und dann gehts ab ;)
Wär extrem nett :D
LG
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

CrackPod hat geschrieben:Wär extrem nett :D
Klar, du bekommst gleich eine PN.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten