несколько проектов django, mod_wsgi, один домен - PullRequest
12 голосов
/ 12 мая 2010

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

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

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

Спасибо!

Ответы [ 2 ]

8 голосов
/ 12 мая 2010

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

7 голосов
/ 12 мая 2010

Я также работаю с 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 файлов с большим количеством "волшебства". Но это должно помочь вам начать. Вы можете найти множество примеров по всему интернету.

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

...