====Импорт и настройка базы данных postgreSQL ==== ===Создание пользователя=== Все сервисы ПАК Астра запускаются и работают от имени выделенного пользователя «dozor», перед установкой сервисов ПАК Астра необходимо создать пользователя и группу и указать домашнюю папку и отключить вход: useradd -d /var/lib/dozor -m -s /sbin/nologin dozor Необходимо создать пользователя СУБД, от имени которого будут работать с базой данных все сервисы. Имя пользователя, используемое в шаблонах конфигурации и данном руководстве «dozor»: Для создания пользователя необходимо выполнить следующие запросы: -Вход в PostgeSQL: psql -U postgres Если запуск постгресса производится впервые- будет выдан запрос пароля пользователя. -Создание пользователя dozor: CREATE USER dozor WITH PASSWORD 'YourPassword'; где YourPassword - пароль пользователя dozor. После создание пользователя, необходимо создать базу данных, которая будет использоваться сервисами ПАК Астра. Имя базы данных, используемое в шаблонах конфигурации и примерах в данном руководстве «dozor». Для создания БД необходимо выполнить следующий запрос: CREATE DATABASE dozor OWNER = dozor; Так же нужно добавить пользователя support, в кавычках обязательно ввести пароль: CREATE ROLE support WITH LOGIN NOSUPERUSER NOCREATEDB NOCREATEROLE NOINHERIT NOREPLICATION CONNECTION LIMIT -1 PASSWORD 'password'; GRANT SELECT ON actions_log TO support; Далее обязательно открыть файл наcтроек postgres: nano /etc/postgresql-13/postgresql.conf Найти там строку: #shared_preload_libraries = '' Раскомментировать и заменить ее следующей строкой: shared_preload_libraries = 'IPCSend' ===Проверка наличия библиотек === Для корректной работы базы необходимо убедиться в присутствии нужных библиотек и расширений, и добавить недостающие. Крайне важно обратить внимание на разрядность системы, 64 и 32 битные библиотеки и пути отличаются. Путь до 32-ух битных библиотек: cd /usr/lib/postgresql-13/lib Для 64-х битной системы: cd /usr/lib64/postgresql-13/lib64 Далее необходимо переместить библиотеку IPCSend и сделать ее исполняемой. После этого необходимо проверить наличие расширений. Для этого нужно переместиться в директорию: cd /usr/share/postgresql-13/extension И переместить туда файлы IPSend.control и IPCsend—1.0.sql, предварительно **поменяв пути расположения библиотеки внутри файлов**. Проверить наличие библиотек для 32-ух битной системы: ls /usr/lib/*.so Для 64-ех битной системы: ls /usr/lib64/*.so Сравнить со списком необходимых библиотек и, при необходимости, импортировать в папку недостающие библиотеки для 32-ух битной системы: /usr/lib Для 64-ех битной: /usr/lib64 Список необходимых библиотек: libconfig.so libcurl_helper.so libfbtree.so libhex.so libipc_receiver_udp.so liblprintf.so libmodule_common.so libpq_stmt.so libmyexp.so libprofiler.so libxprintf_dump.so Зайти в базу данных dozor через командную строку: psql -U postgres -d dozor Далее, находясь в базе ввести следующую комманду: CREATE EXTENSION "IPCSend"; После ввода комманды выйти: \q ===Установка PGAgent === PGAgent - это агент планирования заданий для баз данных Postgres, способный выполнять многоэтапные пакетные сценарии или сценарии оболочки и задачи SQL по сложным расписаниям. Для установки необходимо ввести комманду: emerge --ask pgagent Далее в файле: /etc/conf.d/pgagent в строке **PG_HOST="localhost"** заменить **localhost** на **127.0.0.1** Так же в файле: /etc/init.d/pgagent в строке command_user="pgagent" заменить **pgagent** на **root** и в строке checkpath --file --owner root:pgagent --mode 0660 "${PGA_LOG}" удалить **:pgagent**, что бы получилась строка: checkpath --file --owner root --mode 0660 "${PGA_LOG}" Далее добавляем pgdagent в автозагрузку rc-update add pgagent default И запускаем rc-service pgagent start Для работы скриптов и задач необходимо импортировать дамп. Перемещаемся в папку db_update cd /root/db_update Следующим шагом необходимо загрузить дамп базы данных с сервера разработчика и последующий импорт: Перед импортом базы данных необходимо добавить расширение в базу, для этого нужно зайти в БД postgres psql -U postgres postgres Ввести пароль при запросе и далее ввести команду для создания расширения: Create extension pgagent; После создания базы данных, нужно сделать импорт существующей базы данных. Перед установкой (обновлением) базы данных в любом месте файловой системы, например в домашнем каталоге текущего пользователя: cd ~ необходимо создать рабочую папку: mkdir db_update и перейти в нее: cd db_update Далее следует убедиться, что она пуста (например, от предыдущих обновлений) или просто очистить ее: rm * игнорируя предупреждения об отсутствующих файлах, если они вдруг возникнут: rm: cannot remove '*': No such file or directory 38 Далее импорт дампа для работы pgagent: psql -U postgres < (путь до фала)/pgagent_jobs.sql Следующим шагом необходимо загрузить дамп базы данных с сервера разработчика в данный момент существуют 2 дампа БД, 116.sql и 116_empty.sql. Если это новая БД, то необходимо будет залить шаблон под названием 116_empty.sql, если же база создается как замена mysql базы данных, и будет проводится миграция с mysql на postgres(подробнее можно почитать [[https://cloud.security-hub.ru/wiki/doku.php?id=%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80:%D0%BC%D0%B8%D0%B3%D1%80%D0%B0%D1%86%D0%B8%D1%8F_%D0%B1%D0%B4_mysql_%D0%B2_%D0%B1%D0%B4_postgres|тут]]): Импорт базы данных dozor: psql -U postgres -d dozor < (путь до фала)/116_empty.sql на запрос пароля, ввести пароль суперпользователя базы данных и дождаться окончания загрузки базы данных. После успешного завершения дампа необходимо вызвать функцию создания партиции, необходимой для записи ивентов. Для этого необходимо войти в БД psql -U postgres -d dozor Ввести пароль, и уже в коммандной строке постгресса ввести следующее: CALL "AddNewEventsPartition"(EXTRACT(MONTH FROM (current_date))::INTEGER, EXTRACT(YEAR FROM (current_date))::INTEGER); После всех проделанных манипуляций необходимо дать доступ pgagent к базе данных, путем прописывания пароля Для этого нужно перейти в директорию /root cd создать файл .pgpass touch .pgpass и записать туда следующие данные 127.0.0.1:5432:postgres:postgres: 127.0.0.1:5432:dozor:postgres: ,где - ваш пароль от суперпользователя postgres. После этого сохранить файл и дать ему права chmod 0600 .pgpass Затем необходимо добавить pgagent в автозагрузку rc-update add pgagent default На этом установка, настройка и импорт базы данных в PostgreSQL завершены. Для удобство работы с базой можно использовать PGAdmin, установку которого можно увидеть в [[https://cloud.security-hub.ru/wiki/doku.php?id=%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80:%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_pgadmin|этой]] статье Для корректной работы сценариев, на сервере необходимо сделать несколько действий. В настройках d3srv.cfg, находящейся по пути cd /var/lib/dozor В разделе [other] вписать или раскомментировать строку script_compiler. script_compiler = /var/lib/dotnet/2.1/clr/corerun /var/lib/dotnet/app/scamp/SCAMPCompile.dll И по пути cd /var/lib