Как развернуть приложение Django в под-URL? - PullRequest
3 голосов
/ 09 января 2010

Мне нужно настроить среду разработки django, которая будет общедоступна в Интернете (я делаю это для школы, и мои проекты должны быть доступны для просмотра моим профессором, это не та установка, которая требует большой безопасности). У меня есть виртуальный сервер под управлением Ubuntu 8.04 LTS.

Мне нужно иметь несколько приложений django, работающих в подкаталогах моего основного сайта. То есть мне нужно, чтобы mysite.com был статической страницей, mysite.com/wordpress - моим блогом WordPress, а mysite.com/django1 mysite.com/django2 и т. Д. - проектами django.

Я использую apache и буду использовать sqlite или mysql.

Похоже, что существует множество разных способов установки и настройки django, так как есть сайты, предлагающие советы, и все они предполагают, что единственным проектом будет корень сайта. Я бы очень признателен за помощь, спасибо.

Ответы [ 3 ]

3 голосов
/ 10 января 2010

Вы можете использовать

WSGIScriptAlias /django1 /home/keratacon/www/django1/wsgi.py
WSGIScriptAlias /django2 /home/keratacon/www/django2/wsgi.py

в вашем apache + mod_wsgi config при условии, что wsgi.py - это имя вашего скрипта wsgi.

0 голосов
/ 10 марта 2012

Этот блог объясняет решение (при условии, что используется mod_wsgi, с nginx / uwsgi решение аналогично , очевидно, в nginx / uwsgi это не обязательно).

Первый параметр WSGIScriptAlias ​​- /sub-url будет удален из URL-адреса запроса, а остальные будут отправлены в ваше приложение django. Если все URL-адреса вашего Django-приложения начинаются с /sub-url (которые удаляются mod_wsgi), вы не сможете отображать представления по этим URL-адресам, если только вы не «повторно вставите» /sub-url в часть пути запроса.

import django.core.handlers.wsgi

_application = django.core.handlers.wsgi.WSGIHandler()
def application(environ, start_response):
    #the line below will re-append the sub-url to all urls
    environ['PATH_INFO'] = environ['SCRIPT_NAME'] + environ['PATH_INFO']
    #this one will make django think that it's the only thing running on the server
    environ['SCRIPT_NAME'] = '' # my little addition to make it work
    return _application(environ, start_response)

Кроме того, в вашем urls.py все URL должны начинаться с префикса вашего интереса.

Наконец, WSGIScriptAlias ​​должен совпадать с вашим под-URL:

#the below line will "take-out" the sub-url and pass the rest
#to your wsgi script
WSGIScriptAlias /sub-url /path/to/wsgi_script

Где файл /path/to/wsgi_script должен содержать определение application, как показано в первом фрагменте кода.

Чтобы сделать настройку "sub-url" явным в Django, эквивалентное исправление пути запроса должно происходить в структуре Django.

0 голосов
/ 10 января 2010

В документации Django есть страница, описывающая развертывание на Apache . Также есть раздел о запуске нескольких установок на одном сервере .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...