Обслуживание 2 сайтов Django с одинаковым кодом
Я обслуживаю сайт django с помощью apache и wsgi, используя конфигурацию apache следующим образом:
Alias /media/ /var/www/media/
Alias /files/ /var/www/files/
WSGIDaemonProcess fc processes=5 threads=5 display-name=%{GLOBAL}
WSGIProcessGroup fc
WSGIScriptAlias / /home/path/to/django.wsgi
Приложение обслуживается в корневом каталоге хоста. Теперь я хотел бы изменить это так, чтобы я мог обслуживать его по адресу http://host/app1, а другой, с другой настройкой django, по адресу http://host/app2.
Как я могу изменить конфиг, чтобы сделать это?
Спасибо
2 ответа
Вам понадобится набор WSGI*
директивы для каждого проекта. Этот второй параметр для WSGIScriptAlias
сообщает Apache, где проект находится в дереве; WSGI удаляет этот префикс перед передачей URL-адреса в средство распознавания URL-адресов Django.
Например:
WSGIDaemonProcess app1 threads=15
WSGIScriptAlias /app1 /var/www/django_project1/django.wsgi
<Location /app1>
WSGIProcessGroup app1
</Location>
WSGIDaemonProcess app2 threads=15
WSGIScriptAlias /app2 /var/www/django_project2/django.wsgi
<Location /app2>
WSGIProcessGroup app2
</Location>
Я не пытался оптимизировать это; Там может быть лучший способ. Но это должно заставить вас бежать.
Вы можете попробовать сделать другую папку со вторым settings.py
и создавать символические ссылки на ваши приложения, локали, статические, шаблоны, urls.py и т. д.
У меня есть несколько проектов, использующих одни и те же приложения, поэтому я положил их в отдельную папку, которую я добавил в путь к Python. Я также использую одну и ту же базу данных для обоих сайтов, но у меня разные SITE_ID, поэтому я могу указать, на каком сайте я хочу иметь свой контент. Таким образом, у меня могут быть совершенно разные сайты, использующие разные шаблоны, стили и изображения с одинаковым содержанием. Если сценарии JS одинаковы на обоих сайтах, я создаю символическую ссылку.