- Установка и настройка СУБД PostgreSQL
- ОС Ubuntu Server 18.04/16.04 LTS и Astra Linux Common Edition/Special Edition
- Установка
- Настройка учётной записи
- Настройка удалённого доступа
- Установка и настройка СУБД PostgreSQL (Linux)#
- Необходимое программное обеспечение под ОС Astra Linux / Debian#
- Установка#
- Дополнительная настройка#
- Развертывание новой базы#
- Развертывание поставочного дампа#
- Установка на Astra Linux
- Создание базы данных на сервере postgresql
- Изменения в файлах с версией ядра
- УСТАНОВКА ЯДРА
- УСТАНОВКА И НАСТРОЙКА СЕРВЕРА ПРИЛОЖЕНИЙ
- Установка сервера приложений ApacheTomee
- Установка ApacheTomEE
- Настройка Apache Tomee в качестве системного сервиса
- Сопряжение БД и сервера приложений
Установка и настройка СУБД PostgreSQL
Для работы Платформы НЕЙРОСС необходимо наличие в сети СУБД PostgreSQL версии не ниже 9.5. СУБД может быть развёрнута как на сервере Платформы, так и на выделенном сервере. В данном руководстве приведены инструкции по установке и настройке СУБД PostgreSQL под ОС Ubuntu 18.04/16.04 LTS 64 bit и ОС Astra Linux Commod Edition/Special Edition . Порядок настройки СУБД PostgreSQL для работы под управлением перечисленных операционных систем идентичен за исключением используемой версии СУБД.
ОС Ubuntu Server 18.04/16.04 LTS и Astra Linux Common Edition/Special Edition
Установка
Для установки СУБД PostgreSQL из сети Интернет выполните в терминале:
– в среде ОС Ubuntu Server 18.04 LTS
sudo apt update sudo apt install -y postgresql-10
– в среде ОС Ubuntu Server 16.04 LTS
sudo apt update sudo apt install -y postgresql-9.5
– в среде ОС Astra Linux Common Edition
sudo apt update sudo apt install -y postgresql-9.6
– в среде ОС Astra Linux Special Edition
sudo apt update sudo apt install -y postgresql-9.6
Настройка учётной записи
Процедура установки и первичной настройки Платформы НЕЙРОСС допускает как подключение к уже существующим базам данных, так и автоматическое создание таких баз данных (рекомендуемый подход). В последнем случае необходимо разрешить доступ к СУБД для учётной записи с правами на создание ролей и баз данных. В СУБД PostgreSQL всегда присутствует корневая учётная запись postgres , наделённая полными административными правами. В ОС Ubuntu Server 18.04 LTS и Astra Linux Common Edition/Special Edition для данной учётной записи по умолчанию не задан пароль, подключение к СУБД возможно только из терминала соответствующей операционной системы. Ниже приведена инструкция по заданию пароля для административной учётной записи postgres .
Если СУБД установлена на сервере Платформы, вы можете пропустить данный шаг. На этапе первого запуска Платформы оставьте поле ввода пароля пользователя СУБД пустым.
- Выполните команду psql от имени пользователя postgres с помощью sudo :
Настройка удалённого доступа
Шаги, описанные в данном разделе, необходимо выполнить ТОЛЬКО тогда, когда СУБД PostgreSQL и Платформа НЕЙРОСС развёрнуты на различных серверах. В случае, если СУБД и Платформа установлены на одном сервере — пропустите инструкцию в данном разделе.
В данном разделе описана процедура разрешения удалённого сетевого подключения к СУБД PostgreSQL версии 10.12. Местоположение конфигурационных файлов PostgreSQL других версий может отличаться.
- В терминале откройте конфигурационный файл postgresql.conf для редактирования:
$ sudo nano /etc/postgresql/10/main/postgresql.conf
#------------------------------------------------------------------------------ # CONNECTIONS AND AUTHENTICATION #------------------------------------------------------------------------------ # - Connection Settings - listen_addresses = '*' # what IP address(es) to listen on; # comma-separated list of addresses; # defaults to 'localhost'; use '*' for all
sudo nano /etc/postgresql/10/main/pg_hba.conf
# Database administrative login by Unix domain socket local all postgres peer # TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all peer # IPv4 local connections: host all all 127.0.0.1/32 md5 host all all 10.0.0.1/13 md5 # IPv6 local connections: host all all ::1/128 md5 # Allow replication connections from localhost, by a user with the # replication privilege. #local replication postgres peer #host replication postgres 127.0.0.1/32 md5 #host replication postgres ::1/128 md5
sudo systemctl restart postgresql.service
Установка и настройка СУБД PostgreSQL (Linux)#
Необходимое программное обеспечение под ОС Astra Linux / Debian#
- Сервер PostgreSQL 12 или выше
PostgreSQL или Postgres Pro - postgresql-contrib (обычно устанавливаются вместе с сервером Postgres)
- htop
- Iotop
- sysstat
- pgbadger
- ssh (клиент и сервер SSH)
- mc (Midnight Commander)
- tar
- zip
Не рекоммендуется выполнять сборку сервера самостоятельно из исходного кода т.к. нельзя гарантировать стабильность работы таких сборок в продуктивном контуре.
Установка#
Скачайте требуемый пакет с сайта https://postgrespro.ru/products/download или https://www.postgresql.org/download. Для установки следуйте инструкциям на сайте.
Дополнительная настройка#
- В конфигурационном файле postgresql.conf переопределите умолчательные параметры согласно конфигурации железа.
Пример для сервера с конфигурацией ЦП: 4 ядра; ОЗУ: 8 Гб; Диск: SSD:
Добавить в конец конфигурационного файла
#------------------------------------------------------------------------------ # CUSTOMIZED OPTIONS #------------------------------------------------------------------------------ # Memory Configuration shared_buffers = 2GB effective_cache_size = 6GB work_mem = 41MB maintenance_work_mem = 410MB # Checkpoint Related Configuration min_wal_size = 2GB max_wal_size = 3GB checkpoint_completion_target = 0.9 wal_buffers = -1 # Network Related Configuration listen_addresses = '*' max_connections = 100 # Storage Configuration random_page_cost = 1.1 effective_io_concurrency = 200 # Worker Processes Configuration max_worker_processes = 8 max_parallel_workers_per_gather = 2 max_parallel_workers = 2 max_locks_per_transaction = 500
Для подбора параметров можно воспользоваться онлайн-мастером https://www.pgconfig.org
В мастере указать версию постгреса, выбрать профиль DataWare house and BI Applications и указать параметры железа сервера: количество ядер ЦП, размер ОЗУ, тип диска.
# TYPE DATABASE USER ADDRESS METHOD # IPv4 local connections: host all all all md5
Для получения подробной информации по конфигурации Postgres воспользуйтесь документацией на сайте: https://postgrespro.ru/docs
Развертывание новой базы#
Поменяйте пароль пользователю ОС c именем postgres
Подключитесь терминалом к серверу СУБД под пользователем root
Переключитесь на пользователя «postgres»
Подключитесь локально утилитой psql к СУБД Postgres
Поменяйте пароль суперпользователя
alter user postgres password '';
CREATE ROLE WITH LOGIN NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT NOREPLICATION CONNECTION LIMIT -1 PASSWORD ''; GRANT pg_signal_backend TO ;
Создайте новую БД, в качестве владельца укажите созданного пользователя
CREATE DATABASE "" WITH OWNER = ENCODING = 'UTF8' CONNECTION LIMIT = -1;
Подключитесь к созданной бд
Подключите, необходимые для работы Global, расширения
CREATE EXTENSION if not exists plpgsql; CREATE EXTENSION if not exists fuzzystrmatch; CREATE EXTENSION if not exists pg_trgm; CREATE EXTENSION if not exists pg_stat_statements; CREATE EXTENSION if not exists "uuid-ossp"; CREATE EXTENSION if not exists dict_xsyn; CREATE EXTENSION if not exists ltree;
Теперь БД готова к работе.
Развертывание поставочного дампа#
При получении преднастроенного поставочного дампа нагоните его на созданную БД.
Если БД не пуста и содержит объекты, удалите их
При наличии прав суперпользователя Postgres можно удалить БД
и создать заново, выполнив шаги раздела «Развертывание новой базы»
Если прав суперпользователя Postgres нет, воспользуйтесть скриптом удаления
SET search_path TO public; -- DO $$ DECLARE r RECORD; BEGIN FOR r IN (SELECT p.oid::regprocedure as sFunctionName FROM pg_proc p INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) inner join pg_roles a on p.proowner =a.oid WHERE ns.nspname = current_schema and a.rolname =current_user and p.probin is null) LOOP EXECUTE 'DROP FUNCTION IF EXISTS ' || r.sFunctionName || ' CASCADE'; END LOOP; END $$; -- DO $$ DECLARE r RECORD; BEGIN FOR r IN (SELECT tablename FROM pg_tables WHERE schemaname = current_schema()) LOOP EXECUTE 'DROP TABLE IF EXISTS ' || quote_ident(r.tablename) || ' CASCADE'; END LOOP; END $$; -- DO $$ DECLARE r RECORD; BEGIN FOR r IN (SELECT c.relname FROM pg_class c inner join pg_catalog.pg_namespace n on c.relnamespace =n.oid inner join pg_roles a on c.relowner =a.oid WHERE (c.relkind = 'S') and n.nspname =current_schema and a.rolname =current_user) LOOP EXECUTE 'drop sequence IF EXISTS ' || quote_ident(r.relname) || ' CASCADE'; END LOOP; END $$; -- DO $$ DECLARE r RECORD; BEGIN FOR r IN (SELECT c.relname FROM pg_class c inner join pg_catalog.pg_namespace n on c.relnamespace =n.oid inner join pg_roles a on c.relowner =a.oid where c.relkind ='v' and n.nspname =current_schema and a.rolname =current_user) LOOP EXECUTE 'drop view IF EXISTS ' || quote_ident(r.relname) || ' CASCADE'; END LOOP; END $$; -- SELECT lo_unlink(l.oid) FROM pg_largeobject_metadata l inner join pg_roles a on l.lomowner =a.oid WHERE a.rolname =current_user;
Поставочный дамп запакован архиватором tar
Имя файла архива имее следующий вид: _public__.tar Пример: demoDb_public_04.11.2022_170406.tar
Загрузите файл поставочного дампа на сервер Postgres в директорию /usr/dumpstore
mkdir -p /tmp/global/Dump tar -xvf /usr/dumpstore/_public__.tar -C /tmp/global/Dump --strip-components 1
Дамп распакуется в каталог /tmp/global/Dump/_public__
/opt/pgpro/std-12/bin/pg_restore —dbname=postgresql://:@localhost:5432/ -O -x -v —no-tablespaces —jobs=4 /tmp/global/Dump/_public__
/opt/pgpro/std-12/bin/pg_restore — путь до утилиты распаковки дампа (postgres pro 12)
jobs=4 — количество потоков, указывать по количеству ядер
Установка на Astra Linux
Из под учетной записи суперпользователя сервера postgresql, необходимо создать пользователя БД:
postgres=# CREATE ROLE xm_user NOINHERIT NOREPLICATION LOGIN PASSWORD »xm_user_pass’;
xm_user — имя пользователя,
Создание базы данных на сервере postgresql
postgres=# CREATE DATABASE database_name
database_name — имя базы,
xm_user — пользователь из пункта 1
Изменения в файлах с версией ядра
- Архивы VER1 и VER2 по умолчанию содержат схему sys_cubs. Необходимо разархивировать архивы и в файлах \DB_PG\script.sql заменить sys_cubs на имя схемы БД по умолчанию.
- Архивы VER1 и VER4 по умолчанию содержат имя пользователя dev_user. Необходимо разархивировать архивы и в файлах \DB_PG\script.sql заменить dev_user на имя созданного пользователя БД.
- Заархивировать версию с изменениями.
УСТАНОВКА ЯДРА
Файл bases.xml должен лежать рядом с папкой lib и Installer2##2.8.64
Содержимое файла bases.xml:
user — имя пользователя для подключения к БД;
password — пароль для подключения к БД;
database_name — имя БД;
host — ip адрес хоста БД;
scheme_name — имя схемы БД.
Параметр baseType не менять!
1) С любого компьютера с ОС Windows, у которого есть доступ к БД и установлена Oracle Java Runtime Environment 8 (JRE 8), выполнить.
2) Installer2##2.8.64 двойным кликом, выбрать подключение к БД, нажать «Далее».
3) Поставить галочку на «Единичная версия», выбрать файл с версией VER1.zip, нажать «Далее».
4) Проставить галочку «Я ознакомлен с изменениями в версии». Нажать «Установить».
5) Установка завершена. Нажать «Далее» для просмотра логов и «Закрыть» для выхода.
6) Установить остальные файлы с архивами версий (VER2.zip, VER3.zip, VER4.zip, VER5.zip).
УСТАНОВКА И НАСТРОЙКА СЕРВЕРА ПРИЛОЖЕНИЙ
Установка сервера приложений ApacheTomee
На каждом сервере приложений устанавливается идентичным образом.
Установка ApacheTomEE
Скачать apache-tomee-8.0.6-plus.tar.gz и распаковать архив:
xmapp*# tar zxvf apache-tomee-8.0.6-plus.tar.gz
Перенести распакованное дерево папок на постоянное место:
xmapp*# mv apache-tomee-8.0.6-plus.tar.gz /opt/tomee
Создать учетную запись пользователя, под которым будет исполняться сервер приложений:
xmapp*# useradd -r tomee --shell /bin/false
Передать её права на дерево папок:
xmapp*# chown -R tomee:tomee /opt/tomee/
Настройка Apache Tomee в качестве системного сервиса
Создать файл /etc/systemd/system/tomee.service следующего содержания:
# Systemd unit file for default tomee
# To create clones of this service:
# DO NOTHING, use tomee@.service instead.
Environment=’CATALINA_OPTS=-Xms4096M –Xmx8192M -server -XX:+UseParallelGC’
После сохранения файла, обновить статус системных служб:
xmapp*# systemctl daemon-reload
Открыть порты в файерволе:
xmapp*# iptables -A INPUT -p tcp -m state —state NEW -m tcp —dport 8080 -j ACCEPT
В файле \opt\tomee\conf\tomcat-users.xml добавить логин для доступа к менеджеру веб-сервера:
xmapp*# systemctl start tomee
xmapp*# systemctl enable tomee
xmapp*# systemctl status tomee
Вывод команды должен показать состояние сервиса «Active» и отсутствие ошибок.
Проверить работу ApacheTomee в браузере вызвав соответствующий адрес http://server-ip-address:8080/ , где server-ip-address — адрес сервера
Сопряжение БД и сервера приложений
На каждом сервере приложений, в конфигурационный файл Tomee /opt/tomee/conf/server.xml добавить ресурс в GlobalNamingResources:
где: server-ip-address ip адрес сервера, port порт базы database_name имя базы, xm_user пользователь из пункта 1
В конфигурационный файл Tomee /conf/context.xml добавить в контекст:
Для доступа к manager, в файлe
Tomee /webapps/manager/META-INF/context.xml закомментировать строку:
Удалить из install/tomee/lib файл ejb-core-1.0.jar
Скопировать из дистрибутива библиотеки: