Установка PostgreSQL в Ubuntu 18.04
В этой статье мы рассмотрим как установить PostgreSQL 12 в Ubuntu 18.04 из репозитория.
Данная процедура описана в официальной документации
Создадим файл /etc/apt/sources.list.d/pgdg.list и добавим строку для хранилища:
RELEASE=$(lsb_release -cs)
echo "deb http://apt.postgresql.org/pub/repos/apt/ ${RELEASE}"-pgdg main | sudo tee /etc/apt/sources.list.d/pgdg.list
Импортируем ключ подписи репозитория и обновим списки пакетов:
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt update
Установим PostgreSQL 12
sudo apt -y install postgresql-12
Открываем конфигурацию сервера
sudo mcedit /etc/postgresql/12/main/postgresql.conf
Для разрешения доступа только с этого сервера убираем комментарий со строки
listen_addresses = 'locahost'
и перезагружаем сервер
sudo systemctl restart postgresql
Подключаемся под пользователем postgres
su postgres
psql
CREATE DATABASE myproject; CREATE USER srmuser WITH PASSWORD 'PASSWORD';
Затем изменим несколько параметров подключения для только что созданного нами пользователя. Это ускорит работу базы данных, поскольку теперь при каждом подключении не нужно будет запрашивать и устанавливать корректные значения.
Зададим кодировку по умолчанию UTF-8, чего и ожидает Django. Также зададим схему изоляции транзакций по умолчанию «read committed», которая будет блокировать чтение со стороны неподтвержденных транзакций. В заключение мы зададим часовой пояс. По умолчанию наши проекты Django настроены на использование времени по Гринвичу (UTC). Все эти рекомендации взяты из проекта Django:
ALTER ROLE srmuser SET client_encoding TO 'utf8'; ALTER ROLE srmuser SET default_transaction_isolation TO 'read committed'; ALTER ROLE srmuser SET timezone TO 'UTC';
Теперь предоставим созданному пользователю доступ для администрирования новой базы данных:
GRANT ALL PRIVILEGES ON DATABASE myproject TO srmuser;
Выходим из консоли PostgreSQL
\q exit
PostgreSQL установлен и база данных настроена. Теперь можем перейти к настройке подключение к базе данных нашего приложения.