django app mit mod-wsgi unter apache2

Django, Flask, Bottle, WSGI, CGI…
Antworten
psyalex
User
Beiträge: 26
Registriert: Samstag 17. November 2007, 22:10
Wohnort: München

Hallo,

ich versuche eine django app, die mit dem eingebauten Server schon läuft, über mod-wsgi und apache2 laufen zu lassen. Apache läuft (Startseite ist zu sehen). In die httpd.conf habe ich folgendes eingetragen:

Code: Alles auswählen

WSGIScriptAlias /test/ /home/MEIN_NAME/python/www/django.wsgi
die Datei django.wsgi sieht so aus:

Code: Alles auswählen

import os
import sys

os.environ['DJANGO_SETTINGS_MODULE'] = 'www.settings'

sys.path.append('/home/MEIN_NAME/python')
sys.path.append('/home/MEIN_NAME/python/www')
sys.path.append('/home/MEIN_NAME/python/www/report')

import django.core.handlers.wsgi

application = django.core.handlers.wsgi.WSGIHandler()
print("angelaufen")
Die Datei mit den Settings heißt "settings.py", "www" ist der Name des projects und die app heißt "report".

Wenn ich eine der URLs aufrufe (z.B. http://127.0.0.1/test/admin) bekomme ich vom Server eine 403 Seite (Forbidden ...). Der erste Teil der Eintragung in der httpd.conf ("WSGIScriptAlias /test/") scheint berücksichtigt zu werden. Ob meine django.wsgi Datei wirklich ausgeführt wird weiß ich nicht, und ob die Datei "settings.py" wirklich berücksichtigt wird, weiß ich auch nicht. Kann ich das irgendwie herausfinden?

Im apche error log stehen folgende Zeilen:

Code: Alles auswählen

[Wed Jul 21 14:39:41 2010] [warn] mod_wsgi: Compiled for Python/2.6.2.
[Wed Jul 21 14:39:41 2010] [warn] mod_wsgi: Runtime using Python/2.6.4.
[Wed Jul 21 14:39:41 2010] [warn] mod_wsgi: Python module path '/usr/lib/python2.6/:/usr/lib/python2.6/plat-linux2:/usr/lib/python2.6/lib-tk:/usr/lib/python2.6/lib-old:/usr/lib/python2.6/lib-dynload'.
[Wed Jul 21 14:39:41 2010] [notice] Apache/2.2.12 (Ubuntu) mod_wsgi/2.5 Python/2.6.4 configured -- resuming normal operations
[Wed Jul 21 14:39:55 2010] [error] [client 127.0.0.1] (13)Permission denied: access to /test/admin/ denied
.
Das System ist Ubuntu 9.10, 64bit.

Hat jemand eine Idee an was das Problem liegen könnte?

Viele Grüße
Alex
Zuletzt geändert von psyalex am Mittwoch 21. Juli 2010, 14:37, insgesamt 1-mal geändert.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Mach doch ein logging in einer Datei und schau da rein.
Ich würde allerdings Permission denied: access to /test/admin/ denied näher untersuchen.

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
psyalex
User
Beiträge: 26
Registriert: Samstag 17. November 2007, 22:10
Wohnort: München

@jens

Der Tipp mit dem logging in eine Datei war gut (hätte ich auch drauf kommen können ;-). Das logging hat allerdings gezeigt das django.wsgi NICHT ausgeführt wird. Jetzt weiß ich aber absolut nicht warum. Der Pfad ist korrekt, den hab ich noch mal überprüft. Und die Berechtigungen hab ich mal auf 777 gesetzt, was auch nichts gebracht hat.
Ich würde allerdings Permission denied: access to /test/admin/ denied näher untersuchen.
was kann ich denn da noch näher unteruchen? Macht Apache irgendwo noch ein ausführlicheres logfile?
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

http://code.google.com/p/modwsgi/wiki/I ... WithDjango Schau dir mal die <Directory> Sections an, möglicherweise fehlt dir dort noch was… Ansonsten loglevel auf Debug erhöhen und Log hier pasten…
psyalex
User
Beiträge: 26
Registriert: Samstag 17. November 2007, 22:10
Wohnort: München

Ich hab jetzt die entsprechenden Ordner noch frei gegeben und meine httpd.conf sieht nun os aus:

Code: Alles auswählen

Alias /media/ /home/MEIN_NAME/python/www/media/

<Directory /home/MEIN_NAME/python/www/media>
Order deny,allow
Allow from all
</Directory>

WSGIScriptAlias /test/ /home/MEIN_NAME/python/www/django.wsgi

<Directory /home/MEIN_NAME/python/www>
Order deny,allow
Allow from all
</Directory>

<Directory /home/MEIN_NAME/python>
Order deny,allow
Allow from all
</Directory>

<Directory /home/MEIN_NAME/python/www/report>
Order deny,allow
Allow from all
</Directory>
Der Apache error log sieht, nachdem ich den loglevel auf debug gestellt habe, nach einen Neustart des Servers so aus:

Code: Alles auswählen

[Thu Jul 22 08:32:20 2010] [info] mod_wsgi (pid=5009): Cleanup interpreter ''.
[Thu Jul 22 08:32:20 2010] [info] mod_wsgi (pid=5008): Cleanup interpreter ''.
[Thu Jul 22 08:32:20 2010] [info] mod_wsgi (pid=5009): Terminating Python.
[Thu Jul 22 08:32:20 2010] [info] mod_wsgi (pid=5008): Terminating Python.
[Thu Jul 22 08:32:20 2010] [info] removed PID file /var/run/apache2.pid (pid=5003)
[Thu Jul 22 08:32:20 2010] [notice] caught SIGTERM, shutting down
[Thu Jul 22 08:32:20 2010] [info] mod_wsgi (pid=5003): Terminating Python.
[Thu Jul 22 08:32:21 2010] [warn] mod_wsgi: Compiled for Python/2.6.2.
[Thu Jul 22 08:32:21 2010] [warn] mod_wsgi: Runtime using Python/2.6.4.
[Thu Jul 22 08:32:21 2010] [warn] mod_wsgi: Python module path '/usr/lib/python2.6/:/usr/lib/python2.6/plat-linux2:/usr/lib/python2.6/lib-tk:/usr/lib/python2.6/lib-old:/usr/lib/python2.6/lib-dynload'.
[Thu Jul 22 08:32:21 2010] [info] mod_wsgi (pid=5183): Initializing Python.
[Thu Jul 22 08:32:21 2010] [notice] Apache/2.2.12 (Ubuntu) mod_wsgi/2.5 Python/2.6.4 configured -- resuming normal operations
[Thu Jul 22 08:32:21 2010] [info] Server built: Mar  9 2010 22:13:27
[Thu Jul 22 08:32:21 2010] [debug] worker.c(1740): AcceptMutex: sysvsem (default: sysvsem)
[Thu Jul 22 08:32:21 2010] [info] mod_wsgi (pid=5188): Attach interpreter ''.
[Thu Jul 22 08:32:21 2010] [info] mod_wsgi (pid=5189): Attach interpreter ''.
[Thu Jul 22 08:32:32 2010] [error] [client 127.0.0.1] (13)Permission denied: access to /test/admin denied
django.wsgi wird weiterhin nicht ausgeführt, warum auch immer.

Vielen Dank schon mal für alle weiteren Tipps.
Alex
Zuletzt geändert von psyalex am Freitag 23. Juli 2010, 07:23, insgesamt 1-mal geändert.
psyalex
User
Beiträge: 26
Registriert: Samstag 17. November 2007, 22:10
Wohnort: München

Ich hab jetzt festgestellt, dass die app läuft, wenn ich das gesamte django project in den Ordner /var/www verschiebe. Das ist doch so aber nicht gedacht, oder?
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

nunja apache rennt im normalfall als apache, der hat auf dein Homeverzeichnis vlt gar keinen Zugriff. Zumindest wäre das plausibel.
psyalex
User
Beiträge: 26
Registriert: Samstag 17. November 2007, 22:10
Wohnort: München

Also die Rechte unter Linux sollten nicht das Problem sein. Ich hab den Ordner und alles was drin ist mal auf 777 gesetzt und dem User und der Gruppe www-data zugeteilt, das ist der User unter dem Apache unter Ubunut läuft. Hat aber alles nichts genutzt.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Auch die Unterordner? Was ist wenn du mal ``su www-data`` machst, kannst du dann darauf zugreifen?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten