Использование MariaDB с приложением Django на CentOS 7

1 комментарий

Введение

Django – это гибкий фреймворк, который используется для быстрого создания приложений на языке Python. По умолчанию приложения настроены сохранять свои данные в легковесные файлы базы данных SQLite. Однако в дальнейшем, используя более традиционные базы данных, вы можете улучшить производительность.
Из данного руководства вы узнаете, как установить и настроить MariaDB для использования с вашим приложением, созданным при помощи Django. В нем мы установим необходимое программное обеспечение, создадим учетные данные базы данных, а затем запустим и настроим новый проект Django для работы с MariaDB.

Требования

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

Установка компонентов из CentOS и EPEL репозиториев

Первым делом нам нужно установить из репозитория все необходимые части. Мы установим pip, систему управления пакетами Python, для того, чтобы затем установить и управлять компонентами Python. Также мы установим программное обеспечение базы данных и связанные библиотеки, необходимые для взаимодействия с ними.
Некоторое из необходимого программного обеспечения находится в 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

Далее вам нужно будет ввести административный пароль, который вы установили в конце предыдущего раздела статьи. Доступ будет разрешен.
Для начала необходимо создать базу данных для нашего проекта, созданного при помощи 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 через виртуальное окружение (Virtual Environment)

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

sudo pip install virtualenv 

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

mkdir ~/myproject
cd ~/myproject

Для того, чтобы создать виртуальное окружение, в котором будут храниться вся необходимая информация Python, касающаяся проекта 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; он находится в дочерней директории:

nano ~/myproject/myproject/settings.py

Ближе к концу файла вы увидите секцию DATABASES, которая выглядит вот так:

. . .

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

. . .

На данный момент она настроена использовать в качестве базы данных SQLite. Нам необходимо заменить это так, чтобы вместо нее использовалась MariaDB.
Первым делом мы изменим движок базы, чтобы он обращался к серверу mysql вместо сервера sqlite3. В строчке NAME напишите имя вашей базы данных (к примеру, myproject). Также нам необходимо добавить учетные данные для авторизации, а именно имя пользователя, пароль и хост, к которому необходимо подсоединяться. Поле настройки порта оставьте пустым для того, чтобы был выбран порт по умолчанию:

. . .

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

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

python manage.py runserver 0.0.0.0:8000

В своем браузере введите доменное имя сервера либо IP-адрес с окончанием :8000 для того, чтобы увидеть корневую страницу Django по умолчанию:

http://домен_сервера_или_IP:8000

Вы должны увидеть следующую страницу:

MariaDB с приложением Django на CentOS 7

Добавьте /admin в конце URL, и вам должно высветиться окно авторизации администратора:

Администрирование Django

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

Django Пользователи и группы

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

Заключение

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

Запустите свой сервер

Комментарии

Комментарий автора
Mr. Fella Fox +36
29 апр в 2016
Если у кого-то возникли проблемы с созданием пользователя, который может выполнять sudo-команды, то прочитать туториал по его созданию можно в этой статье: https://community.timeweb.com/articles/kak-sozdat-polzovatelya-s-root-pravami-v-centos-1