Подтвердить что ты не робот

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

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

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

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

Спасибо!

4b9b3361

Ответ 1

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

Ответ 2

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

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

    Поскольку я использую 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.

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

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