Как мне запустить более одного сайта Django на одном сервере с помощью fastcgi? - PullRequest
1 голос
/ 23 апреля 2009

Я запускаю Django на сервере с дюжиной виртуальных хостов. Первый сайт Django, который я собрал, прекрасно работает, но я собираюсь создать второй. Нужно ли запускать второй процесс fastcgi?

Для первого сайта я запускаю fcgi следующим образом:

/home/django/app1/manage.py runfcgi protocol=fcgi host=127.0.0.1 port=8081

Конфигурация nginx для домена указывает на этот процесс fcgi (fastcgi_pass 127.0.0.1:8081).

Для второго сайта, нужно ли запускать еще одну копию fcgi, как в одной fcgi на сайт?:

/home/django/app2/manage/py runfcgi protocol=fcgi host=127.0.0.1 port=8082

А затем направьте конфигурацию nginx в этот процесс (fastcgi_pass 127.0.0.1:8082)?

Или есть какой-то способ обработки нескольких сайтов Django с помощью одного fastcgi? Есть ли лучшая практика для настройки мульти-Django-сервера?

Ответы [ 2 ]

2 голосов
/ 23 апреля 2009

Это зависит от того, что вы подразумеваете под сайтом, и как выглядят ваши конфигурации Django.

Каждый Django settings.py определяет одну и только одну базу данных, одно и только одно дерево urls.py.

Каждый Django имеет один файл settings.py - одну базу данных - одно дерево urls.py.

Если у каждого сайта есть отдельная база данных, им нужен отдельный файл settings.py, а вам нужен отдельный экземпляр fastcgi.

Если все сайты поддерживаются одной базой данных с одним settings.py, то вы можете выжать их из одного экземпляра fastcgi.

Обратите внимание, что обработчик Django urls.py в основном игнорирует имя хоста и номер порта при разборе URL в запросе. Однако, если вы включите модель Sites, вы можете сделать так, чтобы имя виртуального хоста стало частью обработки запроса.

0 голосов
/ 25 апреля 2009

За то, что оно того стоит, вы можете избавиться от накладных расходов tcp и использовать вместо него сокет:

/ home / django / app1 / manage.py протокол runfcgi = сокет fcgi = / var / run / mysite.sock

сокеты должны быть доступны для чтения и записи для пользователя веб-сервера.

...