Введение
Django – это бесплатный и открытый веб-фреймворк, написанный на Python. Этот инструмент обеспечивает масштабируемость, повторное использование и быструю разработку.
В этом учебнике вы узнаете, как настроить начальное основание для веб-сайта блога с подключениями к базе данных MySQL. Для этого потребуется создать скелетную структуру веб-приложения блога с использованием django-admin
, создать базу данных MySQL и подключить веб-приложение к базе данных.
Django предоставит вам среду разработки для работы над вашим веб-приложением блога, но вам придется предпринять дополнительные шаги, прежде чем ваш блог станет доступным в интернете.
Предварительные требования
Для выполнения этого учебника вам понадобится:
- Сервер Ubuntu 22.04 с не-root
sudo
-enabled пользователем и брандмауэром. Следуйте нашему руководству по настройке начального сервера Ubuntu 22.04, чтобы настроить это. - MySQL установлен для обслуживания базы данных. Вы можете настроить это, следуя нашему руководству по Как установить MySQL на Ubuntu 22.04.
- A Python environment set up. For this, follow our tutorial on How To Install Python 3 and Set Up a Programming Environment on Ubuntu 22.04
.
После установки и настройки вы можете перейти к первому шагу.
Шаг 1 — Создание базы данных
Django поддерживает ряд популярных систем управления базами данных, но в этом руководстве рассматривается подключение Django к базе данных MySQL. Для этого вам необходимо создать базу данных на вашем экземпляре MySQL, а также профиль пользователя MySQL, который Django сможет использовать для подключения к базе данных.
Для настройки этого подключитесь к вашей базе данных MySQL в качестве пользователя MySQL root с помощью следующей команды:
Вы поймете, что находитесь в сервере MySQL, когда приглашение изменится:
Изучите текущие базы данных с помощью следующей команды:
Ваш вывод будет аналогичен следующему, предполагая, что вы еще не создали никаких баз данных:
Output+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
По умолчанию у вас уже будет создано 4 базы данных: information_schema
, MySQL
, performance_schema
и sys
. Вам не нужно будет их трогать, так как они содержат информацию, важную для самого сервера MySQL.
Вместо этого создайте начальную базу данных, которая будет содержать данные для вашего блога.
Чтобы создать базу данных в MySQL, выполните следующую команду, используя осмысленное имя для вашей базы данных:
При успешном создании базы данных вывод будет следующим:
OutputQuery OK, 1 row affected (0.00 sec)
Убедитесь, что база данных теперь перечислена среди доступных баз данных:
База данных blog_data
теперь должна быть перечислена среди баз данных, включенных в вывод:
Output+--------------------+
| Database |
+--------------------+
| information_schema |
| blog_data |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
Затем создайте отдельную учетную запись MySQL, которую Django будет использовать для работы с новой базой данных. Создание конкретных баз данных и учетных записей может поддерживать вас с точки зрения управления и безопасности. В этом руководстве мы будем использовать имя djangouser. Вы можете использовать любое имя, которое вам нравится, но может быть полезно выбрать описательное имя.
Вы собираетесь создать эту учетную запись, установить пароль и предоставить доступ к созданной вами базе данных. Сначала создайте пользователя и установите его пароль, набрав следующую команду. Помните, что для вашей базы данных следует выбрать надежный пароль, заменив password
в этом примере:
Дайте базе данных знать, что djangouser должен иметь полный доступ к настроенной вами базе данных:
Теперь у вас есть база данных и учетная запись пользователя, каждая создана специально для Django. Сбросьте привилегии, чтобы текущий экземпляр MySQL знал о внесенных вами последних изменениях:
После завершения выходите из сервера MySQL, написав EXIT;
или нажав CTRL + D
.
Шаг 2 — Создание файла опций MySQL
Вместо указания данных о подключении к MySQL в файле конфигурации Django вы можете сохранить их в файле опций. Многие программы MySQL могут читать файлы опций — также известные как файлы конфигурации — для получения информации, такой как параметры запуска или данные о подключении. Это может быть удобно, так как вам нужно хранить данные для входа в базу данных только в одном месте.
Откройте файл конфигурации my.cnf
с помощью выбранного вами текстового редактора, чтобы обновить учетные данные MySQL. Здесь мы будем использовать nano
:
Добавьте следующие строки и включите свою актуальную информацию:
…
[client]
database = blog_data
user = djangouser
password = your_actual_password
default-character-set = utf8
Обратите внимание, что utf8
установлен по умолчанию как кодировка. Это распространенный способ кодирования данных Unicode в MySQL. Когда вы уверены, что ваши данные верны, сохраните и закройте файл. Если вы использовали nano
для редактирования файла, вы можете сделать это, нажав CTRL + O
для сохранения файла, а затем CTRL + X
для закрытия редактора.
После редактирования файла перезапустите MySQL, чтобы изменения вступили в силу:
Обратите внимание, что перезапуск MySQL занимает несколько секунд, поэтому будьте терпеливы.
Шаг 3 — Создание начального каркаса проекта Django
На этом этапе вы заложите основы вашего приложения, создав каркас проекта с помощью команды django-admin
.
Перейдите в каталог, где вы хотите создать приложение для блога. Внутри этого каталога создайте специальный каталог для построения приложения. Назовите каталог каким-то значимым образом для приложения, которое вы создаете. В качестве примера мы назовем наше my_blog_app
:
Теперь перейдите в только что созданный каталог:
Затем перейдите в среду программирования, которую вы хотите использовать для работы в Django. Вы можете использовать существующую среду или создать новую. Следующая команда создает новую среду с именем env
, но вы должны использовать имя, которое имеет смысл для вас:
Как только она создана, вы можете активировать ее:
Теперь установите Django в эту среду, если вы еще этого не сделали:
Находясь в каталоге my_blog_app
, создайте проект, выполнив следующую команду:
Проверьте, что это сработало, перейдя в каталог blog/
:
Затем выполните команду ls
, чтобы убедиться, что необходимые файлы и каталоги были созданы внутри папки проекта:
Вывод будет содержать каталог blog
и файл manage.py
:
Outputblog manage.py
Теперь, когда вы создали каталог проекта, содержащий начальный запуск вашего приложения блога, вы можете перейти к следующему шагу.
Шаг 4 — Установка коннектора базы данных MySQL
Для использования MySQL в вашем проекте вам понадобится библиотека коннектора базы данных Python 3, совместимая с Django. В этом шаге рассматривается установка одного из таких коннекторов базы данных, mysqlclient
, который является форком версии MySQLdb
.
Сначала установите необходимые заголовки и библиотеки разработки MySQL:
Затем используйте pip
для установки пакета wheel
. Wheel – это формат упаковки, используемый в Python для установки модулей из индекса пакетов Python. Установка программ на Python из пакетов wheel обычно происходит быстрее и более ресурсоэффективно, чем сборка пакетов из исходного кода. Чтобы установить и работать с программами, упакованными в виде wheel, сначала убедитесь, что установлен пакет wheel
:
Затем продолжите установку mysqlclient
:
Ваш результат будет аналогичен следующему, что подтверждает успешную установку клиента:
Output...
Successfully installed mysqlclient-2.1.1
Теперь вы успешно установили клиент MySQL с использованием библиотеки коннектора PyPi mysqlclient
.
Шаг 5 — Редактирование настроек
Когда вы ранее запускали django-admin
, он создал файл конфигурации для Django с именем settings.py
. Вам нужно изменить несколько параметров по умолчанию в этом файле, чтобы все работало правильно.
Чтобы отредактировать файл, откройте путь к файлу в выбранном вами текстовом редакторе:
Чтобы вашему блогу было присвоено правильное время для вашего региона, вы можете отредактировать файл settings.py
, чтобы он использовал ваш часовой пояс. Вы можете использовать этот список часовых поясов в качестве справки. Для нашего примера мы будем использовать время America/New_York
.
Внутри файла найдите поле TIME_ZONE
в нижней части файла:
...
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
...
Измените строку TIME_ZONE
, чтобы она была установлена на ваш текущий часовой пояс. В этом примере мы будем использовать часовой пояс для Нью-Йорка:
...
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'America/New_York'
USE_I18N = True
...
Оставьте файл открытым, потому что далее вам нужно добавить путь для ваших статических файлов. Файлы, которые обслуживаются из вашего веб-приложения Django, называются статическими файлами. Это может включать любые файлы, необходимые для отображения полной веб-страницы, включая JavaScript, CSS и изображения.
Перейдите в конец файла settings.py
и добавьте STATIC_ROOT
:
…
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
...
Теперь, когда вы добавили часовой пояс и путь для статических файлов, добавьте свой IP-адрес в список разрешенных хостов. Перейдите к строке файла settings.py
, где указано ALLOWED_HOSTS
, это будет ближе к верху файла settings.py
. Добавьте IP-адрес вашего сервера, окруженный одинарными кавычками, между квадратными скобками:
...
ALLOWED_HOSTS = ['your_server_IP_address']
...
Далее добавьте модуль Python OS, который предоставляет различные функции для работы с каталогами. Без этого модуля вы получите ошибку при настройке административного пользователя для начала использования интерфейса Django. Для этого вам нужно импортировать модуль os
, который будет работать в вашей соответствующей операционной системе. Добавьте строку import os
выше строки from pathlib import Path
:
...
import os
from pathlib import Path
...
На данный момент вы изменили файл settings.py
, чтобы правильно сконфигурировать часовой пояс. Вы также добавили путь для ваших статических файлов, установили ваш IP-адрес в качестве ALLOWED_HOST
для вашего приложения и импортировали модуль Python OS, чтобы помочь настроить административного пользователя позже.
Последний фрагмент, который нужно добавить в ваш файл, – это учетные данные для подключения к базе данных, чтобы подключить ваше приложение блога Django к MySQL. Для этого найдите словарь DATABASES
внутри файла. По умолчанию он будет выглядеть следующим образом:
…
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
...
Замените параметры ENGINE
и NAME
словаря DATABASES
следующими строками:
...
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'OPTIONS': {
'read_default_file': '/etc/mysql/my.cnf',
},
}
}
...
Строка 'ENGINE': 'django.db.backends.mysql'
указывает Django использовать встроенную бэкэнд базы данных MySQL. Опция read_default_file
указывает на /etc/mysql/my.cnf
, файл опций MySQL, который вы редактировали ранее. Это говорит Django, где он может найти соответствующие данные для подключения к базе данных MySQL, созданной в Шаге 1.
Обратите внимание, что Django считывает настройки подключения к базе данных в следующем порядке:
OPTIONS
NAME
,USER
,PASSWORD
,HOST
,PORT
- Файлы опций MySQL
Указав Django на ваш файл опций MySQL в рамках настройки OPTIONS
, как в этом примере, он будет иметь приоритет перед любой настройкой NAME
, которая в противном случае заменяла бы файл опций, если бы вы указали на него вне настройки OPTIONS
.
На этом этапе вы можете сохранить и закрыть файл.
Затем проверьте изменения миграции, запустив следующее:
Затем выполните migrate
, чтобы убедиться, что изменения прошли:
Теперь, когда ваши изменения были применены, вы можете создать административного пользователя для использования в интерфейсе администратора Django. Сделайте это с помощью команды createsuperuser
:
Вам будет предложено ввести имя пользователя, адрес электронной почты и пароль для вашего пользователя.
После ввода этой информации вы можете перейти к настройке настроек брандмауэра для разрешения тестирования.
Шаг 6 — Настройка параметров брандмауэра
Прежде чем тестировать ваше веб-приложение Django, убедитесь, что параметры вашего брандмауэра были настроены. Начните с изменения параметров ufw
для разрешения доступа к порту 8000
:
Проверьте статус, чтобы убедиться, что эти разрешения были успешно обновлены:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
8000 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
8000 (v6) ALLOW Anywhere (v6)
Теперь параметры вашего брандмауэра настроены правильно, чтобы позволить тестировать ваше соединение на следующем шаге.
Шаг 7 — Проверка подключения к приложению MySQL
Теперь вы можете убедиться, что конфигурации в Django правильно определяют ваш сервер MySQL. Для этого запустите сервер. Если он не запускается, значит, соединение работает неправильно. В противном случае, соединение действительно работает.
Сначала перейдите в следующий каталог:
Затем выполните следующую команду:
Вы получите вывод, аналогичный следующему:
OutputPerforming system checks...
System check identified no issues (0 silenced).
July 19, 2022 - 13:26:08
Django version 4.0.6, using settings 'blog.settings'
Starting development server at http://your-server-ip:8000/
Quit the server with CONTROL-C.
Примечание: Вы заметите, что у вас есть непримененные миграции в выводе. Не волнуйтесь, это не влияет на начальную настройку вашего приложения, и вы можете продолжать.
Следуйте инструкциям из вывода и перейдите по предложенной ссылке http://your-server-ip:8000/
, чтобы просмотреть ваше веб-приложение и проверить, что оно работает правильно.
Если ваша страница выглядит похоже на скриншот выше, ваше приложение Django работает ожидаемым образом.
Когда вы закончите тестирование вашего приложения, нажмите CTRL + C
, чтобы остановить команду runserver
. Это вернет вас в ваше программное окружение.
Когда вы будете готовы покинуть свою среду Python, вы можете выполнить команду deactivate
:
Деактивация вашего программного окружения вернет вас к командной строке терминала.
Заключение
В этом руководстве вы создали первоначальное основание вашего блога Django. Вы установили, настроили и подключили MySQL к бэкэнду Django. Вы также добавили некоторую важную информацию в файл settings.py
вашего приложения, такую как TIME_ZONE
, ALLOWED_HOSTS
, import os
и учетные данные базы данных для подключения вашего приложения Django к MySQL. Вы также настроили настройки брандмауэра, чтобы обеспечить плавное тестирование.
Теперь, когда эти основные настройки и конфигурации завершены, вы можете начать разрабатывать модели и применять миграции в вашем приложении Django.