Show/Hide Toolbars

Руководство по тех. обслуживанию

Настройка PostgreSQL 16 на Debian-подобных операционных системах

Ссылки Назад Вверх Вперед

В инструкции описана установка и настройка PostgreSQL 16 для работы с приложением Первая Форма, включая необходимые расширения и параметры конфигурации.

Установка PostgreSQL 16 и компонентов

1. Обновите список пакетов и установите зависимости, необходимые для работы PostgreSQL и дополнительных расширений:

sudo apt update

 

sudo apt install -y apt-transport-https \

                                 ca-certificates \

                                 curl \

                                 freetds-common

2. Добавьте официальный репозиторий PostgreSQL для получения актуальных версий пакетов:

sudo apt policy postgresql

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

curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc|sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg

 

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

 

sudo apt update

3. Установите пакеты PostgreSQL:

sudo apt install -y postgresql-server-dev-16 \

                                 postgresql-client-16

4. Для работы приложения использования баз данных PostgreSQL в приложении Первая Форма нужно активировать следующие расширения:

 `http`

 `pg_buffercache`

 `pg_hint_plan`

 `pgcrypto`

 `postgres_fdw`

 `rum`

 `tds_fdw`

В актуальных Debian-подобных операционных системах расширения можно установить из официальных репозиториев postgres:

sudo apt install -y postgresql-16-tds-fdw \

                                 postgresql-16-rum \

                                 postgresql-16-pg-hint-plan \

                                 postgresql-16-http

5. Остановите службу postgresql:

sudo systemctl stop postgresql.service

Настройка сервера PostgreSQL 16

(Опционально) Переместите каталог данных PostgreSQL. В качестве нового каталога мы установим /pgdata. При необходимости укажите другой каталог для хранения данных.

1. Создайте каталог /pgdata:

sudo mkdir /pgdata

2. Назначьте владельца директории:

sudo chown -R postgres:postgres /pgdata

3. Скопируйте файлы данных из каталога по умолчанию в новый каталог:

sudo cp -r -p /var/lib/postgresql/16/main/. /pgdata/

Настройка postgresql.conf

В файле конфигурации '/etc/postgresql/16/main/postgresql.conf' рекомендуется настроить следующие параметры:

data_directory = '/pgdata' # опционально

max_connections = 1500

listen_addresses = '*'

log_timezone = 'Europe/Moscow'

timezone = 'Europe/Moscow'

Настройка доступа к серверу PostgreSQL

Для настройки доступа к серверу PostgreSQL необходимо внести изменения в файл конфигурации '/etc/postgresql/16/main/pg_hba.conf'

Для разрешения соединения только из указанной подсети:

host    all             all             192.168.0.0/24  scram-sha-256

Для разрешения соединения из любой подсети:

host    all             all             0.0.0.0/0       scram-sha-256

Настройка локализации

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

1. Установите локаль ru_RU.utf8:

sudo apt install -y language-pack-ru

sudo update-locale LANG=ru_RU.UTF-8

2. Проверьте командой locale. Ожидаемый результат:

LANG=ru_RU.UTF-8

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

3. Настройте формат даты и времени. Для этого создайте файл '/etc/freetds/locales.conf' и откройте его для редактирования:

sudo vim /etc/freetds/locales.conf

Заполните его следующим образом:

[default]

 date format = %b %e %Y %I:%M:%S.%z%p

4. Проверьте настройки локали командой date. Ожидаемый результат:

Чт 30 янв 2025 15:50:30 MSK

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

1. Запустите службу postgresql:

sudo systemctl start postgresql.service

2. Проверьте статус:

sudo systemctl status postgresql.service

sudo systemctl status postgresql@16-main.service

3. Разрешите запуск службы при старте работы операционной системы:

sudo systemctl enable postgresql.service

4. Зайдите в терминальный клиент postgres:

sudo -u postgres psql

5. Активируйте расширения:

LOAD 'pg_hint_plan';

CREATE EXTENSION IF NOT EXISTS tds_fdw schema public;

CREATE EXTENSION IF NOT EXISTS http schema public;

CREATE EXTENSION IF NOT EXISTS rum schema public;

CREATE EXTENSION IF NOT EXISTS postgres_fdw schema public;

CREATE EXTENSION IF NOT EXISTS pgcrypto schema public;

CREATE EXTENSION IF NOT EXISTS pg_buffercache schema public;

CREATE EXTENSION IF NOT EXISTS btree_gin;

6. Создайте пользователей баз данных:

create user dbo with superuser createdb createrole inherit login password 'PASS';

create user d10taskuser with inherit login password 'PASS';

create user migrationsdaemon with inherit login password 'PASS';

create user rebus with inherit login password 'PASS';

create user implementer with inherit login password 'PASS';

Вместо PASS пропишите пароли пользователей PostgreSQL.

7. Создайте базы данных для приложения Первая Форма: d10task и d10task_file:

create database d10task

template template0

owner dbo

encoding 'utf8'

lc_collate 'ru_RU.utf8'

lc_ctype   'ru_RU.utf8';

 

create database d10task_file

template template0

owner dbo

encoding 'utf8'

lc_collate 'ru_RU.utf8'

lc_ctype   'ru_RU.utf8';

Выйти из консоли можно командой \q.

8. Создайте схемы и таблицы в файловой базе. Подключитесь к базе данных:

sudo -u postgres psql -d d10task_file

Выполните скрипт:

create extension if not exists tds_fdw schema public;

create schema if not exists dbo authorization dbo;

create table dbo.UploadFiles

(

 id              int not null  generated by default as identity,

 FileContent     bytea,

 Ext             varchar,

 UserID          int,

 FileName        varchar,

 Compressed      bool  constraint DF_UploadFiles_Compressed default false,

 

   constraint PK_UploadFiles primary key (id)

);

База данных d10task создается пустой. Для работы приложения Первая Форма необходимо восстановить ее из дампа. Вы можете запросить и получить его у сотрудников компании Первая Форма - Техническое Сопровождения или Отдела DevOps.

9. Загрузите дамп на сервер. К примеру, в каталог /opt/backups/.

10. Выполните рестор базы данных, используя инструмент pg_restore:

pg_restore -h localhost -p 5432 -U dbo -d d10task /d10task.latest.dump

11. Подключитесь к новой базе:

sudo -u postgres psql -d d10task

12. Настройте схемы и разрешения для пользователей:

alter role D10TaskUser set search_path = "dbo", "public";

alter role dbo set search_path = "dbo", "public";

alter user MigrationsDaemon set search_path = "dbo", "public";

alter user rebus set search_path = "rebus", "public";

 

grant dbo, rebus  to MigrationsDaemon;

 

grant all on all tables in schema dbo, sys to dbo, MigrationsDaemon;

grant all on all sequences in schema dbo, sys to dbo, MigrationsDaemon;

grant all on all functions in schema dbo, sys to dbo, MigrationsDaemon;

grant all on schema dbo, sys to dbo, MigrationsDaemon;

alter default privileges in schema dbo, sys, SignalR grant all on tables to dbo, MigrationsDaemon;

alter default privileges in schema dbo, sys, SignalR grant all on sequences to dbo, MigrationsDaemon;

alter default privileges in schema dbo, sys, SignalR grant all on functions to dbo, MigrationsDaemon;

alter default privileges in schema dbo, sys, SignalR grant all on types to dbo, MigrationsDaemon;

Настройка завершена! Теперь сервер PostgreSQL 16 готов к работе с приложением Первая Форма.