Создание файла Upstart для python-официантки
У меня есть приложение Django под управлением gunicorn - теперь я хочу заменить его на официантку. Достаточно просто, я установил официантку через apt-get install python-waitress
и запустил его через waitress-serve --port=8080 myproject.wsgi:application
,
Теперь я хочу настроить это для запуска через файл Upstart (я в Ubuntu). Я хочу, чтобы он работал на нормальных уровнях запуска 2, 3, 4 и 5 и приказывал ему останавливаться, когда он находится на любом другом уровне запуска (например, когда система перезагружается, выключается или в однопользовательском режиме). Я также хочу, чтобы Upstart автоматически перезапускал сервис в случае сбоя. Последнее, но не менее важное, мне нужно waitress
работать на порте 80, а не на порте 8080.
Мои вопросы: как мне создать файл Upstart для соответствия этим требованиям? А какие-нибудь еще включения, которые будут полезны дополнениям? Пожалуйста, порекомендуйте; это мой главный рабочий сервер.
Во-вторых, согласно waitress
Сам по себе, кроме возможности использовать его с SSL, есть ли преимущества использования обратного прокси (например, Nginx
) с waitress
? Мое приложение - это тяжелое веб-приложение Django, где пользователи собираются и общаются друг с другом.
1 ответ
Вместо того, чтобы писать собственный сценарий выскочки, я бы порекомендовал взглянуть на другие известные и проверенные в бою решения. Одним из таких популярных решений является супервизор. Это чистый Python и довольно прост в установке и настройке. Если вы устанавливаете с apt-get
он поставляется со всеми необходимыми сценариями для его запуска при перезапуске самой Ubuntu и т. д. (хотя тогда, скорее всего, вы не будете устанавливать последнюю версию supervisor). После установки супервизора все, что вам нужно сделать, это добавить небольшую конфигурацию для вашего процесса веб-сервера. Затем, когда вы запустите супервизор, он будет управлять процессом вашего веб-сервера. Вот пример конфигурации супервизора:
[program:project_name]
command=/path/to/virtualenv/bin/waitress-serve --port=8080 myproject.wsgi:application
directory=/path/to/django/project
autostart=true
autorestart=true
redirect_stderr=True
user=www
Обратите внимание, что супервизор может управлять несколькими процессами, поэтому, если у вас есть другие процессы, которые требуются для запуска вашего веб-приложения, вы также можете добавить их в супервизор.
Что касается преимуществ использования nginx, существует множество других вопросов Stackru по этой теме, поэтому я бы рекомендовал рассмотреть их, а не перечислять подобные идеи здесь. Вот пара, которую я нашел: