Запуск нескольких проектов Django под mod_python без использования VirtualHosts - PullRequest
2 голосов
/ 05 октября 2010

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

<Location "/mysite">
    SetHandler python-program
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE mysite.settings
    PythonOption django.root /mysite
    PythonDebug On
    PythonPath "['/path/to/project/parent'] + sys.path"
</Location>

, где mysite варьируется для двух проектов (в директиве Location, DJANGO_SETTINGS_MODULE и django.root).PythonPath также различается.

Когда имеется только одна из двух директив Location, какой бы сайт он не работал, он работает нормально.Любая конфигурация работает в одиночку.

Когда у меня есть обе директивы Location (которые относятся к разным URL-путям), я могу попасть только на один сайт.У меня есть директивы местоположения для "/ portal" и "/ apitest", и когда я перехожу на http://mydomain.com/apitest,, я всегда получаю код от обслуживаемого "/ portal".

Можно ли обслужитьдва сайта django с одного хоста, просто включив несколько директив Location, или нужно использовать VirtualHosts?

Спасибо, Дэвид

1 Ответ

2 голосов
/ 05 октября 2010

Документы показывают, что вам, вероятно, нужно установить разные значения PythonInterpreter для каждого из ваших блоков Location.Устраняет ли это проблему?

Если вам нужно поместить две установки Django в один и тот же VirtualHost (или в разные блоки VirtualHost с одинаковым именем сервера), вам нужно принять особые меры предосторожностичтобы кеш mod_python ничего не испортил.Используйте директиву PythonInterpreter для указания различных директив <Location> для отдельных интерпретаторов:

<VirtualHost *>
    ServerName www.example.com
    # ...
    <Location "/something">
        SetEnv DJANGO_SETTINGS_MODULE mysite.settings
        PythonInterpreter mysite
    </Location>

    <Location "/otherthing">
        SetEnv DJANGO_SETTINGS_MODULE mysite.other_settings
        PythonInterpreter othersite
    </Location>
</VirtualHost>

http://docs.djangoproject.com/en/dev/howto/deployment/modpython/#multiple-django-installations-on-the-same-apacheBlockquoteBlockquotedirectives

...