Шаблон Django проекта с конфигами для быстрого разворачивания сервера
Вставка
- Опубліковано 5 вер 2024
- Мой курс «Хардкорная веб-разработка» - course.to.digital
Книжный клуб Ботаним!, где мы читаем хорошие ИТ-книги: botanim.to.dig...
Telegram: t0digital.t.me
Сказать спасибо за это видео можно здесь - boosty.to/digi...
В этом выпуске мы покажем свой шаблон Django проекта с готовой конфигурацией Nginx+Gunicorn+Django+Systemd, позволяющий стартовать новый проект максимально быстро и не тратить время на редактирование и копирование шаблонных конфигурационных файлов из других проектов.
Шаблон:
github.com/ale...
Полный гайд по настройке Django на чистой Debian машине и настройке сервера - • Поднимаем Debian серве...
Аналогичный гайд для PHP - • Настраиваем PHP сервер...
Обзор Python 3.8 - • Python 3.8 - офигенный...
/****************** about ******************/
Меня зовут Алексей Голобурдин, я программирую с 2004 года и на этом канале делюсь своим опытом. Я основатель и руководитель компаний:
- Диджитализируй digitalize.team, разрабатываем сложные IT системы для бизнеса;
- Salesbeat salesbeat.pro, комплексный модуль доставки для интернет магазинов.
Если у вас есть проект на разработку, пишите нам на hi@digitalize.team.
С другими предложениями, а также если вам нужна одна или несколько индивидуальных консультаций/уроков по разработке (3000 руб/час), пишите мне на alexey@salesbeat.pro.
Telegram канал - t.me/t0digital
ВК - digital...
RuTube - rutube.ru/chan...
Дзен - dzen.ru/id/623...
Планировал написать телеграм бота для учета финансов на выходных, но чёт зарубился с настройкой сервера и решил собрать наконец template под это дело. Бота не написал, но шаблон тоже полезен, думаю:)
После телеги может апи? Универсальный какой-нибудь для джанго с фласком, может с теми же финансами. + на этом примере можно и тему ооп раскрыть, разные вариации классов показать... =)
@@senatortre7326 да, на боте тоже с ООП поиграемся, есть идеи. Ну и апишку можно прикрутить потом будет для какой-то веб-морды
имхо: музыку на бэки можно сделать потише. В наушниках получается мешанина
На динамиках тоже, музыка достаточно громкая для такого видео
Эх, а я ведь только хотел научится работать с vim, теперь вот нужно будет бота писать...
Хороший контент, благодарю! Больше видео.
Vim'чик приложится:)
Я лично джангу использую только с докером после того как столкнулся с проблемой устновки пакета для работы с mysql, для установки которого, оказывается, нужно под рутом ставить еще какие-то утилиты
Спасибо! Ничего не понятно но очень интересно 😂
Супер! Обожаю автоматизировать свою работу подобными штуками
да, bash + линуксовые утилиты творят чудеса:)
Четко! Красиво!
Спасибо! очень круто и удобно
Хорошее видео! По настройке systemd хотелось бы?
Подскажите пожалуйста как правильно установить python перед выполнением, установил так :
sudo apt-get git nginx gunicorn systemd python3
А потом возникает ошибка с виртуальным окружением и pip
./install.sh: line 8: The: command not found
./install.sh: line 9: env/bin/activate: No such file or directory
./install.sh: line 10: pip: command not found
./install.sh: line 11: pip: command not found
Дело в том, что автор "забыл" сказать, что "на абсолютно чистой машине", он за кадром, установил много чего ещё. Конкретно тут, не хватавет пакетов python*-dev python*-venv python*-pip Вы обращаетесь в 8 строке к модулю venv, который автор ролика, ставит на сервер до ролика.
Если описывать всё по нормальному, то ролик не будет таким кликбейтным, а установка такой "простой". =) Но думаю, за 2 года, вы уже научились ставить окружение или забили болт на питон ;)
Ждем телеграмм бота, очень хочется посмотреть. Контент однозначно лукос, подписка. Молодца котан )
Спасиб за подписку!
Очень интересные и полезные видео с близким мне стеком технологий. Просто и понятно.
Спасибо! Планируем ещё много по этому стеку
Огонь! Одна интрига=)
скоро-скоро:)
Это очень круто, конечно. Как и весь контент.
Но может быть вы посоветуете что и где почитать в качестве базовых знаний? Куча материалов по Django-проектам, а как их действительно в работу запускать - непонятно.
Two Scoops of Django, документация Django, Django girls
@@t0digital Спасибо, интересный материал.
Django girls - пожалуй, пожалуй наиболее четко прописанная статья для старта, из тех, что читал
Алексей, спасибо большое за ваши видео. Я понимаю, что видеоблогинг для вас это просто увлечение, но могу ли я вас попросить выпускать видео почаще? И хотелось бы от вас видео где вы разворачиваете бэк на Django REST Framework, а фронт на любом JS фреймворке и всё связываете воедино с load balancer и дополнительными плюшками от вас.)) Извините за наглость.)
Будем стараться делать чаще! Прост рест и js фронт будет, про лоад балансер возможно тоже, но не в ближайшее время
@@t0digital спасибо за ответ. Буду ждать ваших видео с нетерпением. Очень нравится ваша подача материала.)
@@seidakhmetazat спасибо!
жду не дождусь ботаю спасибо за контент
Если сейчас такой формат быстрого сервера! Хорошая тема. Благодарю!
Спасибо за видео!
как всегда кратко и по делу.
ждем бота.
0:45 спасибо тебе большое добрый человек, так и сделаю, а то уже зае$#лся с ним разбираться. Единственное нормальное объяснение докера )
Коротко и информативно
Спасибо!
Спасибо!
Как он любит попивать водичку в своих видосах
Очень!
Быстро, клёво, спасибо. Как накатывать обновления в такой среде?
Алексей, добрый вечер. А можете снять видео деплоя на VPS - Django REST проекта с React-ом, Nginx-ом, Gunicorn-ом без Docker-а?
покажите настройки вашего шела, чтоб такой же красивый сделать
Спасибо за интересное и полезное видео!
Есть опасность в скрипте. Нет конфигтеста джинкса. Если на сервере уже что-то крутится, а конфиг не верный, то без конфигтеста скрипт положит работающие приложения. Лучше сразу, до установки остального, проверить. Плюс было бы круто сразу инициировать контроль версий в новом проекте.
Так же нет проверки на наличие python3-venv.
очень полезный контент! спасибо!
Супер! Хочется больше видео :)
thanks bro!
Хаурошь)
круто!
Полезное дело) а почему используете символические ссылки для конфигов?
если случайно что-то переименуете в репозитории проекта, то при выгрузке свежего кода все такие конфиги "пропадут"
Не чего не понял, но очень интересно.
Красавчег!
спасибо:)
После видео "как выйти из вим" не могу больше всерьез воспринимать ваше творчество
Всерьёз и не нужно :)
@@t0digital Мне кажется можно начинать подбрасывать и более глубинные темы, расширят захват аудитории, тем более с вашей интересной манерой излагать суть вещей :)
Спасибо! А более глубинные это какие, например?
@@t0digital Архитектура приложений, паттерны, распределенные реестры данных, нейросети, правильные ui и психология)) Возможно вы что то затрагивали и я не успел ознакомится)
Алексей. Можешь подсказать как развернуть твой шаблон на M1 c brew? спасибо.
Поднять за две команды, но перед этим нужно настроить целый конфиг. Разве это не тоже самое, что поднять докер с одной команды docker-compose up -d только настроить перед этим тот самый compose.yml?
докер не заменяет знаний того, как всё конфигурится - докер добавляет к этим знаниям необходимость знания ещё и докера. Докер хорош и удобен, но он не панацея
@@t0digital согласен. Но по названию видео, можно подумать что этот вариант таки панацея действительно работает в две команды, и не требует знаний по настройке конфига.
Даже virtualenv не заработает как нужно в две команды, придется инсталлить все что необходимо.
А можно с такой же лёгкостью запустить редис и селери без докера? Спасибо.
огонь
Почему ты используешь gunicorn, а не uwsgi? Есть ли какие-то существенные плюсы на твой взгляд или это просто дело вкуса?
Дело вкуса, думаю. На тестах, которые видел, гуникорн был быстрее, поэтому исторически используем его, причин переходить нет. На некоторых проектах, которые поддерживаем, uwsgi - тоже пыхтит, норм:)
Какие же это контейнеры? Докер это моя жизнь.
В видео нет контейнеров:)
блин, опять ничего не понял, но очень интересно... видимо нужно больше насмотреть
Вопрос, почему Django а не Flask? Чем он прям лучше?
Два совершенно разных фреймворка, их объединяет только то, что оба на Python.
Клаасс 👍. Но слышал про cookiecutter?
И куда резюме отправлять?) 😜
@@TheMRrenald да, cookiecutter, знаю, чуваки из «Two Scoops of Django» его любят:)
Резюме можно на alexey@salesbeat.pro
Вопросик про количество воркеров...
Если на vps 1 проект = с этим понятно.
А если на впс несколько проектов, то сколько воркеров на проект запускать? Все так же 2 * количество ядер + 1 пока память не кончится?))
это не жесткое правило. Если 5 проектов и на один идет трафик, а остальные так висят, чтобы было - то более нагруженному проекту конечно можно/нужно дать больше ресурсов.
а про docker будет ролик ?)
Да, но не уверен, что скоро
Используете ли в работе либы типа django decouple и сплитите ли сеттинги на dev, prod и ТД.?
Сеттинги сплитим обязательно, decouple не используем
@@t0digital Спасибо за ответ! В свое время на такой, казалось бы, простой теме потратил много времени. Возможно, Вы могли бы сэкономить его для подписчиков, сделав короткое видео на эту тему, тем более что такой "шорт-рецепт" формат у Вас замечательно получается.
@@roberti8506 спасибо за идею! Думаю, сниму видео про полный процесс разработки приложеньки на джанго и там об этом расскажу тоже
@@t0digital круто!
Да, сейчас у многих докер головного мозга
А вот ещё было бы интересно посмотреть как этот самый телеграм-бот делать не просто так, а через какую-нибудь систему Continuous Integration. Jenkins или там что сейчас популярно? :)
Я понимаю что для телеграм-бота это тоже оверхед. Но может быть подойдёт как тема для будущих роликов.
Да, расскажу в одном из видео про gitlab ci. Может и для бота запилю, посмотрим:) спасибо за идею
Диджитализируй! АйТи студия может в ещё чуть более далеком будущем можно будет сравнить(?) показать новый github ci
@@SomeTestsGuy не знал, что гитхаб тоже свой ci запилил. Майкрософтовские деньги тратят:)
Интересно, ждём бота)
Будет огонь материал
Посоветуйте, есть ли ресурсы на которых можно попрактиковаться в деплое на сервер? Или надо только покупать хост?
Можно поднять Линукс на домашней машине и развернуть все там. Если купить ещё белый IP у провайдера (постоянный IP), то вот тебе и полноценный сервер. Но в целом ovh даёт дешёвые сервера, проще купить. На selectel, яндекс cloud, Google cloud можно арендовать железку хоть на час.
@@t0digital Спасибо.
Подскажите пожалуйста новичку, почему в видео про установку debian-сервера, в скрипте для запуска gunicorn сначала запускали активацию виртуального окружения, а тут gunicorn стартует без активации окружения, или это как-то неявно происходит?
Здесь гуникорн запускается из папки виртуального окружения. То есть можно активировать окружение и запускать gunicorn или python, не указывая полный путь к нему, а можно не запускать окружение и просто запускать gunicorn или python из директории окружения (env/bin/gunicorn, env/bin/python3 здесь)
@@t0digital Всё понятно, благодарю!
@@user-hk5mb2vn3j отлично :)
Мне перед установкой этого шаблона нужно установить git nginx gunicorn и systemd?
ДА
Какой нужно указывать домен, если его нет и хочешь просто запустить локально, протестить ?
Домен, который укажете, пропишется в конфиг nginx. Протестить локально с локальным nginx - укажите локальный домен, прописанный в hosts файле
@@t0digital , спасибо, жаль не запускается. Ставлю на чистую 18.04 на VirtualBox, единсвенное что сделал - окружение с помощю venv. Вот скрин
drive.google.com/file/d/1mqXbG3iBg8jqMUMdpen3bhJcrY8LP_xP/view?usp=sharing
@@user-iy8eg3yr1n похоже, не ставится psycopg, пип пакет для постгрес. Почитайте, почему не ставится под вашу версию ОС. И укажите полный путь до питона на старте, не относительный, а полный путь. Не уверен, что скрипт работает с относительным, не помню
Эта установка на Debian?!
debian 10 vs ubuntu 20.04 - такой рассказ планируете?
Да, на дебиан. Убунту на сервере имхо не нужен
@@t0digital Спасибо за быстрый ответ. Поставил вчера кучу лайков и подписался :-) Но убунта самая популярная ось для vps.
Я бы так же про wordpress сказал имхо не нужен. Drupal лучше! Но wordpress популярнее :-)
Этот скрипт на убунте так же отработает?
requirements.txt - можно же без версий? - поставит самые последние. Сейчас уже Django 3 версии.
а у вас там Django==2.2.5 - может просто: Django? Тогда надо обновить папку src...
systemd/gunicorn.service - можно так для разных сайтов называть? Или всё же gunicorn2.service должно быть и т.п.? dbms_template_path - создаст разные папки, а название процесса останется одинаковое?
Обязательно ручками писать где установлен питон? Можно же автоматом вставить?!
# узнать все версии python на сервере
ls -1 /usr/bin/python* | grep '[2-3].[0-9]$' # минимум информации
whereis python # море информации: все папки где стоит python
ls -ls /usr/bin/python* # море информации: все папки где стоит python, но красивее
Этот скрипт скорее всего отработает так же на убунте, но не сказал бы, что убунта относится к стандартным серверным ОС. Эту нишу занимают Debian, CentOS, местами разные BSD.
Да, в requirements версии можно при желании убрать.
Называть сервисы в systemd можно как вам нравится, в том числе использовать названия сайтов, если их несколько на машине.
Питон надо писать ручками, потому что как правило он не системный, а из виртуального окружения, узнать его по дефолту нельзя, питон из вирт окружения может быть где угодно, виртуальное окружение может быть не активировано и тд. Самый надёжный способ это указать явно.
@@t0digital разворачиваю Ваш классный (не сарказм) конфиг на centos7, и выдает дикий трэш связанный с отсутствием папок sites-enabled/sites-available и их прав и тд. Можно ли как то на nginx.conf симлинку сделать? или нужно обязательно папки создавать? вопрос глупый, знаю, извиняюсь)
А у меня на выбор разработка либо в виртуальной машине, либо с помощью docker. Что так, что так, непонятно как код с рабочего компьютера туда тащить. Если сначала разрабатывать у себя, то в случае виртуалки дважды зависимости проставляешь. Docker compose в этом случае выигрывает. Ребятам на винде вообще не понять.
Где можно толковое разъяснение, как к связке apache+wsgi прикрутить проект Django свиртуальным окружением...?
Не надо apache, nginx берите nginx. Почему не надо apache - ua-cam.com/video/zdvuN8fMLVA/v-deo.html
Как настроить с nginx - ua-cam.com/video/FLiKTJqyyvs/v-deo.html
@@t0digital спасибо!
Собираюсь первый раз деплоить на сервер...
Скажите, получится так без танцнв с бубном деплоить проект на сервер с вестой на нгинкс и апаче.
Без танцев с бубном в 1 раз в любом случае не получится:)
Поделись потом опытом, у меня Nginx+php-fpm, чувствую там геморой побольше будет.
Какая возня ожидается с переносом проекта на продакшн?
Шаблон как раз для минимизации возни
@@t0digital то есть развертываешь шаблон на dev и разрабатываешь себе на здоровье. Затем, когда закончил, развертываешь шаблон на production и копируешь файлы из dev? Или как?
@@ravetherover копируешь файлы проекта, не настроек. Файлы настроек чтобы получить новые для прода запускаешь на проде ./install.sh и он всё настроит, пропишет пути, создаст симлинки на конфиги
Код не работает на AWS Ubuntu, Amazon Linux 2. И не разъеснено что необходимо предустановить git, nginx, gunicorn. Но уже хорошо
Не работает ничего..
Как же так?
Конфих конфих конфихххххххххххххх
хХх
Я так понимаю у меня одного этот шаблон не устанавливается.?
Какой Линукс? Какая ошибка? Какой питон?
@@t0digital разобрался почему ошибку выдавал. Файлы конфигов nginx и systemd уже были созданы, удалил и все прошло успешно, спасибо.
@@dronich26rus огонь:)
В чём смысл указывать конкретные версии пакетов для pip? Да, понятно что это будет протестированный набор, который точно заведётся. Но через месяц-другой выйдут новые версии, скрипт устареет. Чем плох вариант ставить просто текущую версию пакета?
Вариант не плох, да, можно просто оставить текущую версию
Жирный дизлайк.
Почему ?
В комментах всё видно сколько человек потратили несколько минут жизни впустую.
Спасибо автору, который очень постарался для этого.
@RomanLyubimov-k6j сейчас 2 522 лайков у этого видео и 29 дизлайков. Всё видно, да.
Подскажите пожалуйста, я тут столкнулся с проблемой, django channels не работает, хотя gunicorn запущен на сервере, и все работает, а вот когда асинхронные запросы выполняю, то ничего не работает, как в таком случае настроить сервер?
Daphne настроили?
@@t0digital нет, не настроил, но про него читал, проблема в том, что камманда daphne не работает, хотя я её установил, и каждый раз при её вызове пишет, что она не найдена
@@paveltarnopovich2574 для работы сокетов в channels нужен не гуникорн, а дафна. Ставится через pip как и джанго, как и гуникорн. Запускается отдельно
@@t0digital, все советы принял в обработку, начал разбираться, и тут возникла новая проблема, daphne запустил, синхронные запросы выполняются, но при асинхронных сервер пишет метод не доступен ошибка 405, это с чем может быть связано можете подсказать?
@@paveltarnopovich2574 точно на нужный порт (на котором дафна запущена) отправляете асинхронные запросы?
На первых же секундах про докер и енсибл... Из пушки по воробьям? Да ладно
Имхо заменять 10 строк простейшего баш скрипта на любой внешний дополнительный инструмент может быть стрелянием из пушки по воробьям:) нисколько не умаляя крутость и важность в некоторых проектах Docker контейнеров и Ansible
Ну из под баш все что угодно можно автоматизировать... а бд где?)
а с Джангой идет автоматом sqlite
Этот баш скрипт не ставит Постгрес, но, как вы справедливо заметили, его можно научить и этому. И sqllite в комплекте, да, если её достаточно.
Идеология этого скрипта не установка нового системного софта на сервер, а конфигурирование имеющегося - новый софт ставится строго в виртуальное окружение, а системный (nginx, systemd) просто конфигурится. То есть скрипт глубоко не влияет на систему и это хорошо, он лайтовый и выпилить его влияние это просто удалить папку с проектом.
Блин больно смотреть было на велосипед, тебе реально в ансибл нужно посмотреть, там не обязательно ведь строить экосистему с ролями и тд - опиши пару тасков в плейбук и ранай, без опасной императивщины
Да понятно. Сделаем видос с ansible тоже)
Сейчас пишу генератор Django , как в рельсах , есть идеи что бы вы там видеть хотели ?
В Django уже есть свой генератор приложений, если вы об этом
django-admin startproject
django-admin startapp
Диджитализируй! АйТи студия , не , тип чтобы он тебе модели и контроллеры сам генерировал
Диджитализируй! АйТи студия , есть какие-нибудь советы и мысли за это ?
@@Kirill-rg8vj не работал с рельсами и не оч понимаю, как она генерит модели и на основе чего
Алексей привет! Сколько ты уже кодишь( вообще в IT )
Привет! В 2004м начал, за деньги в 2008м
а systemd так и не показал )))
Не совсем понятны некоторые моменты для полного новичка, например как быть с несколькими проектами на одной машине.
У меня для php сайтов стоит веста, попробую это данное видео скрестить с этим гайдом itproffi.ru/zapusk-proektov-django-v-vestacp/, что бы ставить в весту готовую настройку под нужный домен, там letsencrypt прикручивается в одно касание. Ну и в целом снижает порог входа.
Все видео о том смотрите я написал скрипт настроенный и я его запустил...
Ожидали основы термоядерного синтеза услышать)?
@@t0digital Я это где-то упоминал? Нету разбора для новичков как на самом деле происходит деплой, вы просто запустили заготовку, какой в этом смысл?
@Fein прям нету? Прям вот на моем канале нескольких видео с полноценным деплоем с нуля нету и вообще по теме деплоя? Ох, ну специально для вас:
1. ua-cam.com/video/FLiKTJqyyvs/v-deo.html
2. ua-cam.com/video/LvvSlljb8Yw/v-deo.html
3. ua-cam.com/video/kclYmb47LTg/v-deo.html
4. ua-cam.com/video/W-nOdwlxmhA/v-deo.html
5. ua-cam.com/video/Y_bker96mK8/v-deo.html
И тд. Ну а касательно смысла - тыща человек, влепивших лайк, смысл нашли, и на гитхабе 153 звезды и 73 форка от этого моего репозитории смысл тоже нашли. Кажется, что если вы не видите смысла, это не говорит о том, что его нет)
@@t0digital Слушайте я знаю как это делать, просто случайно к вам зашел, тема касалась именно этого видео, вы сказали что расскажите как это делать, а в итоге запустили заготовку, вы еще не поняли о чем я веду разговор? А вы мне скидываете какие-то другие видел это же абсурд.
@@fein7068 все, что я сказал, что расскажу - рассказал 🤷♂️
Начал ставить на сервак, UBUNTU . :/var/www/html/loft-fashion.ru/html# ./install.sh
bash: ./install.sh: Отказано в доступе . Что не так делаю?
консоле все под root
Попробуйте:
source install.sh
Запустилось?
@@t0digital ага сейчас запустилось.
Вопрос: путь интерпретатора какой пишем? это путь домена на сервере? у меня вот такой путь получается joxi.ru/KAx511NT1blK1r
@@user-tt7vf5vl5i путь интерпретатора это путь к питону. В общем случае к питону в виртуальном окружении, которое предварительно создано
@@t0digital виртуально окружение настроено. Чет не могу сообразить.
Python interpreter: /var/www/html/loft-fashion.ru/html/env/bin/python3.7
Your domain without protocol (for example, google.com): loft-fashion.ru
./install.sh: строка 8: /var/www/html/loft-fashion.ru/html/env/bin/python3.7: Нет такого файла или каталога
./install.sh: строка 9: env/bin/activate: Нет такого файла или каталога
а systemd так и не показал...
музыка нромкая
Когда будет телеграм бот? Залайкайте что бы увидел!!!!!!!!!!
Будет!
"Как нарисовать сову? Рисуем овал и всё остальное!".
Ролик ради ролика. Оказывается на сервере уже стоит python3.7 и git. При том не просто питон, а скорее всего с dev модулем. Тот проект что развернулся, это тупо заготовка. Заготовка в которой по факту ничего нет, ни кто в здравом уме не будет заливать на сервер заготовку. А полноценный проект, требует больше бубнов, да хоть ту же базу данных нормально развернуть, статические файлы, ....
Ролик, сам как "заготовка" возможного баш скрипта. =)
2к человек поставивших лайк с вами не согласны даже не смотря на то, что в видео не показано, как включить компьютер:)
@@t0digital Так они и не понимают толком, что это такое. Вы показали, как заварить доширак. При этом, подали так, как-будто это новогодний стол на 15 блюд. =) По факту, в жизни всё так легко не бывает. Вы часть упустили за кадром. Тот же питон, вы поставили до ролика. При том не сам питон, а ещё и дев + венв пакеты. Джанго у вас тоже пустышка коробочная. Тупо показать, что всё остальное работает.
На живом проекте, всё так легко и в "пять строк", не решается.
Проще говоря, вы указали только возможный путь, тупо заготовку. Но блин, это как мем "как нарисовать сову". Ни больше, ни меньше. Просто кликбейтный ролик. Но даже в нём, страждущий да найдёт что-то полезное.
Удачи вам ;)
Музыку минус!