2. Настройка окружения, установка ядра АСР Platex®

Прежде чем переходить к установке СУБД PostgeSQL и созданию базы Platex® необходимо установить ряд зависимостей и провести соответствующие настройки. В данном разделе будут рассмотрены варианты установки на дистрибутивы семейства Debian (Ubuntu, Astra Linux и др.) и RHEL (РЕДОС, CentOS, Almalinux и др.). АСР Platex® также совместима с дистрибутивом ALTLinux.

Установка PostgreSQL

Пример установки на дистрибутив семейства RHEL (Almalinux)

Шаг 1. Установка зависимостей и вспомогательных утилит:

Перед установкой СУБД PostgreSQL необходимо установить ряд зависимостей и вспомогательных для дальнейшей работы библиотек и утилит (vim, unzip, wget, mc и др.).

> [root] yum install mc wget lftp nc elfutils-libelf-devel vim unzip gcc readline-devel zlib zlib-devel libaio

Необходимо проверить доступную к установке версию PostgreSQL (рекомендованная версия PostgreSQL не ниже 14):

> [root] yum module list postgresql
#вывод показывает, что доступны только версии ниже:
postgresql    9.6    client, server     PostgreSQL server and client module
postgresql    10     client, server     PostgreSQL server and client module
postgresql    12     client, server     PostgreSQL server and client module

Необходимо добавить официальный репозиторий для установки (берется с официального сайта "https://www.postgresql.org/download/"). В примере используется версия ОС "AlmaLinux 8":

> [root] dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm

Далее необходимо отключить модуль PostgreSQL по умолчанию:

> [root] dnf -qy module disable postgresql

В случае успеха должна появиться "свежая" версия PostgreSQL:

> [root] yum module list postgresql
postgresql    9.6    client, server    PostgreSQL server and client module
postgresql    10     client, server    PostgreSQL server and client module
postgresql    12     client, server    PostgreSQL server and client module
postgresql    13     client, server    PostgreSQL server and client module
postgresql    15     client, server    PostgreSQL server and client module

Установка СУБД PostgreSQL:

> [root] dnf install -y postgresql*-server postgresql*-contrib postgresql*-libs

Далее необходимо создать нужные каталоги:

> [root] install -d -o root -g root /usr/local/PLATEX/{scripts,lib} /usr/local/PLATEX/converters/{bin,etc}
> [root] install -d -o postgres -g postgres /var/log/platex /usr/local/PLATEX/{backup/,}postgres/data  /usr/local/PLATEX/converters/{data,cdr,spool,tmp,var/cache,var/pid}
> [root] chown -R postgres:postgres /usr/local/PLATEX

Отредактировать смежный файл службы:

> [root] systemctl edit postgresql-15.service
> # Вписать в него следующие значения:
> [Service]
> # допустимо в качестве PGDATA использовать директорию по умолчанию (/var/lib/pgsql/*/data/)
> Environment=PGDATA=/usr/local/PLATEX/postgres/data/

Перезапустить systemd:

> [root] systemctl daemon-reload

Инициализировать кластер PostgreSQL:

> [root] /usr/pgsql-*/bin/initdb -k

Запустить сервис:

> [root] systemctl enable postgresql-*.service
> [root] systemctl start postgresql-*.service
> [root] systemctl status postgresql-*.service

Шаг 2. Установка утилиты pgagent:

Рекомендуется устанавливать версию не ниже 12, но лучше всего смежную с версией PostgreSQL:

> [root] yum search pgagent
> [root] yum install pgagent_*.x86_64
> [root] systemctl enable pgagent_*.service
> [root] systemctl start pgagent_*.service
> [root] systemctl status pgagent_*.service 

Необходимо также создать каталог для скриптов, которые будет запускать pgagent:

> [root] mkdir /usr/local/PLATEX/pgascripts 
> [root] chown -R pgagent:pgagent /usr/local/PLATEX/pgascripts

Конфигурация pgagent и файла .pgpass:

> [postgres] echo localhost:5432:*:pgagent:platex >> ~/.pgpass
> [postgres] chmod 600 ~/.pgpass
> [postgres] chown postgres:postgres ~/.pgpass
> [root] mkdir /var/log/pgagent
> [root] chown -R postgres:postgres /var/log/pgagent
> [root] chmod g+w /var/log/pgagent

Далее нужно внести следующие данные в файл /etc/pgagent/pgagent_*.conf:

DBNAME=platex
DBUSER=pgagent
DBHOST=localhost
DBPORT=5432
LOGFILE=/var/log/pgagent/pgagent.log

При отсутствии файла юнита - добавить /etc/systemd/system/pgagent.service:

[Unit]
Description=PgAgent for PostgreSQL
After=syslog.target
After=network.target

[Service]
Type=forking

User=postgres
Group=postgres

# Location of the configuration file
EnvironmentFile=/etc/pgagent.conf

# Where to send early-startup messages from the server (before the logging
# options of pgagent.conf take effect)
# This is normally controlled by the global default set by systemd
# StandardOutput=syslog

# Disable OOM kill on the postmaster
OOMScoreAdjust=-1000

ExecStart=/usr/bin/pgagent -s ${LOGFILE}  -l ${LOGLEVEL} host=${DBHOST} dbname=${DBNAME} user=${DBUSER} port=${DBPORT}
KillMode=mixed
KillSignal=SIGINT

Restart=on-failure

# Give a reasonable amount of time for the server to start up/shut down
TimeoutSec=300

[Install]
WantedBy=multi-user.target

Перезапустить сервис:

> [root] systemctl restart pgagent_*.service

Шаг 3. Настройка переменных окружения:

Для пользователя postgres будет удобно сразу настроить переменные окружения:

> [postgres] vim .bash_profile
[ -f /var/lib/pgsql/.pgsql_profile ] && source /var/lib/pgsql/.pgsql_profile
PGDATA=/usr/local/PLATEX/postgres/data #можно использовать директорию по умолчанию
LD_LIBRARY_PATH=/usr/local/pgsql/lib:/lib64:/usr/lib64:/lib:/usr/lib
PGPASSFILE=/var/lib/pgsql/.pgpass

Шаг 4. Распаковка внешних скриптов и содание каталогов:

Следующим шагом перед установкой ядра АСР будет распаковка внешних скриптов, необходимых для работы АСР (архив scripts.zip). После распаковки архива необходимо перенести все скрипты в каталог /usr/local/PLATEX/scripts.

Далее от пользователя postgres необходимо создать каталоги для табличных пространств:

> [postgres] mkdir $PGDATA/ts_{default,core_dic,core_log,user_data,gar,temp,calls,mviews,user_files}

Шаг 5. Конфигурация и настройки безопасности:

Отредактировать файл postgresql.conf, указать в параметре listen_addresses актуальный IP-адрес, при желании можно также сменить порт по умолчанию. Рекомендуется оптимизировать настройки СУБД в соответствии с техническими характеристиками оборудования.

Также необходимо отредактировать файл pg_hba.conf. В данном файле нужно настроить хосты/подсети, с которых разрешено подключаться к СУБД. В случае, если СУБД принимает подключения по какому-либо интерфейсу кроме localhost, то рекомендуется ограничить перечень только теми хостами, которые требуются для работы компонент АСР (для работы внешних модулей). К примеру, с АСР взаимодействует REST API на другом сервере, следовтельно, в данном файле нужно разрешить подключение с этого сервера.

# Пример - разрешаем подключение к базе platex пользователю emp_user с хоста 192.168.250.111
> [postgres] echo "host     platex     emp_user     192.168.250.111   md5" >> pg_hba.conf
# После необходимо перезапустить сервис
> [root] systemctl restart postgresql

На сервере СУБД должен быть открыт порт 5432 для доверенных хостов (в примере подсеть 10.122.0.0/24)

> [root] iptables -A INPUT -s 10.122.0.0/24 -p tcp --dports 5432 -j ACCEPT

Пример установки на дистрибутив семейства Debian (Ubuntu)

Шаг 1. Установка зависимостей и вспомогательных утилит:

Перед установкой СУБД PostgreSQL необходимо установить ряд зависимостей и вспомогательных для дальнейшей работы библиотек и утилит (vim, unzip, wget, mc и др.).

> [root] apt-get install vim mc wget netcat gcc g++ lftp elfutils unzip libreadline-dev zlib1g-dev libaio1

Необходимо проверить доступную к установке версию PostgreSQL (рекомендованная версия PostgreSQL не ниже 14):

> [root] apt-cache search postgresql 
> #если вывод показывает что доступны только версии ниже, то использовать инструкцию по установке с официального сайта "https://www.postgresql.org/download/"

Установка СУБД PostgreSQL:

> [root] apt-get install postgresql-15 postgresql-client-15 libpq-dev postgresql-server-dev-15

Далее необходимо создать нужные каталоги:

> [root] install -d -o root -g root /usr/local/PLATEX/{scripts,lib} /usr/local/PLATEX/converters/{bin,etc}
> [root] install -d -o postgres -g postgres /var/log/platex /usr/local/PLATEX/{backup/,}postgres/data  /usr/local/PLATEX/converters/{data,cdr,spool,tmp,var/cache,var/pid}
> [root] chown -R postgres:postgres /usr/local/PLATEX

Инициализировать кластер:

> [postgres] initdb -k

Запустить сервис:

> [root] systemctl enable postgresql
> [root] systemctl start postgresql
> [root] systemctl status postgresql

Шаг 2. Установка утилиты pgagent:

Рекомендуется устанавливать версию не ниже 12, но лучше всего смежную с версией PostgreSQL:

> [root] apt-get install pgagent

Необходимо также создать каталог для скриптов, которые будет запускать pgagent:

> [root] mkdir /usr/local/PLATEX/pgascripts 
> [root] chown -R pgagent:pgagent /usr/local/PLATEX/pgascripts

Конфигурация pgagent и файла .pgpass:

> [postgres] echo localhost:5432:*:pgagent:platex >> ~/.pgpass
> [postgres] chmod 600 ~/.pgpass
> [postgres] chown postgres:postgres ~/.pgpass
> [root] mkdir /var/log/pgagent
> [root] chown -R postgres:postgres /var/log/pgagent
> [root] chmod g+w /var/log/pgagent

Далее нужно внести следующие данные в файл /etc/pgagent/pgagent_*.conf:

DBNAME=platex
DBUSER=pgagent
DBHOST=localhost
DBPORT=5432
LOGFILE=/var/log/pgagent/pgagent.log

При отсутствии файла юнита - добавить /etc/systemd/system/pgagent.service:

[Unit]
Description=PgAgent for PostgreSQL
After=syslog.target
After=network.target

[Service]
Type=forking

User=postgres
Group=postgres

# Location of the configuration file
EnvironmentFile=/etc/pgagent.conf

# Where to send early-startup messages from the server (before the logging
# options of pgagent.conf take effect)
# This is normally controlled by the global default set by systemd
# StandardOutput=syslog

# Disable OOM kill on the postmaster
OOMScoreAdjust=-1000

ExecStart=/usr/bin/pgagent -s ${LOGFILE}  -l ${LOGLEVEL} host=${DBHOST} dbname=${DBNAME} user=${DBUSER} port=${DBPORT}
KillMode=mixed
KillSignal=SIGINT

Restart=on-failure

# Give a reasonable amount of time for the server to start up/shut down
TimeoutSec=300

[Install]
WantedBy=multi-user.target

Запустить сервис:

> [root] systemctl enable pgagent
> [root] systemctl start pgagent

Шаг 3. Настройка переменных окружения:

Для пользователя postgres будет удобно сразу настроить переменные окружения:

> [postgres] vim .bashrc
PATH=$PATH:/usr/lib/postgresql/15/bin/
export PATH
export PGDATA=/usr/local/PLATEX/postgres/data #можно использовать директорию по умолчанию
export LD_LIBRARY_PATH=/usr/local/pgsql/lib:/lib64:/usr/lib64:/lib:/usr/lib
export PGPASSFILE=/var/lib/postgresql/.pgpass

Шаг 4. Распаковка внешних скриптов и содание каталогов:

Следующим шагом перед установкой ядра АСР будет распаковка внешних скриптов, необходимых для работы АСР (архив scripts.zip). После распаковки архива необходимо перенести все скрипты в каталог /usr/local/PLATEX/scripts.

Далее от пользователя postgres необходимо создать каталоги для табличных пространств:

> [postgres] mkdir $PGDATA/ts_{default,core_dic,core_log,user_data,gar,temp,calls,mviews,user_files}

Шаг 5. Конфигурация и настройки безопасности:

Отредактировать файл postgresql.conf, указать в параметре listen_addresses актуальный IP-адрес, при желании можно также сменить порт по умолчанию. Рекомендуется оптимизировать настройки СУБД в соответствии с техническими характеристиками оборудования.

Также необходимо отредактировать файл pg_hba.conf. В данном файле нужно настроить хосты/подсети, с которых разрешено подключаться к СУБД. В случае, если СУБД принимает подключения по какому-либо интерфейсу кроме localhost, то рекомендуется ограничить перечень только теми хостами, которые требуются для работы компонент АСР (для работы внешних модулей). К примеру, с АСР взаимодействует REST API на другом сервере, следовтельно, в данном файле нужно разрешить подключение с этого сервера.

# Пример - разрешаем подключение к базе platex пользователю emp_user с хоста 192.168.250.111
> [postgres] echo "host     platex     emp_user     192.168.250.111   md5" >> pg_hba.conf
# После необходимо перезапустить сервис
> [root] systemctl restart postgresql

На сервере СУБД должен быть открыт порт 5432 для доверенных хостов (в примере подсеть 10.122.0.0/24)

> [root] iptables -A INPUT -s 10.122.0.0/24 -p tcp --dports 5432 -j ACCEPT

После выполнения вышеуказанных шагов можно приступать к созданию базы Platex®. Более подробную информацию об установке СУБД и расширений можно найти в соответствующей официальной документации от производителя.