Развертывание приложения Django - PullRequest
3 голосов
/ 28 октября 2011

Мне очень жаль за такой простой вопрос - я новичок в разработке WSGI и благодарен за любое терпение, которое вы можете себе позволить.

Я сделал приложение для Django;отлично работает в режиме разработки.Я запускаю:

python manage.py runserver

и затем направляю свой браузер на 127.0.0.1:8000, и вуаля, есть мое приложение.

Отсюда я абсолютно не могу выяснить, как запустить мое приложение в производственном режиме.Я прочитал несколько страниц вот так и эту и несколько других на StackOverflow.Но я понятия не имею, куда даже направить мой браузер, чтобы увидеть, работает ли моя страница.

Я установил apache2, mod_python и т. Д., Но я думаю, проблема в том, что мое недоразумение находится на таком более базовом уровне.Когда я делал программы CGI в прошлом, я направлял свой браузер на webroot/file.html с формой, которая вызывает cgi-bin/file.cgi, которая генерирует вывод html.Я не знаю, должен ли я перейти на страницу .wsgi и т. Д.

В предположении, что я должен перейти на .wsgi file, я также попытался создать файлсодержащий:

import os
import sys

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

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

path = '/home/orserang/nonparametric-protein/src/www/mysite$'
if path not in sys.path:
        sys.path.append(path)

и добавленный

WSGIScriptAlias / /path/to/mysite/apache/django.wsgi

к моему apache2/httpd.conf файлу, так что его содержимое:

<Location "/mysite/">
    SetHandler python-program
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE mysite.settings
    PythonOption django.root /mysite
    PythonDebug On
    PythonPath "['/home/orserang/nonparametric-protein/src/www/mysite'] + ['/home/orserang/nonparametric-protein/src/'] + sys.path"
    WSGIScriptAlias /mysite /home/orserang/nonparametric-protein/src/www/mysite/django.wsgi
</Location>

Но при перезапуске apache он говорит:

Синтаксическая ошибка в строке 8 файла /etc/apache2/httpd.conf:
WSGIScriptAlias ​​здесь не разрешена

Учитывая, что я неЯ даже не знаю , где Я должен указать своему браузеру, чтобы перейти на страницу Django wsgi, я подумал, что есть что-то простое, что я делаю совершенно неправильно.

Возможно, приложения Django WSGI требуютчто-то для запуска в фоновом режиме, которое будет прослушивать запросы (а не проходить через apache)?

Онлайновая документация по Django только для представлений и баз данных является существенной по сравнению с документацией для развертывания;поэтому я думаю, что это так просто.

Большое спасибо за вашу помощь!

Ответы [ 4 ]

1 голос
/ 05 июня 2012

Я написал сценарий оболочки, который развертывает проект Django на Apache для Linux,

https://github.com/mukulu/shell-scripts/blob/master/deploy-django.sh

Вам нужно только настроить пару переменных в первых строках кода, и это выяснит остальное.

Он в значительной степени проверяет и устанавливает зависимости для django, пишет конфигурации apache, которые развертывают ваш проект, и перезапускает сервер.

Я планирую переписать это на python (я написал это в спешке) Не стесняйтесь повторно использовать.

Переменные:

SITE_PREFIX="/djangoproject"

MEDIA_URL="/media"

ADMIN_MEDIA_PREFIX="/static/admin/"

MEDIA_ROOT=""

DJANGO_VERSION="1.3.1"

APACHE2_CONFIG="/etc/apache2/conf.d"     #Apache configurations directory in yoru system.
1 голос
/ 28 октября 2011

Вы смешиваете методы развертывания mod_python и mod_wsgi. Избавьтесь от всего, что есть в директиве Location, кроме строки WSGIScriptAlias.

1 голос
/ 28 октября 2011

Django Book 2.0 имеет обзор об этом. Обычно это не связано с Django документами:

Глава 12: Развертывание Django

Посмотрите на раздел «Использование Django с Apache и mod_python».

0 голосов
/ 28 октября 2011

Это может быть не для новичка, но вы можете взглянуть - http://packages.python.org/django-fab-deploy/

Это библиотека для автоматизации процесса развертывания.Он поддерживает серверы, основанные преимущественно на Debian Lenny или Squeeze.

...