Отдельные серверы для обслуживания приложения django и его содержимого? - PullRequest
6 голосов
/ 05 апреля 2011

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

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

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

Lighttpd, Nginx, СМОКИНГ, Урезанная версия Apache, Cherokee

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

Спасибо!

Ответы [ 3 ]

7 голосов
/ 06 апреля 2011

Для большинства людей не нужен отдельный медиа-сервер.Растет критика по поводу того, что документация 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 на отдельном домене - нет.

2 голосов
/ 05 апреля 2011

В основном это означает, что вы должны использовать 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

0 голосов
/ 06 апреля 2011

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

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

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

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

...