Уровень 3.0
Подготовка к установке
Пользователь student должен иметь возможность выполнять команды от имени других пользователей с помощью sudo (в зависимости от используемой операционной системы пользователю обычно достаточно быть членом группы wheel или sudo).
В зависимости от настроек команда sudo, возможно, потребует ввода пароля учетной записи, от имени которой запускается sudo (здесь — student). Для этой учетной записи должна быть соответствующая настройка для разрешения выполнять sudo.
-
Проверьте наличие архива с установочным пакетом ПО Pangolin и получите его содержимое. Пакет должен быть в подкаталоге
Distribдомашнего каталога пользователяstudent.[student@ServerName ~]$ ls -1 ~/Distr/license.jsonPSQ-{pangolin_version}-{OS}-distrib.zip -
Перейдите в папку
~/Distr/и распакуйте архив:[student@ServerName ~]$ cd ~/Distr[student@ServerName Distr]$ unzip PSQ-{pangolin_version}-{OS}-distrib.zipAchive: PSQ-{pangolin_version}-{OS}-distrib.zipinflating: PSQ-{pangolin_version}-{OS}-cyclonedx-distrib.jsoninflating: PSQ-{pangolin_version}-{OS}-installer-distrib.pominflating: PSQ-{pangolin_version}-{OS}-installer-distrib.zipinflating: PSQ-{pangolin_version}-{OS}-owned-distrib.pominflating: PSQ-{pangolin_version}-{OS}-owned-distrib.zipinflating: PSQ-{pangolin_version}-{OS}-party-distrib.pominflating: PSQ-{pangolin_version}-{OS}-party-distrib.zipinflating: PSQ-{pangolin_version}-{OS}-swidtag-distrib.swidtaginflating: PSQ-{pangolin_version}-{OS}-unpacker-distrib.shinflating: PSQ-doc-{pangolin_version}-distrib.zipinflating: PSQ-doc-{pangolin_version}.pom -
Запустите скрипт
PSQ-{pangolin_version}-{OS}-unpacker-distrib.sh:[student@ServerName Distr]$ sh PSQ-{pangolin_version}-{OS}-unpacker-distrib.shstart~/Distr/distributive ~/Distrsuccessful completion: PSQ-{pangolin_version}-distrib.tar.gz~/DistrИ вернитесь в корневой каталог:
[student@ServerName Distr]$ cd ~ -
Для удобства распаковка будет производиться в подкаталоге
Distдомашнего каталога. Создайте каталог~/Distи, перейдя в него, распакуйте архив ПО Pangolin:[student@ServerName ~]$ mkdir ~/Dist[student@ServerName ~]$ cd ~/Dist[student@ServerName Dist]$ tar xvf ~/Distr/PSQ-{pangolin_version}-distrib.tar.gz././automation_scripts/./automation_scripts/pangolin_pooler/./automation_scripts/pangolin_pooler/inventories/./automation_scripts/pangolin_pooler/inventories/hosts.ini...Разбор команды:
В команде использован BSD-стиль (опции без минуса), но POSIX-стиль перед этими опциями допустим. Так как
tar-архив сжатgzip, то можно было также указать опциюz, ноtarподставил ее автоматически. Опцияvнеобязательна и обеспечивает режим подробного информирования. После опцииfуказывают имя файла архива.В каталоге
Distтеперь находятся извлеченные из архиваtar.gzфайлы, содержащие ПО для установки. -
Проверьте, извлечены ли из
tar.gz-архива пакеты RPM, содержащие ПО Pangolin:[student@ServerName Dist]$ ls -1 *.rpmpangolin-backup-tools-1.2.5-{OS}.x86_64.rpmpangolin-dbms-{major.minor}-{pangolin_version}-{OS}.x86_64.rpmpangolin-dbms-{major.minor}-client-{pangolin_version}-{OS}.x86_64.rpmpangolin-dbms-{major.minor}-libpq-{pangolin_version}-{OS}.x86_64.rpmpangolin-dbms-{major.minor}-libpq-dev-{pangolin_version}-{OS}.x86_64.rpmpangolin-manager-{component_version}-{OS}.x86_64.rpmpangolin-pooler-{component_version}-{OS}.x86_64.rpm
Установка
-
Получите информацию о пакете с серверным ПО СУБД Pangolin, а также о пакете с клиентским ПО. Используйте rpm с опциями:
-q— режим запроса,-i— получение информации о пакете и-p— обращение к пакету, еще не установленному в системе:[student@ServerName Dist]$ rpm -qip pangolin-dbms-{major.minor}-client-{pangolin_version}-{OS}.x86_64.rpmName : pangolin-dbms-{major.minor}-clientVersion : {pangolin_version}Release : {OS}Architecture: x86_64Install Date: (not installed)Group : Applications/DatabasesSize : 11255048License : Sbertech licenseSignature : (none)Source RPM : pangolin-dbms-{major.minor}-{pangolin_version}-{OS}.src.rpmBuild Date : Thu 07 Aug 2025 12:03:55 PM UTCBuild Host : localhostRelocations : /usr/pangolin-dbms-client-{major.minor}Packager : SbertechVendor : SbertechURL : https://sbertech.ruSummary : Platform V Pangolin DB is an advanced Object-Relational database management system (DBMS). Pangolin DBMS client.Description :Platform V Pangolin DB is an advanced Object-Relational database management system (DBMS).The pangolin-dbms-client package contains the client programs that you will need toaccess a Pangolin DBMS server. These client programs can be located on the same machine as thePangolin server, or on a remote machine that accesses a Pangolin serverover a network connection. The Pangolin server can be found in theplatform-v-pangolin-server sub-package.Located in the directory "/usr/pangolin-dbms-client-{major.minor}". -
Получите из
rpm-пакетов директории для установки файлов с исполняемым кодом сервера Pangolin и клиента psql:[student@ServerName Dist]$ rpm -qlp pangolin-dbms-{major.minor}-{pangolin_version}-{OS}.x86_64.rpm | fgrep bin/postgres/usr/pangolin-{major.minor}/bin/postgres[student@ServerName Dist]$ rpm -qlp pangolin-dbms-{major.minor}-{pangolin_version}-{OS}.x86_64.rpm | fgrep bin/psql/usr/pangolin-major.minor/bin/psql_rsa_verify/usr/pangolin-major.minor/bin/psql_set_lsnДля получения директорий установки использована команда
rpmс опциями-qlp,-l— список файлов, установленных из пакета. -
Установите ПО сервера и клиента.
Воспользуйтесь утилитой
rpmдля установки rpm-пакетов. Помните, что в случае с зависимостями пакеты не будут установлены автоматически, поэтому их необходимо будет установить вручную:[student@ServerName Dist]$ sudo rpm -ivh pangolin-dbms-{major.minor}-{pangolin_version}-{OS}.x86_64.rpmerror: Failed dependencies:uuid >= 1.6 is needed by pangolin-dbms-{major.minor}-{pangolin_version}-{OS}.x86_64[student@ServerName Dist]$ sudo dnf update[student@ServerName Dist]$ sudo dnf install uuid...Installed:uuid-1.6.2-55.sl9.1.x86_64Complete![student@ServerName Dist]$ sudo rpm -ivh pangolin-dbms-{major.minor}-{pangolin_version}-{OS}.x86_64.rpmPreparing... ########################################### [100%]Create group pangolin_users with gid=226...Config /etc/man_db.conf was updatedRunning /usr/lib/rpm/posttrans-filetriggersРазбор команды:
-i(install) – указывает, что пакет нужно установить;-v(verbose) – в процессе установки команда будет выводить на экран подробный вывод (например, имена файлов);-h(hash) – во время установки на экран будут выводиться символы решетки (#), отображающие прогресс выполнения операции.
А второй пакет установите с помощью менеджера пакетов ОС (здесь –
dnf):[student@ServerName Dist]$ sudo dnf -y install pangolin-dbms-{major.minor}-client-{pangolin_version}-{OS}.x86_64.rpmLast metadata expiration check: 0:25:20 ago on Thu 27 Mar 2025 12:44:17 PM MSK.Dependencies resolved.======================================================================================================================================================================= =========================== Package Architecture Version Repository Size======================================================================================================================================================================= ===========================Installing:pangolin-dbms-{major.minor}-client x86_64 {pangolin-version}-redos8.0 @commandline 2.0 M...Installed:pangolin-dbms-{major.minor}-client-{pangolin-version}-redos8.0.x86_64Complete!Затем проверьте, установились ли пакеты, с помощью
rpm -qa:[student@ServerName Dist]$ rpm -qa pangolin\*pangolin-dbms-{major.minor}-{pangolin_version}-{OS}.x86_64pangolin-dbms-{major.minor}-client-{pangolin_version}-{OS}.x86_64С опциями
-qaкомандаrpmвыводит список имен всех установленных пакетов в системе. -
Подключите библиотеки, установленные в каталог
/usr/pangolin/libиз пакета серверного ПО и каталог/usr/pangolin-dbms-client/lib— из клиентского. Для этого создайте файл конфигурации дляldconfig. Проиндексируйте базу данных библиотек и проверьте, подключаются ли библиотеки к ПО сервера и клиентов:[student@ServerName Dist]$ echo '/usr/pangolin/lib' | sudo tee /etc/ld.so.conf.d/pangolin.conf/usr/pangolin/lib[student@ServerName Dist]$ echo '/usr/pangolin-dbms-client/lib' | sudo tee -a /etc/ld.so.conf.d/pangolin.conf/usr/pangolin-dbms-client/lib[student@ServerName Dist]$ sudo cat /etc/ld.so.conf.d/pangolin.conf/usr/pangolin/lib/usr/pangolin-dbms-client/libВ каталоге
/etc/ld.so.conf.dможно размещать конфигурационные файлы с путями к каталогам, содержащим динамические библиотеки (shared objects). Другой способ — прописать пути к библиотекам непосредственно в файл конфигурации/etc/ld.so.conf. Вот база динамических библиотек —/etc/ld.so.cache:[student@ServerName Dist]$ sudo ldconfigУтилита
ldconfigиндексирует базу данных динамических библиотек. Утилитаlddпозволяет проверить список динамических библиотек, которые требуются для запуска динамически скомпонованных исполняемых файлов в формате ELF:[student@ServerName Dist]$ ldd /usr/pangolin-dbms-client/bin/psql | grep libpqlibpq.so.5 => /usr/pangolin-dbms-client/bin/../lib/libpq.so.5 (0x00007f50090c4000)[student@ServerName Dist]$ ls -l /usr/pangolin-dbms-client/bin/../lib/libpq.so.5lrwxrwxrwx 1 root root 13 апр 27 14:01 /usr/pangolin-dbms-client/bin/../lib/libpq.so.5 -> libpq.so.5.15Другой возможный путь указать местоположение в файловой системе каталогов, содержащих динамические библиотеки, — использование переменной окружения
LD_LIBRARY_PATH.
Подготовка к запуску
-
Создайте каталог для кластера баз данных (
PGDATA), каталог для журналов отчета, а также каталог для размещения лицензии. Имена соответствуют рекомендуемым в документации. Установите на созданные каталоги владельца и группуpostgres:[student@ServerName ~]$ cd[student@ServerName ~]$ sudo mkdir -p /pgdata/0{major_version}/data /pgerrorlogs/0{major_version} /opt/pangolin_license[student@ServerName ~]$ sudo ls -ld /pgdata/0{major_version}/data /pgerrorlogs/0{major_version} /opt/pangolin_licensedrwxr-xr-x 2 root root 6 Oct 14:51 /opt/pangolin_licensedrwxr-xr-x 2 root root 6 Oct 14:51 /pgdata/0{major_version}/datadrwxr-xr-x 2 root root 6 Oct 14:51 /pgerrorlogs/0{major_version}[student@ServerName ~]$ sudo chown -R postgres:postgres /pgdata /pgerrorlogs /opt/pangolin_license[student@ServerName ~]$ sudo ls -ld /pgdata /pgerrorlogs /opt/pangolin_licensedrwxr-xr-x 2 postgres postgres 6 Oct 14:51 /opt/pangolin_licensedrwxr-xr-x 2 postgres postgres 6 Oct 14:51 /pgdatadrwxr-xr-x 2 postgres postgres 6 Oct 14:51 /pgerrorlogs -
Запишите в файлы профиля пользователя
postgresнастройки нескольких переменных окружения:[student@ServerName ~]$ sudo vi ~postgres/.bash_profile...# User specific environment and startup programs# Pangolinumask 022export LD_LIBRARY_PATH=/usr/pangolin/libexport PG_PLUGINS_PATH=/usr/pangolin/libexport PGHOME=/usr/pangolinexport PGCLIENTENCODING=UTF8export CLNAME=clusternameexport PGDATA=/pgdata/0{major_version}/dataexport PG_LICENSE_PATH=/opt/pangolin_license/export LANG=en_US.UTF-8export LC_ALL="en_US.UTF-8"export MANPATH=$MANPATH:$PGHOME/share/manexport PATH=$PATH:/usr/pangolin/binВ файле
.bash_profileдля пользователяpostgresустанавливается несколько переменных окружения, к которым могут обращаться различные утилиты, взаимодействующие с СУБД Pangolin.Например, можно выделить переменную окружения
PGDATA, в которой записан каталог с кластером баз данных. Указанную переменную, в частности, использует утилитainitdbдля инициализации каталога данных, а такжеpg_ctlдля управления экземпляром СУБД Pangolin. -
Скопируйте лицензию в соответствующий каталог и установите на него права для postgres. В этом примере предполагается, что файл лицензии находится в каталоге
~/Distrib. Если он находится в ином каталоге, измените соответствующим образом первый аргумент командыcp. Проверить местоположение файла лицензии поможет командаls:[student@ServerName ~]$ sudo cp ~/Distrib/license*.json /opt/pangolin_license/license.json[student@ServerName ~]$ sudo chown -v postgres:postgres /opt/pangolin_license/license.jsonchanged ownership of '/opt/pangolin_license/license.json' retained as postgres:postgres[student@ServerName ~]$ sudo ls -l /opt/pangolin_license/license.json-rw-r--r-- 1 postgres postgres 511 May 6 16:10 /opt/pangolin_license/license.json -
В сеансе пользователя ОС
postgresпроверьте работоспособность клиента и сервера, запросив информацию о версии:[student@ServerName ~]$ sudo su - postgres[postgres@ServerName ~]$ psql --versionpsql (PostgreSQL) 15.5[postgres@ServerName ~]$ postgres --product_versionPlatform V Pangolin DB {pangolin_version}[postgres@ServerName ~]$ postgres --versionpostgres (PostgreSQL) 15.5
Создание и запуск кластера баз данных
-
Убедитесь, что локаль установлена в
en_US.UTF8, а также проверьте наличие и пустоту каталогаPGDATA:[postgres@ServerName ~]$ localeLANG=en_US.UTF-8LC_CTYPE="en_US.UTF-8"LC_NUMERIC="en_US.UTF-8"LC_TIME="en_US.UTF-8"LC_COLLATE="en_US.UTF-8"LC_MONETARY="en_US.UTF-8"LC_MESSAGES="en_US.UTF-8"LC_PAPER="en_US.UTF-8"LC_NAME="en_US.UTF-8"LC_ADDRESS="en_US.UTF-8"LC_TELEPHONE="en_US.UTF-8"LC_MEASUREMENT="en_US.UTF-8"LC_IDENTIFICATION="en_US.UTF-8"LC_ALL=en_US.UTF-8[postgres@ServerName ~]$ ls -ld $PGDATAdrwx------ 2 postgres postgres 4096 Aug 22 20:50 /pgdata/0{major_version}/data[postgres@ServerName ~]$ ls -la $PGDATAtotal 8drwxr-xr-x 2 postgres postgres 4096 Aug 22 20:50 .drwxr-xr-x 3 postgres postgres 4096 Aug 22 16:37 .. -
Проинициализируйте кластер баз данных:
[postgres@ServerName ~]$ initdb -kThe files belonging to this database system will be owned by user "postgres". This user must also own the server process.The database cluster will be initialized with locale "en_US.UTF8".The default database encoding has accordingly been set to "UTF8".The default text search configuration will be set to "english".Data page checksums are enabled....initdb: warning: enabling "trust" authentication for local connectionsinitdb: hint: You can change this by editing pg_hba.conf or using the option -A,or --auth-local and --auth-host, the next time you run initdb.Success. You can now start the database server using:pg_ctl -D /pgdata/0{major_version}/data -l logfile startКоманда
initdbсоздает кластер баз данных, в котором в том числе создаются каталоги с файлами баз данных, файлами общих системных таблиц, файлами журнала предзаписи, а также файлы с параметрами конфигурации.По умолчанию каталог создается в директории, указанной в переменной окружения
PGDATA. Однако директория может быть явно указана с использованием ключа-D.В команде
initdbбыл использован ключ-kдля включения расчета контрольных сумм. Также для этого можно использовать опцию--data-checksums. -
Добавьте в файл конфигурации следующие настройки:
[postgres@ServerName ~]$ vi $PGDATA/postgresql.conflisten_addresses = '*'port = 5432max_connections = 100superuser_reserved_connections = 3enabled_extra_auth_methods = 'peer, trust'Настройка
listen_addresses = '*'устанавливает все имеющиеся интерфейсы в качестве разрешенных для соединений. Прослушиваться будет порт5432, что задает настройкаport(значение по умолчанию). Максимальное количество клиентских сессий —100, что задано параметромmax_connections. Из них три зарезервированы за суперпользователем — параметрsuperuser_reserved_connections. Специфичная для Pangolin настройка (ее нет в PostgreSQL)enabled_extra_auth_methodsразрешает использовать методы аутентификацииpeerиtrust. -
Убедитесь, что в конфигурационном файле аутентификации локальные соединения разрешены без проверок подлинности:
[postgres@ServerName ~]$ egrep -v '^($|#)' $PGDATA/pg_hba.conflocal all all trusthost all all 127.0.0.1/32 trusthost all all ::1/128 trustlocal replication all trusthost replication all 127.0.0.1/32 trusthost replication all ::1/128 trustВ команде
egrepиспользуется регулярное выражение, удаляющее из вывода все пустые строки и строки, начинающиеся с решетки (комментарии). Метод аутентификацииtrustне использует каких-либо проверок аутентичности пользователей, разрешая все соединения. -
Запустите сервер, направив вывод отчета в каталог
/pgerrorlogs/0{major_version}/. Используя psql с опцией-c, выполните команду SQL для вывода версии продукта:[postgres@ServerName ~]$ pg_ctl -l /pgerrorlogs/0{major_version}/pangolin-`date +%F_%T`.log startwaiting for server to start.... doneserver started[postgres@ServerName ~]$ ps f -C postgresPID TTY STAT TIME COMMAND6184 ? Ss 0:00 /usr/pangolin-{major.minor}/bin/postgres6188 ? Ss 0:00 \_ postgres: checkpointer6189 ? Ss 0:00 \_ postgres: background writer6191 ? Ss 0:00 \_ postgres: idle sessions terminator6192 ? Ss 0:00 \_ postgres: walwriter6193 ? Ss 0:00 \_ postgres: autovacuum launcher6194 ? Ss 0:00 \_ postgres: autounite launcher6195 ? Ss 0:00 \_ postgres: integrity check launcher6196 ? Ss 0:00 \_ postgres: license checker6197 ? Ss 0:00 \_ postgres: logical replication launcher[postgres@ServerName ~]$ psql -c 'SELECT product_version()'product_version---------------------------Platform V Pangolin DB {pangolin_version}(1 row) -
Не забудьте остановить сервер после окончания работы командой
pg_ctl stop:[postgres@ServerName ~]$ pg_ctl stopwaiting for server to shut down.... doneserver stopped[postgres@ServerName ~]$ exitlogoutДля выхода из сеанса —
exit,logoutилиCtrl+D.
Готово! Вы успешно установили, настроили и запустили СУБД Pangolin.
Самопроверка
Вопрос 1
В bash выполнены следующие команды:
$ sudo mkdir -p /pgdata/06/data
$ sudo initdb -D /pgdata/06/data
Каким будет результат выполнения последней команды?
Вопрос 2
В какой момент выполняется создание конфигурационных файлов postgresql.conf и pg_hba.conf?
Вопрос 3
После установки Pangolin DB в bash выполнены следующие команды:
$ sudo su - postgres
postgres$ echo $HOME
/var/lib/postgres
postgres$ echo $PGHOME
/usr/pangolin
postgres$ echo $PGDATA
/pgdata/06/data
postgres$ pg_ctl -D /pangolin
Экземпляр с какой директорией кластера баз данных будет запускаться при выполнении последней команды?
Вопрос 4
Какие каталоги должны быть созданы вручную в процессе установки и инициализации кластера Pangolin DB?