Настройка окружения и установка СУБД PostgreSQL

 

Прежде чем переходить к установке СУБД PostgeSQL и созданию базы Platex® необходимо установить ряд зависимостей и провести соответствующие настройки. В данном подразделе рассматривается настройка окружения в операционной системе REDOS. Доступ к FTP с необходимыми для настройки скриптами/архивами и.т.п. выдается после приобретения заказчиком системы.

 

Шаг 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

 

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


[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}

 

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


[postgres] export PGDATA=/usr/local/PLATEX/postgres/data
[postgres] export PATH=/usr/local/pgsql/bin:$PATH
[postgres] export LD_LIBRARY_PATH=/usr/local/pgsql/lib:/lib64:/usr/lib64:/lib:/usr/lib

 

Шаг 2. Установка perl-модулей

На данном шаге необходимо установить необходимые для корректной работы системы perl-модули. Для этого потребуется установить следующие зависимости:


[root] yum install perl-Digest-SHA perl-podlators perl-Encode perl-Socket perl-Carp perl-Time-Local perl-Pod-Simple perl perl-Net-Daemon perl-PlRPC perl-ExtUtils-MakeMaker perl-DBI perl-HTTP-Tiny perl-Pod-Perldoc perl-Text-ParseWords perl-Pod-Usage perl-macros perl-Time-HiRes perl-Storable perl-Filter perl-constant perl-threads-shared perl-File-Path perl-PathTools perl-Getopt-Long perl-Data-Dumper perl-Test-Harness perl-Compress-Raw-Bzip2 perl-Thread-Queue perl-Digest-SHA1 perl-Digest-MD5 perl-Digest-HMAC perl-IO-Compress perl-ExtUtils-Install perl-ExtUtils-ParseXS perl-Digest perl-Sys-Syslog perl-parent perl-Pod-Escapes perl-libs perl-threads perl-Exporter perl-File-Temp perl-Scalar-List-Utils perl-ExtUtils-Manifest perl-Compress-Raw-Zlib perl-devel

 

Далее потребуется распаковать полученный с FTP-папки архив perl-modules.zip и запустить скрипт install.sh, после чего проверить в директории /usr/local/PLATEX/scripts скриптов с расширением .pm.

 

Шаг 3. Распаковка внешних скриптов

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

 

Шаг 4. Установка СУБД PostgreSQL

Последним шагом будет установка СУБД PostgreSQL и необходимых расширений для дальнейшей работы системы. В данном примере СУБД PostgreSQL предлагается собираться из исходников рекомендуемой версии, полученных с FTP-папки в архиве db.zip. От пользователя root необходимо выполнить установку компонент СУБД и его расширений:


[root] tar xzf postgresql-14.1.tar.gz
[root] cd postgresql-14.1/
[root]  ./configure
[root] make
[root] make install
[root] cd contrib/pgcrypto/
[root] make
[root] make install
[root] yum search pgagent
[root] yum install pgagent_14.x86_64
[root] systemctl enable pgagent_12
[root] systemctl start pgagent_12

 

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


[postgres] cd /usr/local/PLATEX/postgres/data/
[postgres] initdb -k
[postgres] mkdir ts_{default,core_dic,core_log,user_data,gar,temp,calls,mviews,user_files}
[postgres] pg_ctl -w -l /var/log/platex/pg_logfile -D /usr/local/PLATEX/postgres/data start

 

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

Отредактировать файл pg_hba.conf

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


# Пример - разрешаем подключение к базе platex пользователю c1_loader с хоста 192.168.250.111
echo "host     platex     c1_loader     192.168.250.111   md5" >> pg_hba.conf

 

Разрешить подключения на порт 5432 для доверенных хостов (в примере подсеть 10.122.0.0/24)


iptables -A INPUT -s 10.122.0.0/24 -p tcp --dports 5432 -j ACCEPT

 

Конфигурация pgagent

От пользователя postgres:


echo localhost:5432:*:pgagent:platex >> ~/.pgpass
chmod 600 ~/.pgpass
chown postgres:postgres ~/.pgpass

 

От пользователя root:


mkdir /var/log/pgagent
chown -R postgres:postgres /var/log/pgagent
chmod g+w /var/log/pgagent

 

Создать файл /etc/pgagent.conf со следующим содержимым:


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

 

В случае наличия ошибок при установке расширения в базе:


cd /usr/share/postgresql/14/extension/pgagent
cp pgagent* /usr/local/pgsql/share/extension/
/usr/bin/pgagent -f -l 2 host=localhost port=5432 user=pgagent dbname=platex

 

Для автозапуска создать файл /usr/lib/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

 

Включить сервис:


systemctl daemon-reload
systemctl disable pgagent
systemctl enable pgagent
systemctl start pgagent

 

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