Участвуй в конкурсе сайтов
Получи профессиональную оценку сайта и
награду за дизайн, контент или технологичность

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

Обсудить

Введение

Django – это известный гибкий фреймворк, который используется для создания приложений на языке программирования Python. Обычно (по умолчанию) приложения на Django используют в качестве хранилища для своих файлов базу данных (БД) SQLite, которая отличается легковесностью и простотой. Несмотря на то, что иногда подобная связка работает вполне неплохо, для увеличения производительности рекомендуется использовать более традиционную систему управления базами данных (СУБД), к примеру, PostgreSQL.

Из данного руководства вы узнаете, как установить и настроить СУБД PostgreSQL для работы с приложением на Django. Здесь будут описаны все этапы: от установки необходимого программного обеспечения и создания учетных данных БД до запуска и настройки нового Django-приложения.

Требования

Перед тем, как приступить к установке, убедитесь, что у вас есть новый сервер, на котором установлена операционная система (ОС) Ubuntu 16.04, и создан новый пользователь (не суперпользователь), который может выполнять команды sudo.

Теперь авторизуйтесь в качестве этого пользователя и проступите к выполнению следующих инструкций.

Устанавливаем компоненты

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

Версии Python 2 и Python 3 имеют немного разные пакеты, поэтому ниже выберите команды, соответствующие той версии Python, которая используется в вашем проекте.

Если вы используете Python 2, введите:

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

А если вы используете Python 3, выполните следующие команды:

$ sudo apt-get update
$ sudo apt-get install python3-pip python3-dev libpq-dev postgresql postgresql-contrib

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

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

По умолчанию для локальных соединений PostgreSQL использует схему авторизации, которая называется “peer authentication” (можно перевести как «одноранговая авторизация»). Подобная схема позволяет провести авторизацию (без дальнейшей аутентификации) в случае, если имя пользователя ОС совпадает с именем действующего пользователя PostgreSQL.

Во время установки PostgreSQL создается пользователь ОС с именем postgres, которое соответствует имени администратора PostgreSQL. При помощи этого пользователя вы сможете выполнять административные задачи. Для того, чтобы авторизоваться под ним, вам необходимо выполнить команду sudo с ключом -u.

Начните сессию в PostgreSQL, используя команду:

$ sudo -u postgres psql

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

postgres=# CREATE DATABASE myproject;

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

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

postgres=# CREATE USER myprojectuser WITH PASSWORD 'password';

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

Установите UTF-8 в качестве кодировки по умолчанию (это необходимо для Django). Уровень изолированности транзакций нужно по умолчанию установить как “read committed” (чтение фиксированных данных) – этот уровень обеспечивает защиту от чернового чтения. Не забудьте про временную зону: изначально проекты на Django имеют установку UTC. Чтобы выполнить все изменения, нужно ввести следующие команды:

postgres=# ALTER ROLE myprojectuser SET client_encoding TO 'utf8';
postgres=# ALTER ROLE myprojectuser SET default_transaction_isolation TO 'read committed';
postgres=# ALTER ROLE myprojectuser SET timezone TO 'UTC';

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

postgres=# GRANT ALL PRIVILEGES ON DATABASE myproject TO myprojectuser;

Теперь выйдите из командной строки SQL, возвратившись к postgres сессии пользователя:

postgres=# \q

Устанавливаем Django

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

Если вы используете Python 2, тогда используйте эту команду:

$ sudo pip install virtualenv

Если используете Python 3, то вам нужно ввести следующую строку:

$ sudo pip3 install virtualenv

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

$ mkdir ~/myproject
$ cd ~/myproject

Затем создайте виртуальное окружение, где будут храниться требования (“requirements”) Python, касающиеся вашего проекта на Django:

$ virtualenv myprojectenv

После этого в директории myprojectenv (внутри директории вашего проекта) будут установлены локальная копия Python и система управления пакетами pip.

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

$ source myprojectenv/bin/activate

По изменившемуся виду командной строки вы сможете понять, что теперь вы работаете в виртуальном окружении. Она будет выглядеть примерно так (myprojectenv)user@host:~/myproject$.

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

Примечание.
Вне зависимости от того, какую версию Python вы используете, когда виртуальное окружение включено, вам нужно использовать команду pip (а не pip3).

(myprojectenv) $ pip install django psycopg2

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

(myprojectenv) $ django-admin.py startproject myproject .

Настраиваем базу данных

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

Для этого нужно открыть файл с основными настройками проекта на Django, который находится в дочерней директории проекта:

(myprojectenv) $ nano ~/myproject/myproject/settings.py

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

. . .

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

. . .

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

Во-первых, измените бэкэнд базы данных (графа “engine”) так, чтобы вместо sqlite3 использовался postgresql_psycopg2. Далее в качестве используемой базы данных (графа “NAME”) пропишите название своей базы данных (в данном случае myproject). Также необходимо добавить учетные данные для входа в систему: понадобится имя пользователя, пароль и хост для подключения (графы “USER”, “PASSWORD”, “HOST”). Добавьте и графу, касающуюся порта (“PORT”), однако прописывать в ней ничего не нужно – в этом случае это будет обозначать настройку по умолчанию. В итоге блок с DATABASES должен выглядеть так:

. . .

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

. . .

После всех необходимых изменений сохраните и закройте файл.

Перенесим базу данных и тестируем проект

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

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

(myprojectenv) $ cd ~/myproject
(myprojectenv) $ python manage.py makemigrations
(myprojectenv) $ python manage.py migrate

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

(myprojectenv) $ python manage.py createsuperuser

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

Если вы используете UFW Firewall, то крайне важно перед тестированием проекта открыть необходимый порт:

(myprojectenv) $ sudo ufw allow 8000

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

(myprojectenv) $ python manage.py runserver 0.0.0.0:8000

Для того, чтобы попасть на приветственную страницу Django, введите в браузере адрес вашего сайта либо ip-адрес, дописав в конце :8000 (номер порта).

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

Вам должна высветиться начальная страница Django:

Первая страница на DjangoДобавьте в конце адресной строки /admin, и вы попадете на страницу входа в административную панель:

Как использовать PostgreSQL c приложением Django на Ubuntu 16.04Введите имя пользователя и пароль, которые вы указали при использовании команды createsuperuser, и вы попадете в административную панель:

Django

После того, как вы выполнили все необходимые проверки, остановите сервер разработки, нажав Ctrl-C в консоли.

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

Заключение

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

VPS/VDS

Комментарии

С помощью соцсетей
У меня нет аккаунта Зарегистрироваться
Нажимая кнопку «Зарегистрироваться», я даю согласие на обработку своих персональных данных, указанных в форме регистрации.
С помощью соцсетей
У меня уже есть аккаунт Войти
Нажимая кнопку «Зарегистрироваться», я даю согласие на обработку своих персональных данных, указанных в форме регистрации.
Инструкции по восстановлению пароля высланы на Ваш адрес электронной почты.
Пожалуйста, укажите email вашего аккаунта
Ваш баланс 10 ТК
1 ТК = 1 ₽
О том, как заработать и потратить Таймкарму, читайте в этой статье
Чтобы потратить Таймкарму, зарегистрируйтесь на нашем сайте