“платформа сайтов” на единственном django экземпляре

У меня была та же проблема.

rvm reinstall 2.1.3 --disable-binary

работал для меня (на основе Fresh Installs of RVM и Ruby 2.1.1 - ошибка библиотеки dyld / pathing ).

6
задан Jiaaro 28 March 2011 в 15:45
поделиться

1 ответ

Для стандартного Django у вас должен быть уникальный settings.py для каждого сайта ... потому что SITE_ID определен в settings.py и является ключ, для которого сайт обрабатывает этот запрос.

Другими словами, SITE_ID является глобальным для вашего экземпляра, и поэтому вам нужен экземпляр для каждого сайта.

У вас может быть общий urls.py если вы хотите, потому что ничто не мешает вам использовать один и тот же ROOT_URLCONF во всех файлах settings.py вашего сайта ... или вы можете иметь разные файлы для каждого сайта. В этом случае вы захотите включить дополнительные URL-адреса, чтобы не повторяться для любых распространенных URL-адресов.

Есть как минимум два метода, которые вы можете попробовать использовать из одного экземпляра:

  1. Используйте apache + mod_wsgi и используйте директивы WSGIApplicationGroup и / или WSGIProcessGroup . Я никогда не нуждался в них раньше, поэтому не могу быть полностью уверен, что они будут работать так, как вы хотите, но независимо от того, вы определенно можете использовать mod_wsgi в режиме демона, чтобы значительно улучшить объем памяти.

  2. Вы можете поиграть с промежуточным ПО Django, чтобы отрицать / разрешить URL-адреса на основе имени хоста запроса (см. HttpRequest.get_host () в документации Django). В этом отношении, даже если это немного снизит производительность, вы можете добавить декоратор ко всем вашим представлениям, который проверяет входящий хост.

10
ответ дан 8 December 2019 в 18:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: