У меня есть несколько довольно простых вопросов о том, что я развертываю приложение Flask в Gunicorn (19.0-1) на Ubuntu (14.10) в сочетании с Nginx.
Поскольку это приложение находится рядом с Web2Py, я следил за руководство по блокировке веб-сайта, созданного Web2Py и применил ту же стратегию для моего приложения Flask.
В этом примере рабочие группы Gunicorn запускаются как пользователь www-data, а файлы и источник в / var / www заблокированы путем размещения группы www-data как владельца, а www-data как группы.
Однако меня смущают несколько моментов:
Я сам использую Flask с Nginx и Gunicorn, поэтому постараюсь ответить как можно лучше:
1). Может быть, но исходя из моих собственных исследований и опыта, в целом лучше не запускать Gunicorn в режиме демона и вместо этого использовать какой-то выделенный менеджер процессов (например, Supervisor).
2). Supervisor и init.d не служат одной и той же цели. Init.d - это «Демон инициализации», его цель - быть службой, запускающей все другие службы (например, Gunicorn). Supervisor - это диспетчер управления процессами, который можно использовать для запуска других служб, а также для мониторинга и перезапуска их, если что-то пойдет не так. Однако Supervisor по-прежнему нуждается в init.d (или его преемнике Upstart), чтобы запускать его при загрузке. Я предпочитаю использовать Supervisor, потому что он прост в использовании и позволяет мне быстро запускать, останавливать и / или перезапускать рабочие процессы Gunicorn.
3). Обычно у вас есть какая-то специальная среда разработки, которая является копией продакшена. Я лично использую 3 облачных сервера: 1 для производства, 1 для постановки (также известного как полигон для проверки правильности развертывания приложения) и 1 для разработки. Постановка и разработка - это копии продукции.