Бесплатная миграция IT-инфраструктуры в облако

Как подключить проект на Django к облачной базе данных

Миша Курушин
Миша Курушин
Технический писатель
20 марта 2024 г.
472
12 минут чтения
Средний рейтинг статьи: 5

Django — это веб-фреймворк высокого уровня, написанный на языке программирования Python и построенный на шаблоне проектирования MVC (Model, View, Controller).

По сути, Django является некой программной платформой (каркасом), компонентами которой управляет разработчик. К составным частям Django относятся:

  • графический интерфейс;

  • программные скрипты элементов приложения;

  • мультимедиа (фото, видео, аудио);

  • базы данных.

Таким образом, сам фреймворк является «ядром» приложения, а периферические настраиваемые модули (компоненты) формируют конкретную функциональность приложения.

В этом руководстве мы сфокусируемся на одной из важных составляющих любого приложения — базе данных, в которой хранится информация о контенте и пользователях.

Сперва мы подготовим окружение (установим Python и Django), после чего настроим облачную базу данных MySQL и подключим ее к Django. Технологический стек будет развернут на виртуальном сервере Timeweb Cloud под управлением операционной системы Ubuntu 22.04.

1. Подготовка окружения

Обновление системы

Обновим список доступных репозиториев:

sudo apt update

А также обновим установленные в системе пакеты:

sudo apt upgrade -y

Установка Python

Перед установкой Python сперва лучше проверить, есть ли он уже в системе:

python3

Если Python уже установлен, в консоли появится соответствующее сообщение, а также откроется режим ввода команд Python:

Python 3.10.12 (main, Nov 20 2023, 15:14:05) [GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.

В этом случае просто выходим из Python:

quit()

Обратите внимание, что в этой инструкции используется версия Python 3.10.12.

Если же Python отсутствует в системе, устанавливаем его через пакетный менеджер APT:

sudo apt install -y python3

Флаг -y используем для автоматического ответа «yes» на все возникающие во время установки вопросы.

Чтобы убедиться в корректности установки, запрашиваем версию Python:

python3 --version

Результат консольного вывода должен быть примерно таким:

Python 3.10.12

Разумеется, ваша версия Python может иметь отличия, однако она должна поддерживать версию используемого фреймворка Django.

Установка виртуальной среды Python

Для работы приложения на Django нам потребуется инструмент для создания виртуальной среды Python:

sudo apt install python3-venv -y

Он будет использован непосредственно перед инициализацией приложения.

Установка пакетного менеджера Pip

Некоторые модули для последней версии Python, которые будут установлены далее, доступны для загрузки только через пакетный менеджер Pip. Поэтому установим его:

sudo apt install python3-pip -y

Для проверки корректности установки проверим версию менеджера:

pip -V

В консоли должно появиться примерно такое сообщение:

pip 22.0.2 from /usr/lib/python3/dist-packages/pip (python 3.10)

В этом руководстве использовался Pip версии 22.0.2.

Создание рабочей директории

Для проекта Django создадим отдельный каталог, в котором будут размещаться исходники:

sudo mkdir work

Сразу же перейдем в созданную директорию:

cd work

И подготовим в ней виртуальную среду Python:

python -m venv venv

Проверим состояние каталога проекта:

ls

Если все прошло успешно, внутри появится папка виртуальной среды:

venv

Теперь выполним активацию виртуальной среды:

source ~/work/venv/bin/activate

Виртуальная среда создана! Теперь можно перейти к инициализации рабочих каталогов Django.

Установка модуля MySQL для Python

Для того, чтобы приложение Django могло взаимодействовать с базой данных MySQL, необходимо установить специальный модуль, служащий дополнением к Python.

При этом предварительно нужно поставить некоторые зависимости:

sudo apt install python3-dev default-libmysqlclient-dev build-essential pkg-config -y

После этого загружаем сам клиент MySQL через Pip:

pip install mysqlclient

При этом сам модуль является частью Python, а не веб-фреймворка Django.

Установка Django

Установим фреймворк Django также через пакетный менеджер APT:

python -m pip install Django

После чего проверим корректность установки, запросив версию фреймворка:

django-admin --version

Если все прошло успешно, в консоли появится примерно такое сообщение:

5.0.3

В этой инструкции используется версия Django 5.0.3. Возможно ваша версия будет иметь отличия, однако она должна поддерживаться установленным в системе интерпретатором Python.

2. Создание приложения

Сперва нужно пояснить, что любые разработки на Django состоят из двух абстрактных сущностей, в понимании которых может возникнуть путаница:

  • Проект. Это программа на Django в целом, которая состоит из некоторых частей — приложений.

  • Приложение. Это своего рода компонент проекта. Как правило, в приложение изолируется узкий набор функций.

Поэтому мы последовательно инициализируем каталог проекта и каталог приложения, а далее отредактируем сгенерированный файл настроек, вручную указав Django, что созданное приложение связано с созданным проектом.

Создание проекта

Сперва создадим специальную директорию проекта:

django-admin startproject project .

В данном случае project — имя проекта, которое может быть произвольным. Однако нельзя использовать названия встроенных компонентов Python и Django. Например, при использовании имени test возникнет ошибка из-за конфликта со стандартным пакетом Python.

Также не забудьте добавить точку (.) в конце команды создания. Если этого не сделать, Django создаст дополнительный вложенный каталог проекта — внутри директории project будет еще одна директория project.

Проверим рабочий каталог:

ls

В нем должна появиться директория созданного проекта с соответствующим именем:

project  manage.py  venv

Перейдем в каталог приложения:

cd project

И посмотрим на его состояние:

ls

В консоли появится список основных файлов проекта Django:

asgi.py  __init__.py  settings.py  urls.py  wsgi.py

Файл settings.py является основным конфигурационным файлом Django — именно в нем соединяется проект с приложением, а также указываются данные для доступа к внешней базе данных.

Создание приложения

Поднимемся на уровень выше в каталог work:

cd ..

После чего инициализируем каталог приложения с помощью ранее появившейся утилиты управления manage.py:

python manage.py startapp application

Теперь проверим состояние директории work:

ls

Как видно, рядом с каталогом проекта project появился каталог приложения application:

application  manage.py  project  venv

Обратите внимание, что application находится на том же уровне, что и project, а не внутри него.

Первичная конфигурация приложения

Теперь мы должны подключить созданное приложение к проекту Django. Для этого мы перейдем в каталог проекта:

cd project

После чего откроем основной файл настроек проекта — settings.py:

sudo nano settings.py

Здесь нам нужно найти переменную INSTALLED_APPS и видоизменить ее до следующего состояния:

INSTALLED_APPS = [
	'django.contrib.admin',
	'django.contrib.auth',
	'django.contrib.contenttypes',
	'django.contrib.sessions',
	'django.contrib.messages',
	'django.contrib.staticfiles',
	'application.apps.ApplicationConfig',
]

По сути, мы добавили еще одну строку в массив. В этой строке префиксы application и Application (тот, который ApplicationConfig) указывают на название созданного приложения.

В этом же файле найдем другую переменную ALLOWED_HOSTS и добавим в нее IP-адрес удаленного сервера (в этом руководстве используется облачный сервер Timeweb Cloud), на который была выполнена установка Django.

Например, отредактированная переменная может выглядеть так:

...
ALLOWED_HOSTS = ['90.156.208.243']
...

Сохраняем и выходим. Теперь можно вернуться обратно на уровень выше:

cd ..

Запуск веб-приложения

Перед запуском сервера выполним команду предварительной миграции базы данных Django, чтобы в консоли не возникало ошибок:

python3 manage.py migrate

По умолчанию Django работает со SQLite, однако чуть позже мы заменим ее на MySQL и повторно выполним миграцию.

Теперь создадим пользователя Django:

python3 manage.py createsuperuser

В консольном терминале появится предложение ответить на несколько вопросов:

Username (leave blank to use 'root'):
Email address: any.email@domain.ru
Password:
Password (again):
Superuser created successfully.

Таким образом, заполняем следующую информацию:

  • Имя пользователя

  • Email

  • Пароль

  • Пароль (повторно)

Далее запустим непосредственно сам сервер:

python manage.py runserver 0.0.0.0:80

Обратите внимание, что мы запускаем сервер на 80 порту (вместо стандартного 8000 порта, который использует Django по умолчанию) для того, чтобы иметь возможность открыть сайт через браузер без явного указания порта в адресной строке.

Далее открываем браузер и вводим адрес вашего удаленного сервера в браузер. Например, адрес может быть таким:

http://90.156.208.243

Запущенный сервер должен возвращать стандартную страницу Django, сообщающую об успешной установке фреймворка.

Image2

Также вы можете зайти в панель администратора Django, введя в адресную строку браузера следующий адрес:

http://YOUR_IP/admin

Например, адрес может быть таким:

http://90.156.208.243/admin

После этого в окне браузера появится форма авторизации, в которую необходимо ввести логин и пароль, указанные при создании пользователя Django.

Image9

Сама админ-панель выглядит просто и показывает только таблицу с пользователями, группы доступа и историю последних действий.

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

Image7

Пока что можно выключить сервер Django, нажав на клавиатуре сочетание клавиш Ctrl + C.

3. Создание базы данных

В этой инструкции будет использоваться облачная база данных MySQL, размещенная на инфраструктуре Timeweb Cloud. Процесс создания, настройки, управления и работы с базой данных будет выполняться через графический интерфейс панели управления.

Соответственно необходимо предварительно авторизоваться на странице входа в Timeweb Cloud.

Создание и запуск базы данных

Чтобы перейти к созданию базы данных, нужно выполнить несколько действий в панели управления Timeweb Cloud:

  • В левом меню перейти во вкладку Базы данных

  • В открывшемся разделе нажать на кнопку Создать

33433be5 33c3 4048 8cca D009641e0660

После этого вы окажетесь на странице создания (конфигурации) базы данных, где Timeweb Cloud предложит вам выбрать конкретный тип БД, локацию серверов, мощность по тарифу и ряд сетевых настроек:

На момент написания этой инструкции доступны следующие типы баз данных:

  • MySQL

  • PostgreSQL

  • Redis

  • MongoDB

  • OpenSearch

  • ClickHouse

  • Kafka

  • RabbitMQ

F42a005c 9592 40b9 Bee0 Caea90cb4b77

В этой инструкции мы будем использовать MySQL, размещенную на серверах в Санкт-Петербурге. Тарифный план можно выбрать индивидуально в зависимости от предполагаемых нагрузок вашего проекта.

В самой нижней части страницы создания БД нужно заполнить информацию о базе данных:

  • Название

  • Пароль (для лучшей безопасности рекомендуется использовать генерацию)

Image4

Стоимость аренды будет рассчитываться на основе выбранных настроек, отображаясь на кнопке Заказать. По окончании конфигурации жмем на нее.

После этого вас перекинет на страницу управления базой данных. Первые несколько минут база будет находиться в статусе Запуск, после чего перейдет в состояние Включена.

Image1

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

На странице управления БД перейдем во вкладку Базы данных, которая расположена в верхнем горизонтальном (а не левом вертикальном) меню.

Для начала удалим уже существующую БД default_db. Для этого жмем на 3 точки справа и выбираем Удалить из выпадающего списка. Во всплывающем окне подтверждаем удаление с помощью кнопки Да, удалить.

Image5

После этого создадим новую базу данных, нажав на кнопку Добавить. В названии указываем django_db и жмем кнопку Создать.

Далее переходим во вкладку Пользователи, чтобы назначить права доступа для созданной БД.

Обратите внимание, что на этой странице указаны имя и пароль пользователя БД, которые мы указывали (только пароль, имя стандартное) при создании базы данных. Впоследствии их нужно будет внести в конфигурационный файл Django, поэтому запомните их местонахождение в панели управления.

Жмем на 3 точки справа от существующего стандартного пользователя, после чего в выпадающем списке выбираем Привилегии.

Image6

На открывшейся странице база данных django_db будет уже выбрана, т.к. других БД не существует. Активируем все переключатели, наделяя пользователя всеми возможными полномочиями — по крайней мере, в рамках этой инструкции.

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

Image10

Теперь созданную базу данных можно подключать к проекту Django.

4. Подключение базы данных

Теперь нам необходимо обеспечить коммуникацию приложения Django с базой данной MySQL.

Для этого мы откроем конфигурационный файл приложения Django:

sudo nano ./project/settings.py

Найдем внутри параметр DATABASES и перезапишем его следующим содержимым:

DATABASES = {
	'default': {
		'ENGINE': 'django.db.backends.mysql',
		'NAME': 'django_db',
		'HOST': '92.51.37.252',
		'PORT': 3306,
		'USER': 'gen_user',
		'PASSWORD': 'some_password'
	}
}

В соответствующих параметрах мы указали:

  • Название «коннектора», который будет использоваться для коммуникации Django с MySQL

  • Имя созданной БД

  • Адрес облачной базы данных Timeweb Cloud

  • Стандартный порт MySQL

  • Пользователь MySQL, которого мы наделили правами доступа

  • Пароль пользователя MySQL

Теперь можно снова выполнить миграцию базы данных:

python3 manage.py migrate

После чего запустить сервер:

python manage.py runserver 0.0.0.0:80

Если все предыдущие этапы были выполнены корректно, в консоли появится стандартное сообщение о запуске:

Performing system checks...

System check identified no issues (0 silenced).
February 20, 2024 - 00:56:50
Django version 3.2.12, using settings 'application.settings'
Starting development server at http://0.0.0.0:80/
Quit the server with CONTROL-C.

При этом стандартная страница приложения Django опять станет доступна в браузере по IP-адресу вашего сервера.

Заключение

В этой инструкции было рассмотрено подключение облачный базы данных MySQL от Timeweb Cloud к самому простому проекту на веб-фреймворке Django.

В частности, было подробно показано, как:

  • Установить последнюю стабильную версию Python (в нашем случае это была версия 3.10.12)

  • Установить соответствующую версию фреймворка Django (была использована версия 5.0.3)

  • Подготовить виртуальную среду (venv) Python, в которой будет работать приложение Django

  • Инициализировать каталог проекта Django

  • Инициализировать каталог приложения Django

  • Выполнить базовую конфигурацию приложение Django

  • Создать и сконфигурировать базу данных MySQL через панель управления Timeweb Cloud

  • Подключить базу данных MySQL к приложению Django

Более подробную информацию (туториалы, гайды, документацию) о продвинутом использовании Django можно найти на официальном сайте фреймворка.

Хотите внести свой вклад?
Участвуйте в нашей контент-программе за
вознаграждение или запросите нужную вам инструкцию
img-server
20 марта 2024 г.
472
12 минут чтения
Средний рейтинг статьи: 5
Пока нет комментариев