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

Nginx + GUnicorn + Flask + www-data user - блокировка файлов

У меня есть несколько довольно простых вопросов о том, что я развертываю приложение Flask в Gunicorn (19.0-1) на Ubuntu (14.10) в сочетании с Nginx.

Поскольку это приложение находится рядом с Web2Py, я следил за руководство по блокировке веб-сайта, созданного Web2Py и применил ту же стратегию для моего приложения Flask.

В этом примере рабочие группы Gunicorn запускаются как пользователь www-data, а файлы и источник в / var / www заблокированы путем размещения группы www-data как владельца, а www-data как группы.

Однако меня смущают несколько моментов:

  1. Хотя рабочие процессы Gunicorn работают как www-данные, демон сервера Gunicorn работает как root. Будет ли это поводом для беспокойства?
  2. Поиск Nginx + Gunicorn + Flask приводит к сайтам, которые рекомендуют запускать Gunicorn через supervisord, а не как службу init.d. Стоит ли подумать о переходе?
  3. Поскольку учетная запись 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 для разработки. Постановка и разработка - это копии продукции.