В инструкции описана установка и настройка 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 готов к работе с приложением Первая Форма.