5 Stimmen

Wie setzt man mod_wsgi für Apache und Django?

Ich weiß, dass es bereits eine Menge Informationen zu diesem Thema gibt, aber sie sind ziemlich unhandlich, nicht so einfach und aussagekräftig. Kann mir jemand erklären, wie man django und mit mod_wsgi y apache ?

9voto

Filip Dupanović Punkte 30692

Mod_wsgi ist nicht unbedingt die beste Lösung für die Ausführung von Python-WSGI-Anwendungen. Wenn Sie es vorziehen, können Sie Ihre Django-Instanz auch auf pythonischere Weise ausführen.

Zunächst einmal würde ich argumentieren, dass es viel Mühe kostet, das Apache-Anfrageverarbeitungsmodell zu verstehen und es richtig zu konfigurieren, insbesondere im Hinblick auf mod_wsgi. Wenn Sie nicht genau darauf eingestellt sind, Apache zu benutzen, würde ich empfehlen, dass Sie einen Blick auf die Ausführung von Ablaichen o Grünes Einhorn hinter einer nginx Vollmacht wie von @Neo vorgeschlagen.

Spawning und Gunicorn sind beide lächerlich schnell, erfordern nicht, dass Sie Apache mit einem bestimmten Python-Interpreter kompilieren und bieten Unterstützung für die schrittweise Aktualisierung Ihrer Code-Basis im laufenden Betrieb, Hooks für Django und andere Goodies out of the box. nginx, Spawning und Gunicorn haben alle ein einfaches Verarbeitungsmodell, sind völlig unabhängig voneinander gehalten, so dass Sie eine transparentere Architektur erhalten, die einfacher zu warten und zu überwachen ist.

Hier ist eine tolle Leitfaden zur Einrichtung von Spawning mit Django von Eric Florenzano, und hier ist ein ausführliche Darstellung zum Betrieb von Django mit gunicorn vom Autor des Projekts, Benoît Chesneau.

Wofür Sie sich auch entscheiden, Sie werden sich wie zu Hause fühlen.

5voto

Neo Punkte 12159

Ich habe vor kurzem meine Anwendung auf Django eingerichtet, und diese Anleitung war alles, was ich brauchte. http://blog.stannard.net.au/2010/12/11/installing-django-with-apache-and-mod_wsgi-on-ubuntu-10-04/

Der Prozess läuft also im Wesentlichen wie folgt ab

  1. Richten Sie einen anderen Server für die Bereitstellung statischer Dateien (z. B. Nginx) auf Port 80 ein.
  2. Richten Sie Apache auf einem anderen Port ein.
  3. Ausführen von Django-Anwendungen auf Apache mit mod_wsgi
  4. Reverseproxy für alle nicht-statischen/nicht-medialen Dateien auf apache+mod_wsgi/django

Lassen Sie mich wissen, bei welchem Schritt Sie nicht weiterkommen.

3voto

Eric Clack Punkte 1760

Hier ist, wie ich es auf meinem Mac mache, mit Apache, Python und Django von Mac Ports. Dies ist nicht unbedingt der beste Ansatz, aber es funktioniert für mich.

Ich habe die folgenden Top-Level-Verzeichnisse:

  • lib : Python-Code, mit settings.py in lib/settings.py
  • static : Material, das von Apache bereitgestellt werden soll, z. B. Medien und CSS
  • tools Entwicklungswerkzeuge, z. B. Rollout-Skripte.

Hier ist die Apache-Konfiguration für eine Beispiel-Site, dann siehe Django WSGI-Skript unten:

<VirtualHost *:80>
    # Stuff to served statically is in media directory
    DocumentRoot /Library/WebServer/mysite/static

    ServerName mysite.local

    # Redirect to homepage action
    RewriteEngine on
    RewriteRule ^/$ /mysite/ [R,L]

    # Static dirs first
    Alias /static/ /Library/WebServer/mysite/static/

    <Directory "/Library/WebServer/mysite/static/">
        Order allow,deny
        Allow from all
    </Directory>    

    # Now everything else goes to Django    
    WSGIDaemonProcess mysite-django.local processes=1 threads=5 maximum-requests=0 display-name=%{GROUP} python-path=/Library/WebServer/mysite/lib python-eggs=/tmp
    WSGIProcessGroup mysite-django.local
    WSGIScriptAlias / /Library/WebServer/mysite/lib/apache/django_wsgi.py

    <Directory "/Library/WebServer/mysite/lib/apache">
        Order allow,deny
        Allow from all
    </Directory>    

</VirtualHost>

Das Django WGCI-Skript befindet sich in lib/apache/django_wsgi.py:

import os
import sys

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

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X