Your AI powered learning assistant

Настройка сервера для Django 🔥 Git, Nginx, Gunicorn, PostgreSQL, домен, SSL-сертификат

Вступление

00:00:00

В этом видео я объясню, как создать и настроить сервер с нуля для размещения вашего приложения на Django. Проект, над которым мы работаем, мы будем загружать во время трансляций; ссылка есть в описании. Этот проект под названием Call Helper предназначен для операторов колл-центров, которые могут планировать обеденные перерывы. Кроме того, мы обсудим настройку Gunicorn и Nginx.

Выбор доменного имени (кириллица или латиница?)

00:00:30

Выбор доменного имени: Кириллическое или нет Латинский Выбор правильного доменного имени имеет решающее значение, и его можно приобрести у таких регистраторов, как Reg.ru. Существенная проблема возникает с доменами, содержащими символы кириллицы, поскольку они не вписываются в таблицы кодировки ASCII, что приводит к проблемам с конфигурацией сервера и привязкой SSL-сертификата с помощью таких инструментов, как Certbot. Чтобы избежать этих проблем, преобразуйте кириллический домен в формат, совместимый с ASCII, с помощью инструмента под названием Punycode converter.

Переход на латинский домен для простоты После борьбы с проблемами конфигурации в stream из-за использования кириллического домена "Якутия.RF", я переключился на полностью латинский домен "CallHelper" для наглядности и простоты настройки. Процесс включает в себя быструю покупку нового домена с предоставлением личных данных, поскольку это общедоступная информация, связанная с вами как с владельцем. Шаги после покупки включают в себя настройку записей ресурсов, связывающих поддомены с IP-адресом вашего сервера.

Выбор типа сервера для проекта

00:03:14

Выбор правильного сервера для проекта имеет решающее значение. Услуги хостинга не подходят, поскольку для полной настройки сервера в соответствии с требованиями требуется полный доступ, включая права root. Остаются только VDS или облачные серверы; как правило, VDS используется для небольших или образовательных проектов, в то время как реальные и значимые проекты выполняются на мощных облачных серверах.

Создание сервера на Selectel

00:04:00

Эффективное распределение серверов с помощью Sharedline от Selectel Создание сервера на Selectel предполагает использование их облачной платформы для настройки проектов и управления ими. Выбрав пул адресов ru3b, пользователи могут арендовать только часть производительности полноценного облачного сервера с помощью функции sharedline. Это позволяет оплачивать всего 10-50% от общей емкости, при этом потенциально получая доступ к большему объему, если другие пользователи не используют свои ресурсы в полной мере.

Масштабируемое Управление Ресурсами Без Дополнительных Затрат По мере роста проектов могут потребоваться дополнительные ресурсы, такие как процессорные ядра или оперативная память; на платформе Selectel это легко настраивается без дополнительных затрат. В отличие от предыдущих проектов, когда обновление требовало покупки новых серверов и переноса данных вручную, в данном случае настройки могут быть легко выполнены в любое время.

Выбор конфигурации сервера

00:07:03

Настройка сервера с помощью sharedline для нашего ассортимента серверов мы начинаем с аренды только 10% мощности с возможностью увеличения в дальнейшем. При добавлении интерфейсных сервисов мы просто расширяем конфигурацию и выбираем операционную систему, такую как Ubuntu, CentOS или Fedora. Первоначальная установка включает в себя одноядерный процессор и 512 МБ оперативной памяти, стоимость аренды составляет примерно 140 рублей.

Настройка DNS ресурсных записей

00:07:48

Чтобы привязать IP-адрес к домену, мы создали сервер и скопировали его общедоступный IP. Затем мы обновили существующие записи, указав новый IP. Для внешних пользователей основной домен связан с помощью '@' и 'www', в то время как внутренние взаимодействия через API используют поддомены типа 'api.callhelper.ru'. Кроме того, для разработки создаются отдельные поддомены (например, api.dev.callhelper.ru), чтобы протестировать функции перед их оперативным развертыванием.

Первоначальная настройка сервера

00:10:00

Чтобы начать настройку сервера, получите доступ к консоли для полного контроля, даже если SSH не работает. Войдите в систему, используя пароль root; рекомендуется немедленно изменить его с помощью "passwd". Создайте нового пользователя для каждого проекта, иногда разделяя пользователей внешнего интерфейса и серверной части. Добавьте этому пользователю привилегии sudo с помощью "usermod -aG sudo username", затем переключитесь на него с помощью "su - username". На этом начальная настройка завершена, прежде чем переходить к основным настройкам через SSH.

Подключение к серверу по SSH

00:12:07

Для взаимодействия с нашим сервером мы используем утилиту Windows. Сначала скопируйте и вставьте IP-адрес для подключения. Введите "Call Helper" в качестве имени пользователя и введите свой пароль; вы должны увидеть, что вы подключены. Чтобы сохранить эту конфигурацию, повторите эти действия, но нажмите "Сохранить", назовите ее (например, "Вызов помощника"), установите флажок "Сохранить пароль", затем снова войдите в систему, чтобы подтвердить успешное подключение.

Начало основной настройки

00:12:54

Начните с подключения к серверу по SSH. Начните с команды "autop D", чтобы обновить менеджер пакетов, затем установите необходимые пакеты: gcc для языков программирования, python3-dev для разработки на Python, pip3 для установки пакетов на Python, libpq-dev postgresql и postgresql-contrib для управления базами данных. Установите nginx в качестве движка прокси-сервера и curl для выполнения запросов; также необходимы в качестве зависимостей. Используйте флаг '-y' в командах для автоматического согласования с установками.

Настройка PostgreSQL базы данных

00:14:10

Настройка баз данных и пользователей PostgreSQL После установки необходимых пакетов мы приступаем к настройке базы данных. От имени пользователя "postgres" подключаемся к psql для управления базой данных. Создаем две базы данных: Call Helper (для производства) и Call Helper Def (для разработки). Соответствующие пользователи создаются со сложными паролями для обеспечения безопасности. Измените пароль пользователя postgres по умолчанию, так как он небезопасен по умолчанию.

Настройка параметров базы данных Мы применяем рекомендуемые настройки Django: кодировка UTF-8, уровень изоляции установлен на read committed, часовой пояс установлен на Europe/Moscow. Предоставьте все привилегии для каждой базы данных ('Call Helper' и 'Call Helper Def') соответствующим пользователям, используя команду GRANT ALL PRIVILEGES.

Клонирование проекта с Git на сервер

00:16:48

Настройка виртуальной среды и проект клонирования Для начала нам нужно настроить виртуальную среду, используя команду для обновления pip с последующей установкой "virtualenv". Проект размещен на GitHub, поэтому мы устанавливаем Git с помощью "sudo apt-get install git" и клонируем наш репозиторий. Для безопасного доступа без повторного ввода учетных данных для входа в систему сгенерируйте SSH-ключи с помощью 'ssh-keygen -t rsa', добавьте их в каталог .ssh вашего сервера, скопируйте содержимое открытого ключа из файла id_rsa.pub в GitHub в разделе настройки -> SSH-ключи.

Активация виртуальной среды и установка зависимостей Перейдите в каталог вашего клонированного проекта в терминале. Активируйте виртуальную среду, созданную ранее, с помощью `source venv/bin/activate`. Установите все необходимые зависимости, перечисленные в requirements.txt с помощью `pip install -r requirements.txt`. Скопируйте содержимое файла example.env в новый файл .env, заполнив необходимые константы, такие как SECRET_KEY, сгенерированные онлайн.

Настройка параметров Django для развертывания Режим "ОТЛАДКА" должен быть отключен; укажите разрешенные хосты, включая IP-адреса или доменные имена, которые могут подключаться. Настройте детали подключения к базе данных в настройках.py на основе предоставленной информации, такой как имя (например, AllHelperDev). Убедитесь, что статические файлы обрабатываются правильно, создав каталоги с именами "static" и "media", что предотвратит проблемы с правами доступа, если они будут автоматически созданы позже во время выполнения.

Выполнение миграций и правильный запуск сервера "python manage.py migrate" применяет стандартные миграции, необходимые изначально; создайте любые дополнительные, специфичные для каждого приложения, вручную, если они не были обнаружены автоматически с помощью путей по умолчанию (`manage.py makemigrations `). Запустите сервер разработки Django, указав IP—адрес хоста 0.0.0:8000 вместо localhost, чтобы обеспечить внешнюю доступность-проверьте функциональность, зайдя в панель администратора и подтвердив успешное завершение настройки, прежде чем переключать обработку прокси-сервера на движок Nginx вместо встроенного, который здесь временно используется.”}]}]json###помощник по настройке## Виртуальная среда и проект клонирования ## Активация виртуальной среды ## Настройка параметров Django для развертывания ## Запуск миграции и правильный запуск сервера # Инструменты, функции, пространство имен { // Краткое содержание данного теста, разделенное на 4 главы, введите summaryContent = (_: _BOS_ главы: Массив< { содержание: заголовок строки :строка } > }) => любой ; } //пространство имен функции JSON пользователя клонирование проекта с помощью Git на сервер, все командьі Ми vipolnili поэтому бази dannikh nastroeni я Ми dvigaemsya дальше дальше Ми zaimemsya загрузкой нашего Джанга проекта и для начала-Ми должні установить virualnuyu среду виртуальной энф для этого используем сначала команду apgreida Пип затем командой yptring сталь виртуальной Пер проект у нас находится на гитхабе поэтому нам neobkhodimo установить пакет гид ispolzuyem длая это суда от установки geed после етого mozem uzge взать sklonirovat наш проект не menay проджекта publichnii chasce vsiego realnie projekti zakritie поэтому kazhdii раз pridetsia вводить logini пароль chtobi сделать какието изменения поэтомы я предлагаю избавитса от sgeneririvat ключи SSH и добавить их vgibбыл что Би avtomatischeski работать с нашим proyekto древнее название во-pervikh comanda sshken Т ОГА создать ключи на нашем служат пользователя вызова помощника по умолчанию папку точка СШ parolnu фразу Я neispolyuzhu perekhodm компакт точка смотрим что появились два Фаила idrsa это zakritiiy ключ дришь паб otoctrii ключ Zakritii ключ нигде показивает Publichnii можем где-чтобы rasprostranyats berom sodergime kopiruem его perechodm githb vibiraen settingi раздел деле видите бил udalyau старого север новом vozho сюда даю название Селектел будет СМС Podverdayu деиствие как vidum был potmu горит ни мне vosplozvalis теперь приступ planirovaniju снова ЖКТ repozitorii мои вызывать вспомогательный код ссилку именно сеичас domshnei direktoriii написати ukazivam ссилку nazivanie так серверной vetkoi деф заводе дырэкторы Apidf pojavilas папка урожденная види основной druguiu vetky delaeto pomoshchiu chekat назва Деф smotrimsoderjmoe nastoiascii Idemdalsche aktivrovat окружение vosstanvit все izolirat projkti друга pomocshu whirtual енва venf вент хорошо activrovat источник ОГРН скрипт активировать обозначение ВИП Р requiremanse YENV Так секретами nelza гранта Failik пример определени konstanti zapolenin skopiruete Failik новом ОКР redaktiruem секрет генератор sovetuju odinarimi debaga номер loadhosts podkluchen domenno имена IP-адрес хоста белая пробел prevrashaetsa массив данные podkliuchemi КЖ базе Дев Davaite poprobujem питона pirent Vidum zapustilsja nemoglu посколько sozdaetsa чтобы сервак pyton pirans ИС-шника порт пускай вот теперь зайти aipishniku оказанием порта можем админку работает хорошо neposredstven prilojenie джунгли aipishnika domenno убрать порт ну вообще stroennij proxsi X двигатель единственое ещо сдела проект statick СМИ veriatnost avtomatischsozdana ничего Фейли polzoatel корневого доступа МКД Statick СМИ provereaeti били СМИ anastasik ОКЕИ тогда zavershim immigratsi primeniti пирог migrac сделать чистой ргориѕбыл manualnom управлять пирог на Python управления.piemigrate применять первоначальные миграции убедитесь, что каждое приложение имеет свою собственную папку в противном случае он будет пропускать те приложения, при запуске

Настройка Gunicorn WSGI

00:25:24

Настройка Gunicorn и создание суперпользователя Убедившись, что модели созданы, успешно примените миграции. Создайте суперпользователя, используя "Python manage".py создает суперпользователя с именем пользователя "admin". Соберите все статические файлы с помощью "Python manage.py collectstatic", в результате чего будет скопировано 165 файлов.

Настройка Nginx для работы с Django с помощью Gunicorn Установите Gunicorn в виртуальной среде, но не добавляйте его в требования из-за возможных проблем с локальной установкой. На сервере создайте файлы сокетов и служебные файлы для Gunicorn в разделе "/etc/systemd/system/". Настройте эти файлы, указав данные пользователя, пути к рабочим каталогам, точные имена, соответствующие тем, которые используются в сокетах (например, gunikorn-def.socket), и специфику приложения, например config.wsgi: приложение, основанное на структуре проекта. Активируйте как сокет, так и службу с помощью команд systemctl; проверьте статус active, указывающий на успешную настройку.

Настройка NGINX

00:30:26

Настройка NGINX для обработки доменов и статических файлов Мы начинаем с создания файла конфигурации в каталоге /etc/nginx/sites-available. В этой конфигурации указываются наши доменные имена, включая как www-, так и не-www-версии (например, www.apd.callhelper.ru). Мы определяем местоположения для статических файлов и каталогов мультимедиа, чтобы гарантировать, что NGINX обрабатывает их напрямую, одновременно перенаправляя другие запросы в Gunicorn.

Активация конфигурации с помощью символических ссылок После сохранения конфигурации мы перезапускаем службу NGINX, используя команду "service nginx restart". Чтобы сделать эту новую конфигурацию активной, мы создаем символическую ссылку из каталога "Доступные сайты" в каталог "сайты с поддержкой". Наконец, после повторного запуска служб ("service gunicorn-dev restart") доступ к нашему сайту через его доменное имя подтверждает, что все работает правильно, как ожидалось.

Получение бесплатного SSL-сертификата

00:35:06

Получение бесплатного SSL-сертификата необходимо для защиты нашего сайта, который в настоящее время использует незащищенное HTTP-соединение. Чтобы включить HTTPS, мы будем использовать Certbot для создания бесплатных SSL-сертификатов. Сначала установите необходимые зависимости: Certbot и его плагин Nginx. После установки выполните команды, начиная с ввода адреса электронной почты для получения уведомлений о продлении срока действия сертификата и согласия с условиями предоставления услуг. Система автоматически определяет домены, связанные через Nginx; вы можете создать сертификаты для нескольких доменов, указав их в списке, разделенном пробелами.

Заключение

00:36:42

Мы успешно зарегистрировали доменное имя, связал его в наш ранее созданный сервер и настроил IP-адреса. Наш проект сейчас работает на облачном сервере с HTTPS-соединения Ридо под названием 'Осень helper.ru'. На данный момент мы настроили только серверную часть нашего проекта, однако вскоре последует разработка интерфейса. В следующем стриме мы добавим простую функцию автоматического развертывания, чтобы обновления, сделанные во время стримов, немедленно отображались на этом сервере.