Manevant
@Manevant
Учу Python

Как запустить uwsgi сервер без перехвата консоли?

Стоит связка django+uwsgi+nginx.

Обычно запускаю сервер из консоли - uwsgi и набор аргументов
uwsgi --socket mysite.sock --module mysite.wsgi --chmod-socket=666

После чего uwsgi перехватывает консоль.

2 Вопроса.

1. Как запустить uwsgi без перехвата консоли? (По факту если соединение по ssh разрывается - сервер останавливается)

2. Есть ли возможность сделать uwsgi сервером для разработки? Для того чтобы он автоматом перезагружался при изменении кода и удобном запуске через python manage.py runserver ? (Как на сервере разработки по умолчанию).

Заранее большое спасибо.
P.S. Я нуб.
  • Вопрос задан
  • 4474 просмотра
Решения вопроса 1
Assargin
@Assargin
Перед ответом смотрю наличие ✔ в ваших вопросах
Только недавно попробовал небольшой тестовый проект развернуть (сам в Python&Django пока двухмесячный опыт только имею). В итоге всё получилось, запустил uwsgi в так называемом "Emperor mode". Используется virtual environment. Устанавливается uwsgi (pip install) в систему, кстати, а не в venv.

Создается файл /etc/init/uwsgi.conf с содержимым:
# Emperor uWSGI script

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

exec uwsgi --master --die-on-term --emperor /etc/uwsgi/vassals


В папку /etc/uwsgi/vassals помещаются конфиги проектов (по одному на каждый проект), с примерно таким содержимым:
# mysite_uwsgi.ini file
[uwsgi]

## process-related settings
# master
master          = true
# maximum number of worker processes
processes       = 3
# the socket (use the full path to be safe
socket          = /home/user/virtualenvs/mysite/uwsgi.sock
# ... with appropriate permissions - may be needed
chmod-socket    = 666
# clear environment on exit
vacuum          = true
# user, group
uid=mysiteuser
gid=mysitegroup

## Django-related settings
# the virtualenv (full path)
home            = /home/user/virtualenvs/mysite/
# the base directory (full path)
chdir           = /home/user/virtualenvs/mysite/www
# Django's wsgi file
module          = mysite.wsgi


Теперь uswgi управляется как сервис: sudo service uwsgi (start|status|stop|restart и т.п.) и никаких занятых консолей.

Насчет автоперезагрузки при изменении содержимого: пока не пробовал, но думаю вот оно
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
un1t
@un1t
А зачем его так запускать?
Создай конфиг
/etc/nginx/sites-available/example.conf

Вот пример
[uwsgi]
plugins=python27
socket=/var/run/example.sock
virtualenv=/home/webapps/example.com/example/python/
module=wsgi
callable=app
pythonpath=/home/ilya/webapps/example.com/example
chdir=/home/ilya/webapps/example.com/example


Потом рестартуем uwsgi и все.
sudo service uwsgi restart
Ответ написан
Комментировать
@v_prom
для разработки можно использовать screen. по крайней мере при разрыве ssh останавливаться не будет.
Ответ написан
Комментировать
SowingSadness
@SowingSadness
web-разработчик
Достаточно указать --pidfile
uwsgi --socket mysite.sock --module mysite.wsgi --chmod-socket=666 --pidfile /run/uwsgi.pid
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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