Пошаговая инструкция по деплою приложения Django в сервисе Apps и устранению возможных ошибок.
Пример Django-приложения для деплоя можно найти на Гитхабе.
Чтобы развернуть приложение Django, перейдите в раздел Apps и кликните на кнопку «Создать».
В пункте «Тип» перейдите на вкладку Backend и выберите Python — Django.
Вы можете подключить репозиторий:
Подробнее о подключении репозиториев — здесь.
1. Выберите ветку для деплоя.
2. По умолчанию мы включаем опцию «Сборка по последнему выполненному коммиту». В этом случае сервис Apps выполнит деплой по самому актуальному коммиту, а в дальнейшем будет автоматически пересобирать приложение при добавлении новых коммитов в репозиторий.
При необходимости вы сможете отключить автодеплой в дальнейшем.
Если вы хотите выбрать конкретный коммит вручную — отключите эту опцию.
Приложение Django должно быть развернуто на отдельном облачном сервере. Выберите регион размещения сервера и его конфигурацию.
В дальнейшем, если потребуется, вы сможете перейти на более мощный тариф.
Сервис автоматически определит команду сборки для вашего проекта, поэтому в большинстве случаев этот параметр можно оставить без изменений. Если в проекте есть файл requirements.txt
, мы поставим зависимости из него. Сервис использует версию Python 3.8.
По умолчанию для сборки приложения Django мы выполним следующее:
apt-get install -y python3 python3-pip gunicorn python3-psycopg2 libpq-dev python-dev default-mysql-client python3-dev default-libmysqlclient-dev python3-mysqldb --fix-missing
pip3 install psycopg2 django
ln /usr/bin/python3 /usr/bin/python -sf
ln /usr/bin/pip3 /usr/bin/pip -sf
Также, при наличии requirements.txt
:
pip3 install --upgrade -r requirements.txt
Если вы понимаете, что вам нужно модифицировать процесс сборки, вы можете указать дополнительную команду сборки (несколько команд можно объединять с помощью &&
). Например, если требуется установить определенные драйверы, добавьте в команду сборки:
apt install имя_пакета
В качестве команды запуска по умолчанию будет использоваться:
python3 manage.py runserver 0.0.0.0:8000
Убедитесь, что файл запуска имеет имя manage.py
.
Также здесь можно задать переменные. Например, можно задать хосты, с которых Django может получать запросы. Для этого укажите ключ DJANGO_ALLOWED_HOSTS
, а в значении задайте IP-адреса или хостнеймы. Можно указать несколько хостов через запятую, без пробелов. По умолчанию эта переменная принимает значение 127.0.0.1,localhost
.
Для Django-приложений необходимо обязательно указать в настройках
DEBUG=True
, иначе статика не будет раздаваться.
Подробнее о настройках можно почитать в документации Django.
У вас будет возможность внести изменения в любые из этих параметров в дальнейшем и перезапустить деплой с новыми настройками, если потребуется.
Задайте свое имя приложения, если требуется, и комментарий к нему. Это данные, которые будут отображаться в панели управления.
Также выберите, в какой проект его нужно добавить.
Эти настройки также можно изменить в дальнейшем.
Нажмите «Запустить деплой». Как только процесс начнется, вы увидите лог деплоя на вкладке «Деплой».
Как правило, он содержит всю необходимую информацию для устранения возможных ошибок. Если что-то пойдет не так, например, из-за наличия ошибок в коде, в логе будут выведены уведомления о них с уточнением причины проблемы.
При первом развертывании проекта установка сервера может занять некоторое время. Как только процесс завершится, статус приложения обновится, а запись о завершении будет выведена в логе.
Готово! Ваш проект развернут и готов к работе.
В дальнейшем Apps будет отслеживать обновления в репозитории и, если включен автодеплой, автоматически перезапускать проект с новыми изменениями.
IP-адрес приложения и бесплатный технический домен, привязанный к нему по умолчанию, можно найти на вкладе «Дашборд». Приложение будет доступно по 443 порту; порт 80 также открыт.
Привязать собственный домен можно по нашей инструкции.
Если с развертыванием возникают проблемы, в первую очередь проверьте лог деплоя. Вы сможете определить, в какой момент что-то пошло не так.
Зачастую проблемы связаны с командой запуска. Проверьте, что всё в вашей среде разработки работает с gunicorn
. Убедитесь, что все модули, необходимые для запуска приложения, присутствуют в файле requirements.txt
.
Проблема возникает в случае, если в файле settings.py
не задано имя хоста.
Данная настройка является мерой безопасности для предотвращения атак с подменой HTTP-заголовка Host
(HTTP Host header attacks).
Для устранения проблемы нужно внести изменения в файл settings.py
, указав в директиве ALLOWED_HOSTS
используемый вами домен, например:
ALLOWED_HOSTS = ["your.domain.com"]
Вы также можете разрешить все домены, если не хотите использовать эту меру безопасности:
ALLOWED_HOSTS = ["*"]