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

Вступление

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

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

Предпосылки

Для начала вам понадобится чистый экземпляр сервера Ubuntu 14.04 с настроенным пользователем без полномочий root. Пользователь без полномочий root должен быть настроен с привилегиями + sudo +. Узнайте, как это настроить, следуя нашему https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-14-04 руководству по настройке начального сервера].

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

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

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

Следующие команды + apt + предоставят вам необходимые пакеты:

sudo apt-get update
sudo apt-get install python-pip python-dev libpq-dev postgresql postgresql-contrib

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

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

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

Во время установки Postgres был создан пользователь операционной системы с именем + postgres +, соответствующий администратору + postgres + PostgreSQL. Нам нужно изменить этого пользователя для выполнения административных задач:

sudo su - postgres

Теперь вы должны быть в сеансе оболочки для пользователя + postgres +. Войдите в сеанс Postgres, набрав:

psql

Сначала мы создадим базу данных для нашего проекта Django. Каждый проект должен иметь свою собственную изолированную базу данных по соображениям безопасности. Мы будем называть нашу базу данных ++ в этом руководстве, но всегда лучше выбрать что-то более описательное:

CREATE DATABASE ;

Не забудьте завершить все команды в командной строке SQL точкой с запятой.

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

CREATE USER  WITH PASSWORD '';

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

Мы устанавливаем кодировку по умолчанию в UTF-8, что ожидает Django. Мы также устанавливаем схему изоляции транзакции по умолчанию «read commit», которая блокирует чтение из незафиксированных транзакций. Наконец, мы устанавливаем часовой пояс. По умолчанию ваши проекты Django будут настроены на использование + UTC:

ALTER ROLE  SET client_encoding TO 'utf8';
ALTER ROLE  SET default_transaction_isolation TO 'read committed';
ALTER ROLE  SET timezone TO 'UTC';

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

GRANT ALL PRIVILEGES ON DATABASE  TO ;

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

\q

Выйдите из сеанса оболочки пользователя + postgres +, чтобы вернуться к сеансу оболочки обычного пользователя:

exit

Установите Django в виртуальной среде

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

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

sudo pip install virtualenv

Создайте каталог для вашего проекта Django. Затем перейдите в каталог:

mkdir ~/
cd ~/

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

virtualenv

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

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

source /bin/activate

Ваше приглашение изменится, чтобы указать, что вы сейчас работаете в виртуальной среде. Это будет выглядеть примерно так + () @: ~ / $ +.

Когда ваша виртуальная среда активна, вы можете установить Django с помощью + pip +. Мы также установим пакет + psycopg2 +, который позволит нам использовать настроенную нами базу данных:

pip install django psycopg2

Теперь мы можем запустить проект Django в нашем каталоге + myproject +. Это создаст дочерний каталог с тем же именем для хранения самого кода и создаст сценарий управления в текущем каталоге. Обязательно добавьте точку в конце команды, чтобы она была правильно настроена:

django-admin.py startproject  .

Настройте параметры базы данных Django

Теперь, когда у нас есть проект, нам нужно настроить его на использование созданной нами базы данных.

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

nano ~///settings.py

Внизу файла вы увидите раздел + DATABASES +, который выглядит следующим образом:

. . .

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

. . .

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

Во-первых, измените движок так, чтобы он использовал бэкэнд + postgresql_psycopg2 + вместо бэкенда + sqlite3 +. Для + NAME + используйте имя вашей базы данных (++ в нашем примере). Нам также нужно добавить учетные данные для входа. Нам нужно имя пользователя, пароль и хост для подключения. Мы добавим и оставим пустым параметр порта, чтобы выбрать по умолчанию:

. . .

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

. . .

Когда вы закончите, сохраните и закройте файл.

Перенос базы данных и тестирование вашего проекта

Теперь, когда настройки Django настроены, мы можем перенести наши структуры данных в нашу базу данных и протестировать сервер.

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

cd ~/
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://:8000

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

изображение: https: //assets.digitalocean.com/articles/django_mysql_1404/django_index.png [индекс Джанго]

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

изображение: https: //assets.digitalocean.com/articles/django_mysql_1404/admin_login.png [Вход администратора Django]

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

изображение: https: //assets.digitalocean.com/articles/django_mysql_1404/admin_interface.png [интерфейс администратора Django]

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

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

Заключение

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

Related