веб сервер на питоне для django
Что мешает использовать uWSGI как http-сервер?
Ну мне тогда надо внутрь пакета с софтиной затаскивать uwsgi с настройками. А он плюсах и значит его надо на месте собирать. Я хотел обойтись инсталяцией пипом всех необходимых пакетов в виртуаленв при запуске.
Вообще я остановился на gunicorn. То что нужно.
Вообще я остановился на gunicorn. То что нужно.
я в этом всём не разбираюсь, но использую для всякой мелочевки.
делаю через django примерно так:
потом запуск
python viewer.py runserver 127.0.0.1:8080
делаю через django примерно так:
#!/usr/bin/env python
import os
import sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "viewer.settings")
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)
потом запуск
python viewer.py runserver 127.0.0.1:8080
не требовал например установки nginxnginx надо ставить просто чтобы был наружу только nginx, т.к. это уже стандарт для кучи разных вещей. Ну и статику отдавать Питоном — это не прилично.
Я знаю зачем и когда ставят нгинкс. Написал же что и почему мне надо.
То что ты задумал сделать — плохо.
Фактически ты захотелить нгинкс ради того, чтобы дрочить на технологи.
Фактически ты захотелить нгинкс ради того, чтобы дрочить на технологи.
Чё? Формулируй пожалуйста свои мысли более связно.
Я вообще не дрочу на технологии (ну кроме сильного ИИ - на него у меня стоит).
Я вообще не дрочу на технологии (ну кроме сильного ИИ - на него у меня стоит).
Не надо хотеть веб сервер без нгинкса впереди.
Из твоего поста я читаю, что тебя почему-то напрягает что что-то ещё должно запуститься. Ну так в ОС ещё десятки вещей запускаются.
Нгинкс надо считать уже чем-то вроде крона или сислога, запуск — при старте ОС.
Из твоего поста я читаю, что тебя почему-то напрягает что что-то ещё должно запуститься. Ну так в ОС ещё десятки вещей запускаются.
Нгинкс надо считать уже чем-то вроде крона или сислога, запуск — при старте ОС.
Карго-культ какой-то.
Нгинксnginx (англ. engine x) (по-русски произносится как э́нжин-э́кс или э́нжин-и́кс)
Да. А ещё пайтон а не питон. Все эти разговоры о правильном произношении названий подзаебали.
Не надо хотеть веб сервер без нгинкса впереди.Дорогой Стив Джобс, я рад что на том свете у тебя есть инет, но спешу тебя растроить, что у меня не макось и я сам могу решать что я хочу.
Из твоего поста я читаю, что тебя почему-то напрягает что что-то ещё должно запуститься. Ну так в ОС ещё десятки вещей запускаются.Меня напрягает не запуск, а то что с нгинксом мне тяжело сделать кнопку "сделать заебись" потому что его может не быть в репах например (у редхата в дефолтной репе нгинкса нет - только в епеле), он может уже стоять и иметь какие-то настройки, которые автоматом править не хочется и т.д. и т.п. А мне надо иметь возможность закачать тар.гз и запустить одной коммандой полностью рабочее приложение. При этом мне абсолютно похер отдача статики - вебморда это существенно меньшая часть приложения и там одна css, пара джаваскриптов и немного иконок, на которые придётся меньше процента запросов. При этом не будет торчать в инет и будет работать в локальной сети, где скорости хорошие и время отдачи запроса не существенно по сравнению с выполнением запроса.
Так что мне нахуй не нужен нгинкс.
Нгинкс надо считать уже чем-то вроде крона или сислога, запуск — при старте ОС.Херня полная. Крон и сислог у меня стоит на 100% машин. Нгинкс на десятке в лучшем случае.
КронКакой из трёх? И если один стоит, значит два других - нет
Какой из трёх?какая разница? где-то cronie где-то vixie-cron. их кстати не три, а больше.
А мне надо иметь возможность закачать тар.гз и запустить одной коммандой полностью рабочее приложениеА надо чтобы пакет ставился rpm, коли у тебя Редхат. И в зависимостях — nginx. И будет всем хорошо.
Понимаешь, ты вот даже не хочешь увидеть, что без Нгинкса ты хрен сделаешь следующие вещи простым конфигом — сделать basic авторизацию, например. Или быстро закрыться от http флуда, если ты наружу показываешься. Наконец, сейчас принято везде использовать https, если ходят люди, а не роботы. Всё это из коробки умеет Нгинкс. А в твоем случае постоянно придется делать закат солнца вручную.
Наконец, ты можешь навешать кучу приложений, и все они будут доступны и не будут влиять друг на друга.
Ну а что в Редхате нет Нгинкса из коробки — это позор Редхата, а не повод пытаться отказаться от Нгинкса. Слишком уж хорош Нгикс и его фичи.
А надо чтобы пакет ставился rpm, коли у тебя Редхат. И в зависимостях — nginx. И будет всем хорошо.так не у меня и может не редхат. (и кстати скорее всего не редхат)
Понимаешь, ты вот даже не хочешь увидеть, что без Нгинкса ты хрен сделаешь следующие вещи простым конфигом — сделать basic авторизацию, например.а зачем мне бэсик авторизация, когда у меня джанго и нормальная авторизация, с правами, секурная и т.д.?
Или быстро закрыться от http флуда, если ты наружу показываешься.а я не показываюсь.
Наконец, сейчас принято везде использовать https, если ходят люди, а не роботы.а мне не надо https, потому что у меня большую часть времени ходит робот.
Всё это из коробки умеет Нгинкс. А в твоем случае постоянно придется делать закат солнца вручную.ой лол. ты мне ещё расскажи что нгинкс умеет. я за свою жизнь написал километры конфигов для него и один патч.
подзаебалитупость больше подзаебывает
В TurboGears 2 использовался paster (сейчас они на основе него сделали свою приблуду). В зависимости от настроек .ini файлов он может работать в разных режимах: слушать на определенном адресе и порту, перезагружаться при изменении файлов (режим разработки), прочие надстройки.
Соответственно я имел development.ini и production.ini. Первый запускал в случае надобности на отдельном порту с багтрейсами и консолью отладки на странице, перезагрузкой при изменении файлов. Второй не имел перезагрузок, выдавал 500.html вместо багтрейсов, работал довольно шустро и был прописан в автозапуск.
Запуск отладочного режима с перезагрузкой выглядел так:
Не знаю, насколько инфа полезна и актуальна. От TurboGears я отошел уже как года два.
Гуглинг предлагает gunicorn. Он поддерживает и paster, и django.
Соответственно я имел development.ini и production.ini. Первый запускал в случае надобности на отдельном порту с багтрейсами и консолью отладки на странице, перезагрузкой при изменении файлов. Второй не имел перезагрузок, выдавал 500.html вместо багтрейсов, работал довольно шустро и был прописан в автозапуск.
Запуск отладочного режима с перезагрузкой выглядел так:
~$ paster serve --reload development.ini
Не знаю, насколько инфа полезна и актуальна. От TurboGears я отошел уже как года два.
Гуглинг предлагает gunicorn. Он поддерживает и paster, и django.
ой лол. ты мне ещё расскажи что нгинкс умеет. я за свою жизнь написал километры конфигов для него и один патч.Ну так тогда о чем речь?
Ты должен как нельзя лучше понимать, что nginx наружу — это самый хороший вариант. А что тебе понадобится из его фичей покажет время.
Я всегда относился к твоему мнению с уважением и считал грамотным специалистом, но в этот раз:
"ИДИ-КА ТЫ НАХУЙ. Я ЗНАЮ ЧЕГО ХОЧУ И ЧЕГО НЕ ХОЧУ. И НГИНКС Я НЕ ХОЧУ, ХОТЬ ОН МНЕ И НРАВИТСЯ."
"ИДИ-КА ТЫ НАХУЙ. Я ЗНАЮ ЧЕГО ХОЧУ И ЧЕГО НЕ ХОЧУ. И НГИНКС Я НЕ ХОЧУ, ХОТЬ ОН МНЕ И НРАВИТСЯ."
жаль что я сюда раньше не зашел
1) сразу бы написал, что для внутренних нужд, никто бы не даебывался
2) есть такая штука для статики http://warehouse.python.org/project/whitenoise/
wsgi.py
settings.py
3) поднять продакшен джангу можно через gunicorn (кстати он статику тоже умеет раздавать)
1) сразу бы написал, что для внутренних нужд, никто бы не даебывался
2) есть такая штука для статики http://warehouse.python.org/project/whitenoise/
wsgi.py
from django.core.wsgi import get_wsgi_application
from whitenoise.django import DjangoWhiteNoise
application = get_wsgi_application()
application = DjangoWhiteNoise(application)
settings.py
STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'
3) поднять продакшен джангу можно через gunicorn (кстати он статику тоже умеет раздавать)
еще в догонку могу сказать, что гуникорн можно запускать через gevent для асинхронности (gunicorn -k gevent)
для не особо нагруженного сервака раздавать статику будет без проблем
ssl и прочую поебень гуникорн тоже умеет
все в итоге сведется к следующему
virtualenv env
. ./env/bin/activate
pip install gunicorn django ...
tar ...
и вуаля готовый пакет
а на продакшене будет запускаться так
.../env/bin/gunicorn -k gevent -w 10 -b 0.0.0.0:80 import.path.to.wsgi:appication
для не особо нагруженного сервака раздавать статику будет без проблем
ssl и прочую поебень гуникорн тоже умеет
все в итоге сведется к следующему
virtualenv env
. ./env/bin/activate
pip install gunicorn django ...
tar ...
и вуаля готовый пакет
а на продакшене будет запускаться так
.../env/bin/gunicorn -k gevent -w 10 -b 0.0.0.0:80 import.path.to.wsgi:appication
Спасибо.
В третьем питоне gevent нету правда, но это фигня для моих задач.
Статику наверное проще отдавать сразу через гуникорн, а не через wsgi, но вообще буду иметь в виду.
В третьем питоне gevent нету правда, но это фигня для моих задач.
Статику наверное проще отдавать сразу через гуникорн, а не через wsgi, но вообще буду иметь в виду.
Оставить комментарий
YUAL
Пилю небольшой проектик на джанго. Обычные методы работы с джанго предполагают что мы используем связку uwsgi и сторонний web-сервер. А мне хотелось бы, чтобы он был вещью "в себе" и не требовал например установки nginx, а чтоб можно было просто сделать ./start_server.py и всё заработало. Что-то аналогичное встроенному серверу разработчика, но чутка производительнее.