Как зайти в Даркнет?!
25th January, 01:11
6
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
895
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
914
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
906
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4351
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Самая чистая и быстрая настройка сервера для Django
Я собираюсь развернуть сайт среднего размера на базе Django. У меня есть выделенный сервер Ubuntu.
Я действительно запутался в том, какой серверный софт использовать. Поэтому я подумал про себя: почему бы не спросить stackoverflow?
То, что я ищу, это:
- Легко настраивается
- Быстрый и легкий доступ к ресурсам
- Могут служить медиафайлы
- Возможность обслуживать несколько djangosites на одном сервере
- Я бы предпочел не устанавливать PHP или что-то еще, что высасывает ресурсы, и для чего я не имею никакой пользы.
Я слышал о mod_wsgi и mod_python на Apache, nginx и lighty. Какие из них плюсы и минусы, и не упустил ли я кого-нибудь?
@Barry: почему-то мне кажется, что Apache-это слишком много для меня. А как насчет альтернатив?
@BrianLy: хорошо, я проверю mod_wsgi еще немного. Но зачем мне нужен Apache, если я обслуживаю статические файлы с помощью lighty? Мне также удалось обслуживать само приложение django с помощью lighty. Разве это плохо в любом случае? Прости за то, что вел себя так глупо :-)
UPDATE : а как насчет lighty и nginx - какие варианты использования являются идеальным выбором?
Поскольку я искал несколько более глубоких ответов,я решил исследовать этот вопрос сам. Пожалуйста, дайте мне знать, если я что-то неправильно понял.
Некоторые общие рекомендации заключаются в использовании отдельного webserver для обработки media. Под отдельным я подразумеваю webserver, который не работает Django. Этот сервер может быть например:
- Документации (Лайти)
- Nginx (EngineX)
- Или какой-нибудь другой легкий сервер
Тогда для Django вы можете пойти разными путями. Вы можете либо:
Подавать Django через Apache и:
модулем mod_python
Это стабильный и рекомендуемый / хорошо документированный способ. Минусы: использует много памяти.
mod_wsgi
Насколько я понимаю, mod_wsgi-это более новая альтернатива. Это, по-видимому, быстрее и проще по ресурсам.
модуль mod_fastcgi веб
При использовании FastCGI вы делегируете обслуживание Django другому процессу. Поскольку mod_python включает интерпретатор python в каждый запрос, он использует много памяти. Это способ обойти эту проблему. Кроме того, есть некоторые проблемы безопасности.
То, что вы делаете, это запускаете свой сервер Django FastCGI в отдельном процессе, а затем настраиваете apache через перезапись, чтобы вызвать этот процесс, когда это необходимо.
Или вы можете:
Обслуживайте Django без использования Apache , но с другим сервером, который поддерживает FastCGI изначально:
(В документации упоминается, что вы можете сделать это, если у вас нет каких-либо особых потребностей Apache. Наверное, причина в том, чтобы сохранить память.)
- Документации
Это сервер, на котором работает Youtube. Он кажется быстрым и простым в использовании, однако я видел отчеты о memoryleaks.
- nginx
Я видел тесты, утверждающие, что этот сервер даже быстрее, чем lighttpd. Хотя это в основном документировано на русском языке.
Другое дело, что из-за ограничений в Python ваш сервер должен работать в раздвоенном режиме, а не в потоковом.
Так что это мое текущее исследование, но я хочу больше мнений и опыта.
Я использую Чероки .
В соответствии с их критериями (зерно соли с ними), она отлично справляется с нагрузкой лучше, чем конфигурационный файл lighttpd и nginx... Но это не то, почему я использую его.
Я использую его, потому что если вы тип cherokee-admin , начинается новый сервер, который вы можете войти в (одноразовый пароль) и настроить весь сервер через красиво-сделано в Webmin. Это особенность убийцы. Он уже спас меня много времени. И это спасает мой сервер много ресурсов!
Что касается django, я запустил ее в качестве процесса резьбовые SCGI. Хорошо работать. Чероки тоже может держать его в рабочем состоянии. Опять же, очень приятная особенность.
Текущая версия РЕПО Ubuntu очень старая, поэтому я бы посоветовал вам использовать их PPA . Удачи.
Как сказал @Barry, в документации используется mod_python . Я не использовал Ubuntu в качестве сервера, но имел хороший опыт работы с mod_wsgi на Solaris. Вы можете найти документацию для mod_wsgi и Django на сайте mod_wsgi .
Быстрый обзор ваших требований:
- Простота установки я обнаружил, что apache 2.2 довольно легко построить и установить.
- Быстро и легко на ресурсах я бы сказал, что это зависит от вашего использования и трафика. * Вы не хотите, чтобы сервер все файлы, используя Apache и использовать LightTPD (Лайти) с сервером статических файлов.
- Может служить media файлов я предполагаю, что вы имеете в виду изображения, flash файлов? Apache может сделать это.
- Несколько сайтов на одном сервере виртуальный сервер хостинга на Apache.
- Лучше не устанавливайте другие расширения , закомментируйте все, что вам не нужно в конфигурации Apache.
Официально рекомендуемый способ развертывания проекта django-это использование mod_python с apache. Это описано в документации. Главное преимущество этого метода заключается в том, что он является наилучшим документированным, наиболее поддерживаемым и наиболее распространенным способом развертывания. Загвоздка в том, что он, вероятно, не самый быстрый.
Будьте проще: Django рекомендует Apache и mod_wsgi (или mod_python). Если обслуживание media файлов является очень большой частью вашего сервиса, рассмотрите Amazon S3 или Rackspace CloudFiles.
Я тоже изо всех сил пытаюсь понять все варианты. В этом блоге я нашел некоторые преимущества mod_wsgi по сравнению с mod_python объяснил.
Несколько сайтов с низким трафиком на небольшом VPS делают потребление RAM основной проблемой, и mod_python кажется плохим вариантом там. Используя lighttpd и FastCGI, мне удалось добиться минимального использования памяти простого сайта Django до 58mib виртуального и 6.5MiB резидентного (после перезапуска и обслуживания одного запроса non-RAM-heavy).
Я заметил, что обновление с Python 2.4 до 2.5 на Debian Etch увеличило минимальный объем памяти процессов Python на несколько процентов. С другой стороны, 2.5's лучшее управление памятью может иметь больший обратный эффект на длительно работающие процессы.
Я использую nginx (0.6.32 взято из Sid) с mod_wsgi . Это работает очень хорошо, хотя я не могу сказать, лучше ли это, чем альтернативы, потому что я никогда не пробовал ни одного. Nginx имеет встроенную поддержку memcached , которая, возможно, может взаимодействовать с промежуточным программным обеспечением кэширования Django (я фактически не использую его, вместо этого я заполняю кэш вручную с помощью python-memcache и аннулирую его при внесении изменений), поэтому кэш полностью обходит Django (моя машина разработки может обслуживать около 3000 запросов в секунду).
Предостережение: nginx’ mod_wsgi очень не любит именованные локации (он пытается передать их в SCRIPT_NAME ), поэтому очевидный ‘ error_page 404 = @django ’ вызовет множество неясных ошибок. Я должен был исправить источник mod_wsgi, чтобы исправить это.
Лучшая конфигурация не так известна, как мне кажется. Но вот что:
- Используйте nginx для обслуживания запросов (динамическое приложение, статическое содержимое напрямую).
- Используйте веб-сервер python для обслуживания динамического контента.
Два самых быстрых решения для веб-сервера на базе python-это:
- теплофикационного цикла.
- fapws2
Вам нужно заглянуть в google, чтобы найти текущую лучшую конфигурацию для django (все еще находится в разработке).
Есть много способов, подход для этого. По этой причине, я рекомендую внимательно прочитать статьи, связанные с процессом deployment на DjangoAdvent.com: Эрик Florenzano - развертывание Django с FastCGI : http://djangoadvent.com/1.2/deploying-django-site-using-fastcgi/ читать : Майк Мэлоун - Масштабирование Django Блог Stochastictechnologies: идеальный Django установки Миккель Блог Hoegh: 35 % Response-time-improvement-switching-uwsgi-nginx
С уважением
Если вы используете lighthttpd, вы также можете использовать FastCGI для обслуживания Django. Я не уверен, как скорость сравнивается с mod_wsgi, но если память работает правильно, вы получаете несколько преимуществ, которые вы получите с mod_wsgi, которые вы не получите с mod_python. Главным из них является то, что вы можете дать каждому приложению свой собственный процесс (Что действительно полезно для хранения памяти различных приложений отдельно, а также для использования преимуществ многоядерных компьютеров.
Редактировать: просто чтобы добавить в пожелания вашего обновление о nginix, если память правильно изменяет, nginix использует "greenlets" для обработки параллелизма. Это означает, что вы, возможно, должны быть немного более осторожны, чтобы убедиться, что одно приложение не съедают все время сервера.
Мы используем nginx и FastCGI для всех наших Django развертываний. Это происходит главным образом потому, что мы обычно развертываемся на Slicehost и не хотим отдавать всю нашу память Apache. Я думаю, что это будет наш "use case".
Что касается замечаний о том, что документация в основном на русском языке-я нашел большую часть информации на английском языке wiki очень полезной и точной. На этом сайте также есть примеры конфигураций для Django, из которых вы можете настроить свою собственную конфигурацию nginx.
У меня есть предупреждение за использование Чероки. Когда вы вносите изменения в Django, Cherokee поддерживает процесс OLD, вместо того чтобы убить его и начать новый.
На Apache я настоятельно рекомендую эту статью.
http://www.djangofoo.com/17/django-mod_wsgi-deploy-exampl
Его легко настроить, легко убить или сбросить после внесения изменений.
Просто введите terminal
sudo /etc/init.d/apache2 restart
и изменения видны мгновенно.