
Django — веб-фреймворк на языке Python, предназначенный для быстрого создания безопасных и масштабируемых веб-приложений. Фреймворк включает в себя всё необходимое, что называется, «из коробки»: ORM (Object-Relational Mapping), аутентификацию, панель управления, маршрутизацию и многое другое. Благодаря принципу DRY (Don’t Repeat Yourself) и удобной архитектуре Django популярен среди разработчиков, стремящихся к чистому и эффективному коду.
В статье разберём, как установить Django на виртуальный сервер, работающий под управлением Debian 12.
Как установить Django на Debian 12
Поскольку все скрипты, настройки и разработка веб-приложений в Django ведутся с использованием Python, перед установкой и использованием данного фреймворка необходимо установить Python.
До того, как начать работу по инсталляции в систему нового софта, рекомендуется при помощи пакетного менеджера apt
обновить информацию о версиях доступных пакетов:
$ sudo apt update
Затем установите базовый набор для начала работы с Python:
$ sudo apt install python3 python3-pip python3-venv
Данная команда производит установку трёх ключевых компонентов для работы с Python:
python3
— основная версия Python;python3-pip
— менеджер пакетовpip
для Python 3;python3-venv
— модульvenv
, предназначенный для создания виртуальных окружений Python.
Чтобы проверить версию Python, выполните команду:
$ python3 --version
Её вывод выглядит примерно следующим образом:

Далее можно переходить к установке непосредственно Django. Как правило, на практике используются два основных способа установки — установка через pip и из локального репозитория Debian.
Установка через pip
pip
— стандартный менеджер пакетов для Python, который используется для установки, обновления и удаления библиотек и фреймворков, в том числе и Django.
Перед установкой Django убедитесь, что в вашей системе установлен pip
, для чего следующей командой проверьте его версию:
$ pip3 --version
В нашем примере в системе установлен pip
версии 23.0.1:

Если pip
установлен, перейдите в свой домашний каталог:
$ cd ~
После чего создайте виртуальное окружение под именем, например, yourvenv
:
$ python3 -m venv yourvenv
Затем активируйте его:
$ source yourvenv/bin/activate
Далее, используя менеджер pip
, проинсталлируйте Django:
$ pip install django
После завершения инсталляции проверьте версию Django:
$ django-admin --version
Вывод команды выглядит примерно следующим образом:

Чтобы выйти из виртуального окружения, выполните команду:
$ deactivate
Создание проекта
После установки Django можно попробовать создать пробный тестовый проект. Для этого перейдите в домашний каталог:
$ cd ~
Создайте виртуальное окружение:
$ python3 -m venv yourvenv
Активируйте его:
$ source yourvenv/bin/activate
Затем в текущем каталоге создайте проект yourproject
:
$ django-admin startproject yourproject .
В команде выше точка (.
) означает, что проект создаётся именно в текущей папке, а не во вложенной.
После чего примените стандартные миграции к базе данных текущего проекта:
$ python3 manage.py migrate
На экране должно появиться что-то похожее на изображённое на скриншоте ниже:

Для подключения к панели администрирования проекта, создайте учётную запись суперпользователя:
$ python3 manage.py createsuperuser
При создании укажите имя пользователя, адрес электронной почты (опционально) и дважды введите пароль:

Чтобы можно было подключиться к веб-интерфейсу извне, нужно внести небольшое изменение в конфигурацию проекта:
$ nano yourproject/settings.py
В файле найдите параметр ALLOWED_HOSTS
и укажите в качестве его значения IP-адрес вашего виртуального сервера:
ALLOWED_HOSTS = ['X.X.X.X']
Затем закройте файл с сохранением изменений.
По умолчанию Django запускает сервер разработки на порту 8000, поэтому для получения к нему доступа добавьте в брандмауэр UFW правило, разрешающее подключения по TCP-порту 8000:
$ sudo ufw allow 8000
Теперь всё готово к запуску встроенного сервера разработки Django с возможностью доступа к нему с любого IP-адреса в сети:
$ python3 manage.py runserver 0.0.0.0:8000
Данная команда используется для запуска встроенного сервера только для разработки и тестирования. Встроенный сервер Django не подходит для продакшена из-за своей низкой производительности, потому что обрабатывает только один запрос за раз, и в нём нет поддержки HTTPS и оптимизации под нагрузку.
После запуска встроенного сервера разработки Django откройте браузер и перейдите по ссылке http://X.X.X.X:8000/admin
, где замените X.X.X.X
на IP-адрес вашего VPS.

Для аутентификации используйте имя и пароль учётной записи, созданной ранее.

Чтобы остановить сервер Django, в командной строке нажмите Ctrl
c
. А чтобы закрыть подключение к виртуальному окружению, используйте команду:
$ deactivate
Установка из репозитория Debian
Django также доступен для установки из локального репозитория Debian. Для его инсталляции с использованием пакетного менеджера apt
запустите команду:
$ sudo apt install python3-django
Чтобы убедиться в том, что установка завершена успешно, выведите версию Django:
$ django-admin --version
Как правило, репозиторий Debian содержит менее актуальную версию, чем версия, доступная через pip
.

После чего вы можете создать новый проект, например, в текущей директории:
$ django-admin startproject yourproject .
После создания проекта примените стандартные миграции к базе данных:
$ python3 manage.py migrate
Создайте учётную запись суперпользователя для подключения к панели управления:
$ python3 manage.py createsuperuser
Откройте файл с настройками проекта:
$ nano yourproject/settings.py
И, чтобы разрешить доступ к серверу извне, укажите IP-адрес вашей виртуальной машины в качестве значения параметра ALLOWED_HOSTS
:
ALLOWED_HOSTS = ['X.X.X.X']
В брандмауэр UFW добавьте разрешающее правило для порта, на котором Django запускает сервер разработки:
$ sudo ufw allow 8000
После чего запустите сервер разработки Django:
$ python3 manage.py runserver 0.0.0.0:8000
Если сервер запустился без ошибок, проверьте доступность панели управления, перейдя на http://X.X.X.X:8000/admin
и указав IP-адрес вашего VPS вместо X.X.X.X
.
Для того, чтобы остановить сервер, используйте комбинацию клавиш Ctrl
c
.