Использование встроенного веб-сервера Django в производственной среде - PullRequest
12 голосов
/ 01 февраля 2011

Я собираюсь настроить простое приложение Django, работающее в производственной среде на компьютере с Linux.В приложении будет очень мало трафика - менее 100 загрузок страниц в день.Можно ли использовать для этого встроенный веб-сервер Django или мне следует установить Apache и mod_wsgi?Если да, то каковы причины этого?Возможно, безопасность?

ОБНОВЛЕНИЕ

ОК, ясно, что мне не следует использовать встроенный сервер.Некоторые из альтернатив Apache выглядят интересно.Есть ли тот, который более популярен / чаще используется с Django?

Ответы [ 4 ]

22 голосов
/ 01 февраля 2011

Можно ли использовать встроенный веб-сервер Django для этого

номер

Должен ли я установить Apache и mod_wsgi?

Да.

Если так, то каковы причины этого? Безопасность возможно?

Частично.

Что еще более важно, маленький игрушечный сервер Django является однопоточным, и любое зависание в вашем коде приводит к зависанию сервера. Это означает, что когда два пользователя щелкают почти одновременно, запрос первого пользователя должен пройти весь путь через Django, прежде чем запрос второго пользователя может даже начаться.

И это должно будет включать безумно медленную скорость загрузки на рабочий стол.

Apache (как и все альтернативы, lighttpd или nginx) является многопоточным. Самая медленная часть транзакции - загрузка из Apache на рабочий стол. Вы не хотите, чтобы код Python (и Django) обрабатывал это однопоточным способом. Даже для нескольких пользователей.

Кроме того, вы не знаете, что Django обслуживает статические носители (то есть файлы библиотек CSS и JS.)

Одна медленная точка в вашем приложении не повлияет на общую пропускную способность системы, если установлены Apache и mod_wsgi. Страница вывода одного запроса может медленно загружаться на рабочий стол ПК параллельно с выводом другого пользователя.

15 голосов
/ 01 февраля 2011

НЕ ИСПОЛЬЗУЙТЕ ЭТОТ СЕРВЕР (встроенный веб-сервер Django) в настройках производства Он не прошел аудит безопасности или тесты производительности.

http://docs.djangoproject.com/en/dev/ref/django-admin/#runserver-port-or-address-port

Но вы не должны использовать Apache, если не хотите. Вы можете напрямую использовать Нерест , Gunicorn и т.д.

Чероки также прост в настройке.

12 голосов
/ 02 февраля 2011

Используйте nginx + gunicorn.

Nginx: пять строк конфигурации. Gunicorn: две линии конфигурации. Это просто и эффективно. Для лучшего контроля вы можете запустить процесс gunicorn с помощью supervisord.

И gunicorn, и supervisord доступны для установки с помощью pip, а nginx доступен практически в любом дистрибутиве в пуле пакетов по умолчанию.

3 голосов
/ 02 февраля 2011

Встроенный сервер Django не был создан для производства. Есть много причин, в основном безопасность и эффективность. Рекомендуемый способ - использовать mod_wsgi, который описан в документации здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...