Как установить mod_wsgi для apache и django? - PullRequest
5 голосов
/ 12 февраля 2011

Я знаю, что по этой теме уже много информации, но она довольно неуклюжая, не такая простая и выразительная.Может кто-нибудь объяснить мне, как использовать django и с mod_wsgi и apache?

Ответы [ 3 ]

9 голосов
/ 12 февраля 2011

mod_wsgi не особенно подходит для запуска приложений Python WSGI, или, если вы предпочитаете, есть более питонские способы запуска вашего экземпляра Django.

Прежде всего, я бы сказал, что требуется много усилий, чтобы понять модель обработки запросов Apache и правильно ее настроить, особенно в отношении mod_wsgi.Если вы не используете или не используете Apache, я бы порекомендовал вам запустить Spawning или Green Unicorn , за прокси nginx , например @Нео предложил.

Нерест и gunicorn невероятно быстр, не требуют компиляции Apache с помощью специального интерпретатора Python и обеспечивают поддержку для постепенного обновления базы кода на лету, ловушки для Django и других полезностейиз коробки.nginx, Spawning и gunicorn имеют простую модель обработки, полностью независимы друг от друга, поэтому вы получаете более прозрачную архитектуру, которую проще поддерживать и отслеживать.

Вот отличное руководство о настройке Spawning with Django Эриком Флоренцано, и вот тщательная презентация о запуске Django с gunicorn от автора проекта, Бенуа Шено.

Что бы вы ни выбрали, вы будете чувствоватьправо @ домой.

5 голосов
/ 12 февраля 2011

Я недавно настроил свое приложение на Django, и это руководство было всем, что мне было нужно.http://blog.stannard.net.au/2010/12/11/installing-django-with-apache-and-mod_wsgi-on-ubuntu-10-04/

Таким образом, по сути, процесс выглядит следующим образом:

  1. Настройка другого сервера для обслуживания статических файлов (например, Nginx) на порту 80.
  2. Настройка Apache на некоторыхдругой порт.
  3. Запустите приложение django на apache, используя mod_wsgi
  4. Обратный прокси-сервер для всех нестатических / не медиа-файлов на apache + mod_wsgi / django

Дайте мне знать, на каком этапеВы застряли.

3 голосов
/ 13 февраля 2011

Вот как я это делаю на своем Mac, используя Apache, Python и Django из Mac Ports.Это не обязательно лучший подход, но он работает для меня.

У меня есть следующие каталоги верхнего уровня:

  • lib: код Python, с settings.py в lib/settings.py
  • static: вещи, которые будут обслуживаться Apache, например, медиа и CSS
  • tools: инструменты разработки, например, сценарии развертывания.

Итак, вот конфиг Apache для примера сайта, затем посмотрите скрипт Django WSGI ниже:

<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>

Скрипт Django WGCI находится в 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()
...