Поиск по сайту:

Как использовать MySQL или MariaDB с вашим приложением Django в Ubuntu 14.04


Введение

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

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

Предпосылки

Для начала вам понадобится чистый экземпляр сервера Ubuntu 14.04 с настроенным пользователем без полномочий root. Пользователь без полномочий root должен иметь привилегии sudo. Узнайте, как это сделать, следуя нашему руководству по первоначальной настройке сервера.

Когда будете готовы продолжить, читайте дальше.

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

Нашим первым шагом будет установка всех необходимых нам частей из репозиториев. Мы установим pip, менеджер пакетов Python, чтобы установить и управлять нашими компонентами Python. Мы также установим программное обеспечение базы данных и связанные библиотеки, необходимые для взаимодействия с ними.

Ниже мы рассмотрим как MySQL, так и MariaDB, поэтому выберите раздел, связанный с СУБД, которую вы хотите использовать.

MySQL

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

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 во время установки. После этого вам будет задан ряд вопросов. Помимо первого вопроса, который просит вас выбрать другой административный пароль, ответьте «да» на каждый вопрос.

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

МарияДБ

Если вы предпочитаете 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 во время установки. После этого вам будет задан ряд вопросов. Помимо первого вопроса, предлагающего выбрать другой административный пароль, ответьте «да» на каждый вопрос.

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

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

Остальную часть этого руководства можно выполнять как есть, независимо от того, установили ли вы MySQL или MariaDB.

Мы можем начать с входа в интерактивный сеанс с нашим программным обеспечением базы данных, введя следующее (команда одинакова, независимо от того, какое программное обеспечение базы данных вы используете):

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 в виртуальной среде

Теперь, когда наша база данных настроена, мы можем установить 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 в качестве базы данных. Нам нужно изменить это, чтобы вместо этого использовалась наша база данных MySQL/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

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

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

python manage.py runserver 0.0.0.0:8000

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

http://server_domain_or_IP:8000

Вы должны увидеть индексную страницу по умолчанию:

Добавьте /admin в конец URL-адреса, и вы сможете получить доступ к экрану входа в интерфейс администратора:

Введите имя пользователя и пароль, которые вы только что создали, с помощью команды createsuperuser. После этого вы попадете в интерфейс администратора:

Когда вы закончите расследование, вы можете остановить сервер разработки, нажав CTRL-C в окне терминала.

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

Заключение

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