Django-приложение на MariaDB в CentOS 7

Django – это гибкий фреймворк для быстрой разработки Python-приложений. По умолчанию приложения Django настроены для использования легковесной базы данных SQLite, но её ресурсов может не хватить для поддержки объёмных приложений, потому рекомендуется сразу установить и настроить более традиционную СУБД.

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

Требования

Для выполнения руководства понадобится свежий сервер CentOS 7 и не-рутовый пользователь с расширенными привилегиями sudo. Более подробную информацию о предварительной настройке свежего сервера CentOS 7 можно найти в этом руководстве.

Подключение репозитория EPEL

Для начала нужно установить инструменты из репозитория, среди которых pip (менеджер пакетов Python, позволяющий устанавливать и управлять компонентами Python), база данных и все необходимые библиотеки.

Некоторое программное обеспечение находится в репозитории EPEL. Чтобы добавить EPEL, введите:

sudo yum install epel-release

Включив репозиторий EPEL, установите следующие пакеты:

sudo yum install python-pip python-devel gcc mariadb-server mariadb-devel

После установки запустите MariaDB как сервис:

sudo systemctl start mariadb
sudo systemctl enable mariadb

Затем запустите простой скрипт безопасности:

sudo mysql_secure_installation

При этом будет запрошен пароль администратора (пока что такого пароля нет, поскольку программа была установлена только что); просто нажмите ENTER, чтобы продолжить. Затем будет предложено изменить root-пароль, обязательно сделайте это. На остальные вопросы можно просто нажать ENTER, чтобы принять настройки по умолчанию.

Установив СУБД, нужно создать базу данных и пользователя для неё.

Создание базы данных и пользователя

Сначала откройте интерактивную сессию СУБД:

mysql -u root -p

При этом будет запрошен root-пароль.

Создайте БД для Django-приложения. В целях безопасности каждый проект должен иметь собственную базу данных. В данном руководстве БД имеет условное имя myproject, но лучше выбрать более описательное имя. Установите стандартный тип базы данных UTF-8, чего требует Django:

CREATE DATABASE myproject CHARACTER SET UTF8;

Примечание: Все команды в сессии SQL должны заканчиваться символом точки с запятой.

Затем нужно создать пользователя БД для подключения и взаимодействия с ней. Выберите надёжный пароль:

CREATE USER myprojectuser@localhost IDENTIFIED BY 'password';

Теперь осталось только установить права доступа к БД:

GRANT ALL PRIVILEGES ON myproject.* TO myprojectuser@localhost;

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

FLUSH PRIVILEGES;

Закройте командную строку SQL и вернитесь в сессию оболочки:

exit

Установка Django в virtualenv

Итак, теперь БД готова к работе, можно переходить к установке Django. Виртуальная среда (Python virtual environment) сделает установку программы более гибкой.

Чтобы получить пакет virtualenv, введите:

sudo pip install virtualenv

Создайте каталог для хранения проекта Django и перейдите в него:

mkdir ~/myproject
cd ~/myproject

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

virtualenv myprojectenv

Это установит локальную копию Python и pip в каталог myprojectenv в кталоге проекта.

Прежде чем приступить к установке приложения в виртуальную среду, нужно активировать её:

source myprojectenv/bin/activate

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

(myprojectenv)user@host:~/myproject$

Включив виртуальную среду, установите Django при помощи pip. Также нужно установить пакет mysqlclient, который необходим для взаимодействия с БД.

pip install django mysqlclient

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

Примечание: Данная команда должна заканчиваться символом точки.

django-admin.py startproject myproject .

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

Теперь проект Django готов, можно приступать к настройке взаимодействия его с ранее созданной БД.

Откройте главный файл настроек Django, который находится в дочернем каталоге проекта:

nano ~/myproject/myproject/settings.py

В конце этого файла находится раздел DATABASES:

. . .
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
. . .

На данный момент программа настроена на использование БД SQLite. Нужно изменить настройки для использования MariaDB.

Для начала отредактируйте строку engine, внеся mysql вместо sqlite3. В строке NAME используйте им БД (в данном случае – myproject). Также нужно внести учётные данные: имя пользователя, пароль и хост. Затем добавьте опцию port, но не заполняйте её, чтобы принять стандартное значение.

. . .
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'myproject',
'USER': 'myprojectuser',
'PASSWORD': 'password',
'HOST': 'localhost',
'PORT': '',
}
}
. . .

Сохраните и закройте файл.

Миграция базы данных и тестирование проекта

Теперь настройки Django в порядке. Осталось мигрировать данные в БД и протестировать настройку.

Поскольку каких-либо фактических данных на этот момент нет, эта команда просто перенесёт начальную структуру БД:

cd ~/myproject
python manage.py makemigrations
python manage.py migrate

Получив структуру БД, создайте учётную запись администратора:

python manage.py createsuperuser

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

Затем можно протестировать БД, запустив сервер разработки Django:

python manage.py runserver 0.0.0.0:8000

Посетите доменное имя или IP сервера + порт :8000 в браузере:

http://server_domain_or_IP:8000

На экране должна появиться стандартная приветственная страница Django.

Добавьте секцию /admin в конец адреса, чтобы получить доступ к странице входа в интерфейс администратора.

http://server_domain_or_IP:8000/admin

Введите имя пользователя и пароль, созданные после запуска команды createsuperuser, чтобы открыть интерфейс администратора.

Выполнив проверку, остановите сервер разработки, введя CTRL-C в терминал.

Ели вы можете открыть интерфейс администратора, то настройка выполнена верно, и БД может хранить и извлекать данные проекта.

Заключение

Конечно, система управления базами данных SQLite довольно проста в использовании, но она подходит только для разработки и производства простых проектов. В большинстве случаев рекомендуется обратиться к полнофункциональной БД.

Tags: , , , , , ,

Добавить комментарий