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®. Более подробную информацию об установке СУБД и расширений можно найти в соответствующей официальной документации от производителя.