Django-приложение на MySQL или MariaDB в Ubuntu 14.04

Published by Leave your thoughts

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

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

Требования

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

Установка компонентов из репозитория Ubuntu

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

Выберите более удобную для вас систему управления базами данных и следуйте соответствующему разделу руководства.

Для MySQL

Чтобы использовать MySQL, установите все необходимые пакеты при помощи следующей команды:

sudo apt-get update
sudo apt-get install python-pip python-dev mysql-server libmysqlclient-dev

Программа предложит установить пароль администратора MySQL.

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

sudo mysql_install_db

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

sudo mysql_secure_installation

Программа запросит только что установленный пароль администратора MySQL. Затем на экране появится ряд вопросов. На все вопросы, кроме первого (MySQL предложит сменить пароль администратора), можно ответить yes.

Итак, установка и начальная настройка программы завершена, и вы можете переходить к разделу «Создание базы данных и пользователя».

Для MariaDB

Если вы предпочитаете работать с MariaDB, следуйте инструкциям данного раздела. Итак, чтобы установить все необходимые пакеты, введите:

sudo apt-get update
sudo apt-get install python-pip python-dev mariadb-server libmariadbclient-dev libssl-dev

Программа предложит установить пароль администратора MariaDB.

После этого нужно запустить простой скрипт безопасности:

sudo mysql_secure_installation

При этом будет запрошен пароль администратора MariaDB.Затем на экране появится ряд вопросов. Сначала программа предложит изменить пароль администратора MariaDB (чего делать не стоит, поскольку он был установлен только что). На остальные вопросы можно ответить yes.

Установка и начальная настройка программы завершена! Можно приступать к созданию пользователя и БД для проекта.

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

Примечание: Инструкции данного раздела действительны как для MySQL, так и для MariaDB.

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

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. Нужно изменить настройки для использования MySQL или 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 в терминал.

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

Заключение

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

Tags: , , , , ,

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *


*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>