Подтвердить что ты не робот

Apache или Nginx для обслуживания приложений Django?

Я хочу развернуть веб-приложение Django, и поэтому мне нужно выбрать веб-сервер для работы с файлами Python.

Я должен упомянуть, что мой производственный сайт будет находиться на одном сервере, на котором будет размещаться база данных и веб-сервер. Как импульс выбирает, я хочу переместить базу данных на выделенный сервер и т.д.

Вот мои вопросы:

  • Должен ли я использовать один веб-сервер или два? Контекст этого вопроса заключается в том, что многие люди рекомендуют использовать NginX для обслуживания статических медиафайлов и Apache для обслуживания Python, который вызывает следующие вопросы:
    • Почему мы не можем использовать только один сервер. Я понимаю, что Apache может быть зверь время от времени, поэтому я бы заподозрил, что люди используют NginX для работы с общими статическими медиафайлами и файлами python.
    • При использовании одного сервера, что лучше, Apache или NginX. Я опыт в Apache, но я слышал только хорошие вещи о NginX.
  • В чем преимущества использования FastCGI в отличие от mod_wsgi?

Большое спасибо заранее

4b9b3361

Ответ 1

Должен ли я использовать один веб-сервер или два? Контекст этого вопроса что многие люди рекомендуют использовать NginX для работы со статическими медиафайлами и Apache для обслуживания Python, который вызывает следующие вопросы: Почему мы не можем использовать только один сервер. Я понимаю, что Apache может быть зверем иногда я подозреваю, что люди используют NginX для обслуживания ОБА статические медиафайлы и файлы python.

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

При использовании одного сервера, что лучше, Apache или NginX. Я опыт в Apache, но я слышал только хорошие вещи о NginX.

Как и во всех вопросах "что лучше", это обычно является вопросом предпочтения. Чтобы получить конкретный ответ, вам, вероятно, нужно задать более конкретные вопросы.

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


tl; dr: Я бы пошел на то, что проще настроить и управлять. Лично я бы пошел на nginx и gunicorn, главным образом потому, что это легко и есть много доступных ресурсов, если вы должны застрять.

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

В чем преимущества использования FastCGI в отличие от mod_wsgi?

Различия и использование между WSGI, CGI, FastCGI и mod_python в отношении Python?


статьи для чтения (некоторые старые, некоторые новые);

Ответ 2

Вопрос 1) Вы можете использовать только один сервер, но для обслуживания статических медиа решение, такое как lighttpd или nginx, будет намного быстрее. Я бы придерживался Apache, если вы действительно хотите использовать только один сервер, он обладает всей необходимой гибкостью и является наиболее распространенным веб-сервером.

Вопрос 2) Зависит от вашей цели. Вы можете найти информацию здесь: Развертывание Django (fastcgi, apache mod_wsgi, uwsgi, gunicorn)

Ответ 3

Я не уверен, кто рекомендует вам, что вы используете как Nginx, так и Apache, но это ужасная идея. Какой бы вы ни выбрали, либо просто будет действовать как обратный прокси-сервер, обслуживающий только статические ресурсы и передающий все остальное в подпроцесс, например uwsgi.

Я предпочитаю Nginx, потому что он легкий и очень быстрый из коробки. Apache может быть таким же хорошим, но требует создания из исходного кода и точно знать, какую конфигурацию использовать для соответствия Nginx. Тем не менее, Apache имеет больше возможностей и немного легче работать. Это действительно зависит от вас и потребностей вашего приложения.

Однако, какой бы вы ни выбрали, вам нужен только один - не оба.

Ответ 4

Я думаю, что лучший выбор - virtualenv, uwsgi и nginx. Теперь я изменил все свои серверы, и я очень доволен производительностью.

Вот хороший учебник о том, как настроить веб-сервер http://senya.pl/2011/03/sexy-nginx-uwsgi-stack-for-django-with-virtualenv/

Ответ 5

  • Чем меньше, тем лучше.
  • Лучший способ развернуть приложение Django над Nginx - это uwsgi. Это чистый WSGI и встроенный, поддерживаемый новой версией Nginx.

Ответ 6

Я попытался следовать предложенной ссылке Nicowernli, но senya.pl в этот момент не был. Это похоже на хороший альтернативный учебник.... Попробуем это, просто прочитайте первые 2 главы, но кажется очень полным и действительно шаг за шагом:

http://www.abidibo.net/blog/2012/04/30/deploy-django-applications-nginx-uwsgi-virtualenv-south-git-and-fabric-part-1/

Ответ 7

Я использовал gunicorn + eventlet как сервер Python, а nginx - как обратный прокси с большим успехом. Недавно я переключился на uWSGI, и, похоже, это не хуже, если не лучше. Мне еще нужно попробовать apache и Django, хотя я был пользователем Apache до использования Django. Вот хорошая запись о том, как все это делается: http://radtek.ca/blog/django-production-deployment-via-nginx-and-gunicorn-and-virtualenv/