2017-01-04 17 views
0

У нас есть веб-приложение, которое работает с django, python и PostgreSQL. Мы также используем virtualenv.Запуск Django с python как daemon

Чтобы начать веб-службу, мы сначала активируем virtualenv, а затем запустите python как службу на 8080 с nohup.

Но после некоторого времени процесс nohup не умирает. Есть ли способ запустить службу в качестве демона, такого как apache, или использовать что-то вроде monit?

Я новичок в этом, пожалуйста, простите мои ошибки

+4

В документах Django есть раздел о [развертывании] (https://docs.djangoproject.com/en/1.10/howto/deployment/) – Alasdair

+0

проверить http://gunicorn.org/ – intelis

ответ

1

Это может быть хорошей идеей, чтобы развернуть приложение с помощью Apache или ngnix. Существует официальная Джанго документация о том, как сделать это с апача - https://docs.djangoproject.com/en/1.10/howto/deployment/wsgi/modwsgi/

Apache поддерживает виртуальную среду - просто добавьте python-home=<path_to_your_virtual_env> к WSGIDaemonProcess директивы при использовании режима демона из mod_wsgi:

WSGIDaemonProcess django python-path=/opt/portal/src/ python-home=/opt/venv/django home=/opt/portal/ 

Лучшие практики как использование mod_wsgi и виртуальные среды объясняются в:

1

Таким образом, команда runserver должна использоваться только в тестовых средах. И точно так же, как @Alasdair сказал, Django docs уже имеет интересную информацию об этой теме.

Я бы предложил использовать gunicorn в качестве wsgi с nginx в качестве обратного прокси. Вы можете найти более подробную информацию here

И я бы предложил использовать supervisor для контроля и управления своими рабочими-оружейниками. Более подробную информацию можно найти here