Отдельные серверы для обслуживания приложения django и его содержимого?

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

Я не совсем понимаю, что это значит на http://docs.djangoproject.com/en/dev/howto/deployment/modwsgi/

Мы рекомендуем использовать отдельный веб-сервер - т.е. тот, на котором также не работает Django - для обслуживания мультимедиа. Вот несколько хороших вариантов:

lighttpd, Nginx, TUX, урезанная версия Apache, чероки

Означает ли это, что я должен обслуживать Django в одном экземпляре Apache (через mod_wsgi), а затем обслуживать его содержимое в другом экземпляре Apache или одной из указанных выше альтернатив? Я могу сделать это на том же выделенном виртуальном сервере, верно? Если да, какой-нибудь совет, как мне это сделать?

Спасибо!

3 ответа

Для большинства людей нет необходимости в отдельном медиа-сервере. Растет критика по поводу того, что документация Django слишком либеральна, чтобы подталкивать людей в этом направлении, когда в этом нет необходимости.

Поэтому не беспокойтесь изначально, и если вы используете mod_wsgi, используйте веб-сервер Apache для статических носителей. Тем не менее, рекомендуется убедиться, что вы запускаете приложение WSGI в режиме демона mod_wsgi, поскольку таким образом процессы, обслуживающие статические файлы, будут тонкими и не будут вызывать накладных расходов по сравнению с действительным динамическим веб-приложением.

Если вы слишком обеспокоены использованием памяти, прочитайте также:

http://blog.dscpl.com.au/2009/11/save-on-memory-with-modwsgi-30.html

Посмотрите, как все это происходит, и только когда сам Apache выглядит недостаточно, затем обратите внимание на использование другого сервера для обработки мультимедиа, предпочтительным вариантом является использование nginx для обработки статических носителей, при этом nginx также действует как прокси-сервер для Apache / mod_wsgi. Использование nginx на самом деле позволяет Apache / mod_wsgi работать лучше, а использование nginx в отдельном домене - нет.

По сути, это говорит о том, что вы должны использовать apache с помощью mod_wsgi для обслуживания приложения django и использовать более легкий веб-сервер, такой как nginx, для обслуживания статического контента.

Например.

www.yourapp.com -> apache -> mod_wsgi -> ваше приложение django

static.yourapp.com -> nginx

Разделяя ваши проблемы, вы можете настроить свой экземпляр apache, чтобы он был вашим самосвалом, выполняющим тяжелую обработку, а ваш сервер nginx был легким и быстрым, как гоночный автомобиль, обслуживающий множество небольших статических файлов.

Если вы сконфигурируете nginx так, чтобы он обрабатывал весь веб-трафик, вы можете реверсировать прокси все запросы django на apache за ним, перехватывать все статические файлы и обслуживать их непосредственно из nginx.

см. эти ссылки для получения дополнительной информации.

http://codespatter.com/2009/04/23/how-to-speed-up-your-django-sites/

django: подача статических файлов через nginx

https://serverfault.com/questions/122809/django-serving-static-files-through-nginx

https://serverfault.com/questions/199038/serving-static-files-fails-nginx

Кен прав в своих оценках и рекомендует обслуживать все, что находится за прокси NGINX. Это путь.

Ваши приложения и медиа-серверы могут быть на одном сервере или на разных. Для большинства приложений это не имеет значения, и хорошо подавать мультимедиа и приложения с одного компьютера.

Если вы наблюдаете за большим количеством пользователей и интенсивным трафиком, разбиение медиасервера на его собственную машину предотвратит сбой друг друга и даст вам больше гибкости.

Проверьте Gunicorn, если вы еще этого не сделали, так как это молниеносный, простой в развертывании сервер приложений, и это новинка.

Другие вопросы по тегам