Назад | Перейти на главную страницу

Легкий веб-сервер для Django с небольшими рабочими нагрузками

Я пишу небольшое приложение на Django, которое будет использоваться в качестве интерфейса администратора для набора приложений, обычно настраиваемых текстовыми файлами. Он не будет делать много (анализировать вводимые пользователем данные, преобразовывать записи db в плоские файлы и отображать красивые таблицы с информацией) и, скорее всего, будет использоваться не более чем одним пользователем за раз.

Единственным ограничением является то, что сервер, на котором он будет работать, имеет низкие характеристики (Pentium M 1,8 ГГц, 512 МБ ОЗУ), и я хочу, чтобы большая часть его вычислительной мощности была доступна для управляемых приложений, а не для интерфейса управления. Для записи я использую CentOS 5.

Какой веб-сервер я могу использовать? Пока что я собрал следующие варианты и мнения:

Вы можете порекомендовать мне хорошее решение для такой среды? Я не сосредоточен на больших рабочих нагрузках или параллелизме (как большинство людей, задающих подобные вопросы), я просто хочу, чтобы он использовал как можно меньше оперативной памяти и процессорного времени в режиме ожидания или для отдельных сеансов.

Кроме того, обратите внимание, что у меня нет большого опыта в развертывании веб-серверов, обратных прокси-серверов и т. Д. (Хотя я знаю основы и могу ориентироваться в Google), поэтому я был бы очень признателен за помощь людей, у которых есть опыт с такого рода проблемами.

Одно из самых простых решений для настройки, которое, на мой взгляд, работает очень хорошо: nginx вместе с gunicorn.

Для 'gunicorn' вам нужно всего лишь сделать что-то вроде:

$ cd path/to/yourdjangoproject
$ gunicorn_django --workers=4

И довольно стандартная настройка nginx для этого:

server {
    ...

    location / {
        proxy_pass http://127.0.0.1:8000;
        break;
    }
}

Конечно, лучше, чем использовать fcgi, и в зависимости от провала, но если вы не против испачкать руку, я бы посоветовал вам попробовать nginx+uwsgi как предложил zaub3r3r.

Учитывая недостаток опыта и его великолепный графический интерфейс управления, рекомендую Чероки. Быстрый и простой в использовании веб-сервер со встроенным мастером настройки проекта Django.

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

Идея о том, что ядро ​​Apache каким-то образом тяжеловесно, является в некоторой степени мифом - оно может быть настолько мощным или легким, насколько вам нужно, благодаря модульной конструкции.

Это дает дополнительное преимущество работы с существующим дистрибутивом и системой обновлений.

PS: ОС с радостью заменяет неиспользуемые страницы на диск, когда приложения работают, но интерфейс администратора веб-сервера недоступен. Доверяйте ОС, чтобы она всегда оставалась резидентной, когда ей это нужно.

PPS: модуль DIMM емкостью 2 ГБ стоит меньше, чем ваше время, потраченное на ввод этого запроса. Найдите время, чтобы провести мета-анализ своего вопроса.

На мой взгляд, решение non plus ultra - это nginx + uwsgi (его немного сложнее настроить, потому что вам нужно скомпилировать его самостоятельно и настроить больше). Самый простой и рекомендуемый - Apache + mod_wsgi. Я думаю, что хорошо настроенный Apache2 с mod_wsgi - правильный выбор для вас.

Django (Python) + веб-сервер? Тогда, может быть, взгляни на Торнадо тоже (хотя он может справиться с гораздо большим, чем вы хотите).