Назад | Перейти на главную страницу

Как запустить несколько веб-сайтов из одного проекта Django на nginx и uwsgi

Как запустить два веб-сайта или поддомена сайта из единой базы кода Django.

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

Я развертываю с помощью uWSGI-Nginx-Django

Спасибо.

Приложения Django нужно развертывать отдельно на uwsgi. Официальный сайт предлагает использовать режим императора. Сначала тебе нужно написать Выскочка сценарий в /etc/init/uwsgi.conf как это,

# Emperor uWSGI script

description "uWSGI Emperor"
start on runlevel [2345]
stop on runlevel [06]

# uwsgi location
#env UWSGI=/usr/bin/uwsgi
env UWSGI=/usr/local/bin/uwsgi

env LOGTO=<your log folder>

exec $UWSGI --master --die-on-term --emperor /etc/uwsgi/apps-enabled/ --pythonpath /usr/local/lib/python2.7/dist-packages --uid www-data --gid www-data --logto $LOGTO --enable-threads

В / etc / uwsgi / apps-enabled / он будет содержать вашу конфигурацию uwsgi для каждого приложения Django. например /etc/uwsgi/apps-enabled/app1.ini

Вот пример конфигурации, которую я использую.

[uwsgi]
; define variables to use in this script
; process name for easy identification in top
project = <project name>
base_dir = /<your base directory>/
chdir = %(base_dir)

pythonpath = /usr/local/lib/python2.7/dist-packages

http = 0.0.0.0:8000

uid = www-data
gid = www-data

procname = %(project)

; Enable master mode
; uWSGI’s built-in prefork+threading multi-worker management mode, activated by flicking the master switch on. For ; all practical serving deployments it’s not really a good idea not to use master mode.
master = true
master = 1

; run master process as root
master-as-root = true

; This value needs to be tuned
workers = 4

; Create pid file for easier process management
pidfile=/run/uwsgi/%(project).pid

# Specify your Django app here
module = mysite.wsgi:application
#or
#wsgi-file = %(base_dir)/<your wsgi file>.py

log-reopen = true
logto = /<your log directory>

chmod-socket = 666

vacuum = True
enable-threads = True

# Enable stats. View using `uwsgitop localhost:4000`
stats = :4000

; unix socket (referenced in nginx configuration)
socket = /run/uwsgi/%(project).sock

Чтобы запустить два веб-сайта или субдомена сайта из одной базы кода Django, вам необходимо установить свой домен в директиве server_name для каждого приложения Django. Например, /etc/nginx/sites-enabled/yourweb1.conf, который привязан к DjangoApp1

server_name app1.yourweb.com

/etc/nginx/sites-enabled/yourweb2.conf, привязанный к DjangoApp2

server_name app2.yourweb.com

Подробнее о развертывании приложения Django с nginx