Webserver für Django konfigurieren?

Django, Flask, Bottle, WSGI, CGI…
Antworten
djonny
User
Beiträge: 15
Registriert: Mittwoch 15. Juli 2009, 10:40

Hi,

endlich habe ich meine erste Django Website lokal fertig, jetzt möchte ich sie natürlich online stellen.
Mein Problem dabei ist allerdings das mein Webserver nicht für Django ausgelegt ist.

Zurzeit besteht der Server aus einem Hostsystem(ProxMox) und einem OpenVZ Conatainer (Debian 6.0 mit IspCP).

Für Django hätte ich mir jetzt vorgestellt einen eigenen OpenVZ Container zu erstellen da IspCP nicht mit django zusammenarbeitet.

Jetzt wäre meine Frage ob ihr ein Hostingsystem kennt das mit Django Zusammenarbeitet oder ob es besser ist einfach Apache oder lighttpd ohne irgendein System aufzusetzen? bzw. gibt es irgendwo Tutorials?

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

djonny hat geschrieben:ob es besser ist einfach Apache oder lighttpd ohne irgendein System aufzusetzen? bzw. gibt es irgendwo Tutorials?
Würde ich so machen und ja, steht in der Django-Dokumentation beschrieben.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
djonny
User
Beiträge: 15
Registriert: Mittwoch 15. Juli 2009, 10:40

So hab mich jetzt ein bisschen eingearbeitet allerdings komm ich bei einem bestimmten Punkt nicht weiter...

Also ich hab in einem Buch eine Anleitung gelesen und die auch befolgt allerdings ist das ohne virtualenv
jetzt hab ich das ganze mal angepasst bekomme aber trotzdem immer eine Fehler 500

meine django.wsgi

Code: Alles auswählen

import os, sys
import site

site.addsitedir('/home/klaus/.virtualenv/mediendesign/lib/python2.6/site-packages')

# path to directory of the .wsgi file ('apache/')
wsgi_dir = os.path.abspath(os.path.dirname(__file__))
# path to project root directory (parent of 'apache/')
project_dir = os.path.dirname(wsgi_dir)
# add project directory to system's PATH
sys.path.append(project_dir)
# add the settings.py file to your system's PATH
project_settings = os.path.join(project_dir,'settings')

# explicitly define the DJANGO_SETTINGS_MODULE
os.environ['DJANGO_SETTINGS_MODULE'] = 'mediendesign.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
dann meine Apache config im /apache2/sites-available/

Code: Alles auswählen

NameVirtualHost *:80
WSGIPythonHome /home/klaus/.virtualenv/mediendesign
<VirtualHost *:80>
	ServerAdmin xxx@xxx.xx

	# ServerName is required for a virtual host
	ServerName http://www.kk88.at
	ServerAlias kk88.at

	Alias /static /home/klaus/pythonprojects/mediendesign/static

	# DocumentRoot is required for a virtual host
	DocumentRoot /home/klaus/pythonprojects/mediendesign
	#WSGIPythonHome /home/klaus/.virtualenv/mediendesign
	WSGIScriptAlias / /home/klaus/pythonprojects/mediendesign/apache/django.wsgi

	ErrorLog /var/log/apache2/error.log

	# Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
	LogLevel warn

	CustomLog /var/log/apache2/access.log combined
</VirtualHost>

in der apache error.log steht das drinen

Code: Alles auswählen

[Tue Apr 19 20:49:02 2011] [notice] caught SIGTERM, shutting down
[Tue Apr 19 20:49:03 2011] [notice] Apache/2.2.16 (Debian) mod_wsgi/3.3 Python/2.6.6 configured -- resuming normal operations
[Tue Apr 19 20:50:01 2011] [error] [client 192.168.217.172] mod_wsgi (pid=19111): Target WSGI script '/home/klaus/pythonprojects/mediendesign/apache/django.wsgi' cannot be loaded as Python module.
[Tue Apr 19 20:50:01 2011] [error] [client 192.168.217.172] mod_wsgi (pid=19111): Exception occurred processing WSGI script '/home/klaus/pythonprojects/mediendesign/apache/django.wsgi'.
[Tue Apr 19 20:50:01 2011] [error] Traceback (most recent call last):
[Tue Apr 19 20:50:01 2011] [error]   File "/home/klaus/pythonprojects/mediendesign/apache/django.wsgi", line 1, in <module>
[Tue Apr 19 20:50:01 2011] [error]     import os, sys
[Tue Apr 19 20:50:01 2011] [error] ImportError: No module named os
[Tue Apr 19 20:50:01 2011] [error] [client 192.168.217.172] mod_wsgi (pid=19113): Target WSGI script '/home/klaus/pythonprojects/mediendesign/apache/django.wsgi' cannot be loaded as Python module.
[Tue Apr 19 20:50:01 2011] [error] [client 192.168.217.172] mod_wsgi (pid=19113): Exception occurred processing WSGI script '/home/klaus/pythonprojects/mediendesign/apache/django.wsgi'.
[Tue Apr 19 20:50:01 2011] [error] Traceback (most recent call last):
[Tue Apr 19 20:50:01 2011] [error]   File "/home/klaus/pythonprojects/mediendesign/apache/django.wsgi", line 1, in <module>
[Tue Apr 19 20:50:01 2011] [error]     import os, sys
[Tue Apr 19 20:50:01 2011] [error] ImportError: No module named os

Jetzt habe ich im Internet ziemlich viel gelesen allerdings macht mich das alles noch verwirrter.
kann mir da jemand helfen auf dem richtigen Weg zu kommen?

tia jonny
Benutzeravatar
/me
User
Beiträge: 3556
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Spontan aus dem Bauch heraus: Passt die Version von mod_wsgi zu deiner Python-Version?
djonny
User
Beiträge: 15
Registriert: Mittwoch 15. Juli 2009, 10:40

Danke für die schnelle Antwort, wo sehe ich ob die beiden Version zusammenarbeiten?

also Python ist die 2.6.6 und mod_wsgi so wie ich im error.log herauslesen kann die 3.3 wenn das stimmt
Benutzeravatar
/me
User
Beiträge: 3556
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

djonny hat geschrieben:Danke für die schnelle Antwort, wo sehe ich ob die beiden Version zusammenarbeiten?
Bei einem Linux-System mit entsprechender Paketverwaltung müsste das eigentlich passen. Bei manueller Installation (oder unter Windows) könnte da etwas schief gehen.

Darf der User des Webservers eigentlich Python überhaupt verwenden? Ich sehe da irgendwas mit virtualenv. Sollten da die Rechte nicht entsprechend gesetzt sein, dann kann das IMHO auch zu Problemen führen. Ich verwende hier immer noch die Einträge für WSGIDaemonProcess und WSGIProcessGroup um eine vom eigentlichen Webserver getrennte Umgebung zu haben.
djonny
User
Beiträge: 15
Registriert: Mittwoch 15. Juli 2009, 10:40

Hab jetzt diese 2 Zeilen in der sites-available hinzugefügt allerdings keine Änderung.
Irgendwie erscheint es als würde wsgi, python nicht aufrufen...

WSGIDaemonProcess www.kk88.at user=www-data group=www-data processes=2 threads=25
WSGIProcessGroup www.kk88.at


wo sehe ich ob www-data python verwenden kann?

Danke schonmal im voraus
djonny
User
Beiträge: 15
Registriert: Mittwoch 15. Juli 2009, 10:40

Danke für deine Hilfe, hab den Fehler jetzt gefunden...

hatte statt .virtualenvs .virtualenv stehen und das ist natürlich nicht das selbe und somit hat er python nicht gefunden.

Immer die Kleinigkeiten sucht man am längsten
Antworten