2015-08-17 1 views
2

Я разрабатываю простое приложение MVP, и пришло время развернуть его на моем рабочем сервере для более тщательного внешнего тестирования. Он никогда не получит тяжелую нагрузку на трафик, мне просто нужна небольшая группа пользователей для тестирования.Зачем мне нужно использовать веб-сервер, промежуточное программное обеспечение и т. Д. Для простого приложения Flask?

Теперь я всегда шел с тремя слоями. Nginx/Apache> Guncicorn/CherryPy/etc> Flask/Django/Pyramid/Bottle/etc

Я ЗНАЮ, что это убедительная мудрость. Но я никогда не собирался спрашивать, почему. Для чего я все это настраиваю?

+0

Какие альтернативы вы сравниваете? Если это просто для тестирования, и вы не заботитесь о рисках производительности и безопасности, вы можете использовать сервер по умолчанию, встроенный в такие вещи, как «Бутылка». – BrenBarn

+0

Это частично объясняется в http://stackoverflow.com/questions/14814201/can-i-serve-multiple-clients-using-just-flask-app-run-as-standalone. Удивленный, у вас нет уровня базы данных. Я считаю, что он обычно важен и будет иметь его вместе с быстрым многопоточным веб-сервером и веб-картой. Существует тенденция к замене веб-сервера многопроцессорной структурой async IO, такой как Akka (актеры), которая используется, например, с Play (веб-каркас) в стеке TypeSafe. –

+1

Просто используйте * CherryPy * в качестве рамки и откатывайте ее самостоятельно как HTTP-сервер, что хорошо для низкого трафика. Чем меньше движущихся частей, тем лучше. Когда трафик увеличивается или необходимы дополнительные функции, вы можете поставить * nginx * перед ним, так как оба говорят HTTP. – saaj

ответ

1

Django docs есть это, чтобы сказать о включенном Dev сервера:

Мы включили это с Django, так что вы можете развивать вещи быстро, без необходимости иметь дело с настройкой сервера производства - такие, как Apache - пока вы не будете готовы к производству .

Пришло время отметить: не используйте этот сервер ни в чем, , напоминающем производственную среду. Он предназначен только для использования при разработке . (Мы в бизнесе создания веб-структур, а не веб-серверы .)

Два преимущества Apache/Nginx над сервером Дев, которые приходят на ум сразу:

  • Джанго dev сервер не разработан с учетом безопасности. Apache/Nginx, предназначенные для работы через сеть, имели (и продолжают прилагать) усилия по поиску/устранению уязвимостей, которых у Django-dev-сервера просто не было.
  • Многие запросы, которые вы подаете, будут статическими (изображения, JS, CSS). Nginx и Apache будут намного эффективнее обслуживать эти активы, чем сервер, написанный на Python.
+0

Так почему бы не просто нацелить nginx прямо на django? почему промежуточное ПО? – Ryan

+0

MIddleware имеет конкретное значение, которое здесь действительно не подходит. Я предполагаю, что вы имеете в виду uWSGI/Gunicorn. Одно преимущество: управление процессами и мониторинг. Серверный процесс, управляемый uWSGI, который будет аварийно завершен, будет автоматически заменен. Если вы только запускаете сервер dev, ваш производственный сайт теперь отключен. – chucksmash

+0

Достаточно честно, я не совсем уверен, что будет подходящим термином (вот почему я здесь задаю вопрос, если честно). Управление процессом? Мониторинг?Разве это не то, что я использую, чтобы поддерживать процесс (systemd, или что у вас есть) – Ryan

Смежные вопросы