Django-приложение на MariaDB в CentOS 7
Centos, MariaDB, Python | Комментировать запись
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: CentOS, CentOS 7, Django, EPEL, MariaDB, SQLite, virtualenv