Как использовать PostgreSQL с вашим приложением Django на CentOS 7

Вступление

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

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

Предпосылки

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

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

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

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

Часть необходимого программного обеспечения находится в репозитории EPEL, который содержит дополнительные пакеты. Мы можем легко включить этот репозиторий, связав:

sudo yum install epel-release

С включенным EPEL мы можем установить необходимые компоненты, набрав:

sudo yum install python-pip python-devel gcc postgresql-server postgresql-devel postgresql-contrib

Выполнить начальную настройку PostgreSQL

После установки вам нужно инициализировать базу данных PostgreSQL, набрав:

sudo postgresql-setup initdb

После инициализации базы данных мы можем запустить службу PostgreSQL, набрав:

sudo systemctl start postgresql

Когда база данных запущена, нам нужно настроить значения в одном из заполненных файлов конфигурации. Используйте ваш редактор и команду + sudo +, чтобы открыть файл:

sudo nano /var/lib/pgsql/data/pg_hba.conf

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

Мы можем настроить это, изменив две строки + host + внизу файла. Измените последний столбец (метод аутентификации) на + md5 +. Это позволит аутентифицировать пароль:

. . .

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
host    all             all             127.0.0.1/32
IPv6 local connections:
#host    all             all             ::1/128                 ident
host    all             all             ::1/128

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

С нашими новыми изменениями конфигурации нам нужно перезапустить сервис. Мы также включим PostgreSQL, чтобы он автоматически запускался при загрузке:

sudo systemctl restart postgresql
sudo systemctl enable postgresql

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

По умолчанию Postgres использует схему аутентификации, называемую «равноправная аутентификация» для локальных соединений. Мы могли видеть это для записи + local в файле` + pg_hba.conf`. По сути, это означает, что если имя пользователя операционной системы пользователя совпадает с действительным именем пользователя 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