---
title: "Как деплоить приложения Django в сервисе App Platform"
---

# Деплой приложения Django

> Полный индекс документации для ИИ-агентов: [llms.txt](https://timeweb.cloud/llms.txt).

> [!NOTE]
> Пример Django-приложения для деплоя можно найти на [Гитхабе](https://github.com/timeweb-cloud-apps/app-example-django). Также у нас есть [туториал](https://timeweb.cloud/tutorials/cloud/kak-razvernut-prilozhenie-na-django) с практическим примером развертывания Django-приложения в App Platform.

## Сборка приложения

При сборке приложения используется следующая среда:

-   Python 3.10–3.14 (версия выбирается при создании приложения)
-   pip
-   gunicorn
-   Системные библиотеки для работы с PostgreSQL и MySQL

По умолчанию во время сборки будут выполнены следующие команды:

```shell
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
```

Для установки зависимостей в команду сборки добавьте следующую строку:

```shell
pip3 install --upgrade -r requirements.txt
```

Для запуска по умолчанию используется команда:

```shell
python3 manage.py runserver 0.0.0.0:8000
```

Также вы можете задать переменные. Например, можно задать хосты, с которых Django может получать запросы. Для этого укажите ключ `DJANGO_ALLOWED_HOSTS`, а в значении задайте IP-адреса или хостнеймы. Можно указать несколько хостов через запятую, без пробелов. По умолчанию эта переменная принимает значение `127.0.0.1,localhost`.

Подробнее о настройках можно почитать в [документации Django](https://docs.djangoproject.com/en/5.2/ref/settings/).

## Требования к приложению

-   Убедитесь, что файл `manage.py` находится в корне проекта и используется как точка входа в приложение.
-   Убедитесь, что приложение слушает `0.0.0.0`, а не `127.0.0.1`, иначе внешние подключения работать не будут.
-   В настройках необходимо обязательно указать `DEBUG=True`, иначе статика не будет раздаваться.

## Устранение неполадок

### Не удается выполнить развертывание

Если с развертыванием возникают проблемы, в первую очередь проверьте лог деплоя. Вы сможете определить, в какой момент что-то пошло не так. 

Зачастую проблемы связаны с командой запуска. Проверьте, что всё в вашей среде разработки работает с gunicorn. Убедитесь, что все модули, необходимые для запуска приложения, присутствуют в файле `requirements.txt`.

### DisallowedHost at /Invalid HTTP_HOST

Проблема возникает в случае, если в файле `settings.py` не задано имя хоста. 

Данная настройка является мерой безопасности для предотвращения атак с подменой HTTP-заголовка Host (HTTP Host header attacks).

Для устранения проблемы нужно внести изменения в файл `settings.py`, указав в директиве `ALLOWED_HOSTS` используемый вами домен, например:

```shell
ALLOWED_HOSTS = ["your.domain.com"]
```

Вы также можете разрешить все домены, если не хотите использовать эту меру безопасности: 

```shell
ALLOWED_HOSTS = ["*"]
```
