несколько проектов django, mod_wsgi, один домен

У меня есть два разных «проекта» Django, которые я хочу запустить в одном домене, используя mod_wsgi. Я полагаю, что с mod_python был способ сделать это, когда определенные пути URL-адресов были бы сопоставлены с одним проектом Django, а другие пути сопоставлены с другим проектом, и все это на уровне сервера.

Можно ли это сделать с помощью mod_wsgi, и если да, то как?

Вещи, которые я рассмотрел: что входит в описание виртуального хоста Apache, что входит в файлы application.wsgi и т. д. Но я не понял, как именно это сделать.

Спасибо!


person DavidG    schedule 12.05.2010    source источник


Ответы (2)


Это не должно быть сложно. Это просто вопрос установки директивы WSGIScriptAlias — вам понадобятся две из них, по одной для каждого пути, каждая из которых указывает на отдельный файл .wsgi, содержащий настройки вашего проекта.

person Daniel Roseman    schedule 12.05.2010
comment
Пометка как ответ была бы полезна для тех, кто столкнется с этим в будущем. - person grantk; 18.05.2011

Я также работаю с Apache и запускаю несколько проектов Django с одним доменом. Вам нужно сделать всего две вещи:

  1. Измените файлы виртуального хоста

    Поскольку я использую Debian, у меня есть один файл vhost для каждого домена, который я размещаю. В вашем файле vhost должно быть несколько разделов vhost. По одному на каждый проект. Внутри этих разделов вы можете определить WSGIScriptAlias.

    <VirtualHost *:80>
      ...
     WSGIScriptAlias / /path/to/project1.wsgi
     ...
    </VirtualHost>
    
    <VirtualHost *:80>
      ...
      WSGIScriptAlias / /path/to/project2.wsgi
      ...
    </VirtualHost>
    

    Конечно, вы должны добавить всю другую необходимую информацию. Проект 1 и 2, безусловно, будут иметь разные поддомены. Например, project1.yourdomain.com и project2.yourdomain.com.

  2. Запишите файлы *.wsgi

    Существует множество способов записи и хранения файлов *.wsgi. Я не знаю никаких лучших практик. В моем случае я храню их в папке моего проекта.

    Вот пример:

    import os
    import sys
    os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
    sys.path.append('/path/to/your/project')
    import django.core.handlers.wsgi
    application = django.core.handlers.wsgi.WSGIHandler()
    

    Я видел много других файлов *.wsgi с большим количеством «волшебства». Но это должно заставить вас начать. Вы можете найти множество примеров в Интернете.

Надеюсь это ответит на твой вопрос. Не бойтесь задавать дополнительные вопросы.

person Jens    schedule 12.05.2010
comment
Спасибо, Йенс, но мне не нужны отдельные поддомены (если это возможно). Мне нужен один домен для нескольких проектов, но с URL-адресами, сопоставленными с соответствующим проектом на уровне сервера. - person DavidG; 13.05.2010
comment
Итак, вы хотите www.yourdomain.com/project1/ и www.yourdomain.com/project2/ ?? - person Jens; 13.05.2010
comment
Да, в значительной степени. (На самом деле я хочу, чтобы project1 был www.yourdomain.com, а project2 — www.yourdoamin.com/project2...) - person DavidG; 15.05.2010
comment
Удалось ли вам сделать это так, как вы хотели? Я хочу сделать именно это - person barrigaj; 24.03.2014