Подготовка виртуальной машины к прохождению курса
В рамках курса лабораторные работы выполняются на виртуальной машине с операционной системой РЕД ОС (x86_64). В данном разделе мы настраиваем ВМ для дальнейшей работы.
-
Скачайте и установите ОС с официального сайта:

-
Установите Oracle VirtualBox:

-
Установите WinCP (опционально, можно использовать любой другой аналог данного SCP-клиента для удобного и защищенного копирования файлов между локальной памятью и памятью сервера):

-
Скачайте с официального сайта SSH-клиент Termius.
-
Скачайте пробную версию Standard-дистрибутива Pangolin после регистрации на сайте.
Создание виртуальной машины
-
Создайте виртуальную машину с ОС РЕДОС. В качестве конфигурации сервера установите "минимальную":



-
Настройте созданную виртуальную машину:


-
В результате параметры виртуальной машины должны принять следующий вид:

-
После запуска виртуальной машины будет предложено установить ОС РЕДОС.

В разделе "Выбор программ" необходимо выбрать для установки "сервер минимальный":

-
Для подключения к виртуальной машине через терминал важно разрешить подключение по SSH:

Работа с ВМ в Termius
-
В рамках курса мы работаем с Termius. Для подключения к ВМ через внешние средства в нашем случае Termius, необходимо создать новое локальное подключение, используя IP-адрес виртуальной машины:

-
Добавьте новый узел в Termius:

Установка и начальная настройка Pangolin
Убедитесь в том, чтобы виртуальная машина имела конфигурацию:
- CPU: 2
- MEM: 8 GB
- HDD: 30 GB
- OS: REDOS 8.0 minimal
[UserName@ServerName ~]$ cat /etc/*-release
NAME="RED OS"
VERSION="8.0"
PLATFORM_ID="platform:red80"
ID="redos"
ID_LIKE="rhel centos fedora"
VERSION_ID="8.0"
PRETTY_NAME="RED OS 8.0"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:redos:redos:8"
HOME_URL="https://redos.red-soft.ru"
BUG_REPORT_URL="https://support.red-soft.ru"
EDITION="Standard"
RED OS release (8.0) MINIMAL
RED OS release (8.0) MINIMAL
RED OS release (8.0) MINIMAL
[UserName@ServerName ~]$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Address sizes: 46 bits physical, 48 bits virtual
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
Vendor ID: GenuineIntel
Model name: Intel(R) Xeon(R) CPU E5-2678 v3 @ 2.50GHz
CPU family: 6
Model: 63
Thread(s) per core: 1
Core(s) per socket: 2
Socket(s): 1
Stepping: 2
BogoMIPS: 4999.99
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp lm constant_tsc rep_good nopl xtopology nonstop_ts c cpuid tsc_known_freq pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 movbe popcnt aes rdrand hypervisor lahf_lm abm pti fsgsbase bmi1 bmi2 invpcid arat md_clear flush_l1d
arch_capabilities
Virtualization features:
Hypervisor vendor: KVM
Virtualization type: full
Caches (sum of all):
L1d: 64 KiB (2 instances)
L1i: 64 KiB (2 instances)
L2: 512 KiB (2 instances)
L3: 60 MiB (2 instances)
NUMA:
NUMA node(s): 1
NUMA node0 CPU(s): 0,1
Vulnerabilities:
Gather data sampling: Not affected
Itlb multihit: Not affected
L1tf: Mitigation; PTE Inversion
Mds: Mitigation; Clear CPU buffers; SMT Host state unknown
Meltdown: Mitigation; PTI
Mmio stale data: Mitigation; Clear CPU buffers; SMT Host state unknown
Reg file data sampling: Not affected
Retbleed: Not affected
Spec rstack overflow: Not affected
Spec store bypass: Vulnerable
Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Spectre v2: Mitigation; Retpolines; STIBP disabled; RSB filling; PBRSB-eIBRS Not affected; BHI Retpoline
Srbds: Not affected
Tsx async abort: Not affected
[UserName@ServerName ~]$ free
total used free shared buff/cache available
Mem: 8133840 418464 7789088 2988 124360 7715376
Swap: 11279352 0 11279352
[UserName@ServerName ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 1.6G 3.0M 1.6G 1% /run
/dev/sda4 26G 2.0G 23G 8% /
tmpfs 3.9G 0 3.9G 0% /tmp
/dev/sda2 974M 160M 747M 18% /boot
tmpfs 795M 0 795M 0% /run/user/0
[UserName@ServerName ~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 30G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 1G 0 part /boot
├─sda3 8:3 0 3G 0 part [SWAP]
└─sda4 8:4 0 26G 0 part /
sr0 11:0 1 1024M 0 rom
zram0 252:0 0 7.8G 0 disk [SWAP]
Установка пакетов
Установите пакет unzip:
[UserName@ServerName Distr]$ sudo dnf -y install unzip
Last metadata expiration check: 0:10:16 ago on Thu 27 Mar 2025 12:44:17 PM MSK.
Dependencies resolved.
=================================================================================================================================================================================================== Package Architecture Version Repository Size
===================================================================================================================================================================================================Installing:
unzip x86_64 6.0-54.red80 base 180 k
Transaction Summary
===================================================================================================================================================================================================Install 1 Package
Total download size: 180 k
Installed size: 392 k
Downloading Packages:
unzip-6.0-54.red80.x86_64.rpm 1.7 MB/s | 180 kB 00:00
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Total 1.6 MB/s | 180 kB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : unzip-6.0-54.red80.x86_64 1/1
Running scriptlet: unzip-6.0-54.red80.x86_64 1/1
Verifying : unzip-6.0-54.red80.x86_64 1/1
Installed:
unzip-6.0-54.red80.x86_64
Complete!
Копирование дистрибутива на сервер
Скопируйте дистрибутив с лицензией на сервер (любым доступным способом). В рамках курса мы воспользуемся SCP-клиентом WinSCP:
[UserName@ServerName ~]$ mkdir Distr
[UserName@ServerName ~]$ cd Distr/
[UserName@ServerName Distr]$ ls -la
total 749836
drwxr-xr-x. 2 UserName UserName 4096 Mar 27 12:49 .
drwx------. 3 UserName UserName 4096 Mar 27 12:35 ..
-rw-r--r--. 1 UserName UserName 500 Feb 7 20:07 license_trial_202505.json
-rw-r--r--. 1 UserName UserName 767811775 Feb 8 17:47 PSQ-{pangolin_version}-28-redos8-distrib.zip
[UserName@ServerName Distr]$
Установка дистрибутива
Далее в примерах команд будут использоваться следующие обозначения:
Обозначения
{major_version}– базовая версия продукта (например 6);{major.minor}– короткая версия продукта (например 6.6);{pangolin_version}– полная версия продукта (например 6.6.5).
-
Распакуйте архив с дистрибутивом:
[UserName@ServerName Distr]$ unzip PSQ-{pangolin_version}-redos8-distrib.zipArchive: PSQ-{pangolin_version}-28-redos8-distrib.zipinflating: PSQ-{pangolin_version}-28-redos8-cyclonedx-distrib.jsoninflating: PSQ-{pangolin_version}-28-redos8-documentation-distrib.pominflating: PSQ-{pangolin_version}-28-redos8-documentation-distrib.zipinflating: PSQ-{pangolin_version}-28-redos8-installer-distrib.pominflating: PSQ-{pangolin_version}-28-redos8-installer-distrib.zipinflating: PSQ-{pangolin_version}-28-redos8-owned-distrib.pominflating: PSQ-{pangolin_version}-28-redos8-owned-distrib.zipinflating: PSQ-{pangolin_version}-28-redos8-party-distrib.pominflating: PSQ-{pangolin_version}-28-redos8-party-distrib.zipinflating: PSQ-{pangolin_version}-28-redos8-swidtag-distrib.swidtaginflating: PSQ-{pangolin_version}-28-redos8-unpacker-distrib.sh[UserName@ServerName Distr]$ bash PSQ-{pangolin_version}-redos8-unpacker-distrib.shstart~/Distr/distributive ~/Distrsuccessful completion: PSQ-{pangolin_version}-distrib.tar.gz~/Distr[UserName@ServerName Distr]$ tar xf PSQ-{pangolin_version}-distrib.tar.gz[UserName@ServerName Distr]$ ls -latotal 2296824drwxr-xr-x. 9 UserName UserName 4096 Mar 27 13:01 .drwx------. 3 UserName UserName 4096 Mar 27 12:35 ..drwxr-xr-x. 2 UserName UserName 4096 Mar 27 12:55 3rdpartydrwxr-xr-x. 3 UserName UserName 4096 Jan 26 15:22 debugdrwxr-xr-x. 3 UserName UserName 4096 Jan 27 09:26 documentationdrwxr-xr-x. 12 UserName UserName 4096 Jan 26 15:21 installer-rw-r--r--. 1 UserName UserName 500 Feb 7 20:07 license_trial_202505.json-rw-r--r--. 1 UserName UserName 6633335 Jan 26 14:58 pangolin-backup-tools-1.2.2-redos8.0.x86_64.rpm-rw-r--r--. 1 UserName UserName 18063392 Jan 26 14:53 pangolin-dbms-{major.minor}-{pangolin_version}-redos8.0.x86_64.rpm-rw-r--r--. 1 UserName UserName 2132717 Jan 26 14:53 pangolin-dbms-{major.minor}-client-{pangolin_version}-redos8.0.x86_64.rpm-rw-r--r--. 1 UserName UserName 333949 Jan 26 14:53 pangolin-dbms-{major.minor}-libpq-{pangolin_version}-redos8.0.x86_64.rpm-rw-r--r--. 1 UserName UserName 9932 Jan 26 14:53 pangolin-dbms-{major.minor}-libpq-dev-{pangolin_version}-redos8.0.x86_64.rpm-rw-r--r--. 1 UserName UserName 16639265 Jan 26 15:16 pangolin-manager-2.1.5-redos8.0.x86_64.rpm-rw-r--r--. 1 UserName UserName 687927 Jan 26 14:42 pangolin-pooler-1.4.1-redos8.0.x86_64.rpm-rw-r--r--. 1 UserName UserName 765651986 Mar 27 12:57 PSQ-{pangolin_version}-distrib.tar.gz-rw-r--r--. 1 UserName UserName 54033 Jan 27 09:29 PSQ-{pangolin_version}-28-redos8-cyclonedx-distrib.json-rw-r--r--. 1 UserName UserName 767811775 Feb 8 17:47 PSQ-{pangolin_version}-28-redos8-distrib.zip-rw-r--r--. 1 UserName UserName 2442 Jan 27 09:29 PSQ-{pangolin_version}-28-redos8-documentation-distrib.pom-rw-r--r--. 1 UserName UserName 207423820 Jan 27 09:27 PSQ-{pangolin_version}-28-redos8-documentation-distrib.zip-rw-r--r--. 1 UserName UserName 2438 Jan 27 09:28 PSQ-{pangolin_version}-28-redos8-installer-distrib.pom-rw-r--r--. 1 UserName UserName 23780942 Jan 27 09:28 PSQ-{pangolin_version}-28-redos8-installer-distrib.zip-rw-r--r--. 1 UserName UserName 2389 Jan 27 09:28 PSQ-{pangolin_version}-28-redos8-owned-distrib.pom-rw-r--r--. 1 UserName UserName 199056837 Jan 27 09:28 PSQ-{pangolin_version}-28-redos8-owned-distrib.zip-rw-r--r--. 1 UserName UserName 2383 Jan 27 09:28 PSQ-{pangolin_version}-28-redos8-party-distrib.pom-rw-r--r--. 1 UserName UserName 343554642 Jan 27 09:28 PSQ-{pangolin_version}-28-redos8-party-distrib.zip-rw-r--r--. 1 UserName UserName 4192 Jan 27 09:29 PSQ-{pangolin_version}-28-redos8-swidtag-distrib.swidtag-rw-r--r--. 1 UserName UserName 1692 Jan 27 09:29 PSQ-{pangolin_version}-28-redos8-unpacker-distrib.sh-rw-r--r--. 1 UserName UserName 4192 Mar 27 12:56 regid.2011-07.ru.sbertech_psq-{pangolin_version}.swidtagdrwxr-xr-x. 3 UserName UserName 4096 Jan 26 15:22 repositoriesdrwxr-xr-x. 2 UserName UserName 4096 Jan 26 15:22 timescaledbdrwxr-xr-x. 3 UserName UserName 4096 Jan 26 15:22 utilities -
Установите пакеты с сервером и клиентом Pangolin:
[UserName@ServerName Distr]$ sudo dnf -y install pangolin-dbms-{major.minor}-{pangolin_version}-redos8.0.x86_64.rpmLast metadata expiration check: 0:19:24 ago on Thu 27 Mar 2025 12:44:17 PM MSK.Dependencies resolved.=================================================================================================================================================================================================== Package Architecture Version Repository Size===================================================================================================================================================================================================Installing:pangolin-dbms-{major.minor} x86_64 {pangolin_version}-redos8.0 @commandline 17 MInstalling dependencies:jsoncpp x86_64 1.9.5-1.red80 base 97 klibXft x86_64 2.3.3-8.red80 base 61 klibXrender x86_64 0.9.10-16.red80 base 26 klibicu x86_64 71.1-1.red80 base 10 Mlibpkgconf x86_64 1.9.5-4.red80 updates 37 klogrotate x86_64 3.22.0-1.red80 updates 78 kopenssl x86_64 1:3.1.5-5.red80 updates 1.2 Mpkgconf x86_64 1.9.5-4.red80 updates 42 kpkgconf-m4 noarch 1.9.5-4.red80 updates 13 kpkgconf-pkg-config x86_64 1.9.5-4.red80 updates 8.6 kpython3.9 x86_64 3.9.21-2.red80 updates 18 Mtk x86_64 1:8.6.12-1.red80 base 1.6 Muuid x86_64 1.6.2-52.red80 base 57 kTransaction Summary===================================================================================================================================================================================================Install 14 PackagesTotal size: 49 MTotal download size: 31 MInstalled size: 208 MDownloading Packages:(1/13): libXft-2.3.3-8.red80.x86_64.rpm 281 kB/s | 61 kB 00:00(2/13): libXrender-0.9.10-16.red80.x86_64.rpm 115 kB/s | 26 kB 00:00(3/13): jsoncpp-1.9.5-1.red80.x86_64.rpm 326 kB/s | 97 kB 00:00(4/13): uuid-1.6.2-52.red80.x86_64.rpm 487 kB/s | 57 kB 00:00(5/13): libpkgconf-1.9.5-4.red80.x86_64.rpm 311 kB/s | 37 kB 00:00(6/13): logrotate-3.22.0-1.red80.x86_64.rpm 506 kB/s | 78 kB 00:00(7/13): tk-8.6.12-1.red80.x86_64.rpm 2.5 MB/s | 1.6 MB 00:00(8/13): pkgconf-1.9.5-4.red80.x86_64.rpm 255 kB/s | 42 kB 00:00(9/13): openssl-3.1.5-5.red80.x86_64.rpm 2.6 MB/s | 1.2 MB 00:00(10/13): pkgconf-m4-1.9.5-4.red80.noarch.rpm 98 kB/s | 13 kB 00:00(11/13): pkgconf-pkg-config-1.9.5-4.red80.x86_64.rpm 109 kB/s | 8.6 kB 00:00(12/13): libicu-71.1-1.red80.x86_64.rpm 2.9 MB/s | 10 MB 00:03(13/13): python3.9-3.9.21-2.red80.x86_64.rpm 3.3 MB/s | 18 MB 00:05---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Total 4.7 MB/s | 31 MB 00:06Running transaction checkTransaction check succeeded.Running transaction testTransaction test succeeded.Running transactionPreparing : 1/1Installing : pkgconf-m4-1.9.5-4.red80.noarch 1/14Installing : openssl-1:3.1.5-5.red80.x86_64 2/14Running scriptlet: logrotate-3.22.0-1.red80.x86_64 3/14Installing : logrotate-3.22.0-1.red80.x86_64 3/14Running scriptlet: logrotate-3.22.0-1.red80.x86_64 3/14Created symlink /etc/systemd/system/timers.target.wants/logrotate.timer → /usr/lib/systemd/system/logrotate.timer.Installing : libpkgconf-1.9.5-4.red80.x86_64 4/14Installing : pkgconf-1.9.5-4.red80.x86_64 5/14Installing : pkgconf-pkg-config-1.9.5-4.red80.x86_64 6/14Installing : uuid-1.6.2-52.red80.x86_64 7/14Installing : libicu-71.1-1.red80.x86_64 8/14Installing : libXrender-0.9.10-16.red80.x86_64 9/14Installing : libXft-2.3.3-8.red80.x86_64 10/14Running scriptlet: tk-1:8.6.12-1.red80.x86_64 11/14Installing : tk-1:8.6.12-1.red80.x86_64 11/14Installing : python3.9-3.9.21-2.red80.x86_64 12/14Installing : jsoncpp-1.9.5-1.red80.x86_64 13/14Running scriptlet: pangolin-dbms-{major.minor}-{pangolin_version}-redos8.0.x86_64 14/14Create group pangolin_users with gid=226usermod: user 'postgres' does not existCreate group postgres with gid=26Create user postgres with uid=26usermod: user 'kmadmin_pg' does not existCreate group kmadmin_pg with gid=126Create user kmadmin_pg with uid=126Installing : pangolin-dbms-{major.minor}-{pangolin_version}-redos8.0.x86_64 14/14Running scriptlet: pangolin-dbms-{major.minor}-{pangolin_version}-redos8.0.x86_64 14/14Config /etc/man_db.conf was updatedecpg-man auto /usr/pangolin-major.minor/share/man/man1/ecpg.1.gzinitprotection auto /usr/pangolin-major.minor/bin/initprotectionpostmaster auto /usr/pangolin-major.minor/bin/postmasterpg_controldata auto /usr/pangolin-major.minor/bin/pg_controldatapg_ctl-man auto /usr/pangolin-major.minor/share/man/man1/pg_ctl.1.gzpax auto /usr/bin/spaxpg_upgrade auto /usr/pangolin-major.minor/bin/pg_upgradepostmaster-man auto /usr/pangolin-major.minor/share/man/man1/postmaster.1.gzld auto /usr/bin/ld.bfdpg_repack auto /usr/pangolin-major.minor/bin/pg_repacklibnssckbi.so.x86_64 auto /usr/lib64/pkcs11/p11-kit-trust.sopg_test_timing auto /usr/pangolin-major.minor/bin/pg_test_timingarptables auto /usr/sbin/arptables-nftpg_resetwal auto /usr/pangolin-major.minor/bin/pg_resetwaloid2name-man auto /usr/pangolin-major.minor/share/man/man1/oid2name.1.gzpg_rewind auto /usr/pangolin-major.minor/bin/pg_rewindtrace_decode auto /usr/pangolin-major.minor/bin/trace_decodeprint auto /usr/bin/lpr.cupscifs-idmap-plugin auto /usr/lib64/cifs-utils/cifs_idmap_sss.sopg_upgrade-man auto /usr/pangolin-major.minor/share/man/man1/pg_upgrade.1.gzpg_archivecleanup-man auto /usr/pangolin-major.minor/share/man/man1/pg_archivecleanup.1.gzpg_waldump-man auto /usr/pangolin-major.minor/share/man/man1/pg_waldump.1.gziptables auto /usr/sbin/iptables-nftpkcs12_cert_info auto /usr/pangolin-major.minor/bin/pkcs12_cert_infovacuumlo auto /usr/pangolin-major.minor/bin/vacuumlopostgres auto /usr/pangolin-major.minor/bin/postgresecpg auto /usr/pangolin-major.minor/bin/ecpgebtables auto /usr/sbin/ebtables-nftvacuumlo-man auto /usr/pangolin-major.minor/share/man/man1/vacuumlo.1.gzman auto /usr/bin/man.man-dbpg_test_timing-man auto /usr/pangolin-major.minor/share/man/man1/pg_test_timing.1.gzpsql_set_lsn auto /usr/pangolin-major.minor/bin/psql_set_lsnpg_controldata-man auto /usr/pangolin-major.minor/share/man/man1/pg_controldata.1.gzpg_resetwal-man auto /usr/pangolin-major.minor/share/man/man1/pg_resetwal.1.gzsoelim auto /usr/bin/soelim.groffpg_auth_config auto /usr/pangolin-major.minor/bin/pg_auth_configpg_ctl auto /usr/pangolin-major.minor/bin/pg_ctlpg_waldump auto /usr/pangolin-major.minor/bin/pg_waldumpmailx auto /usr/bin/mailx.mailxpsql_rsa_verify auto /usr/pangolin-major.minor/bin/psql_rsa_verifypg_config auto /usr/pangolin-major.minor/bin/pg_configpostgres-man auto /usr/pangolin-major.minor/share/man/man1/postgres.1.gzpg_test_fsync-man auto /usr/pangolin-major.minor/share/man/man1/pg_test_fsync.1.gzpg_test_fsync auto /usr/pangolin-major.minor/bin/pg_test_fsyncpg_checksums-man auto /usr/pangolin-major.minor/share/man/man1/pg_checksums.1.gzinitdb auto /usr/pangolin-major.minor/bin/initdbmta auto /usr/bin/esmtp-wrapperoid2name auto /usr/pangolin-major.minor/bin/oid2namepg_checksums auto /usr/pangolin-major.minor/bin/pg_checksumsinitdb-man auto /usr/pangolin-major.minor/share/man/man1/initdb.1.gzpg_auth_password auto /usr/pangolin-major.minor/bin/pg_auth_passwordpg_archivecleanup auto /usr/pangolin-major.minor/bin/pg_archivecleanuppg_rewind-man auto /usr/pangolin-major.minor/share/man/man1/pg_rewind.1.gzpg_config-man auto /usr/pangolin-major.minor/share/man/man1/pg_config.1.gzVerifying : jsoncpp-1.9.5-1.red80.x86_64 1/14Verifying : libXft-2.3.3-8.red80.x86_64 2/14Verifying : libXrender-0.9.10-16.red80.x86_64 3/14Verifying : libicu-71.1-1.red80.x86_64 4/14Verifying : tk-1:8.6.12-1.red80.x86_64 5/14Verifying : uuid-1.6.2-52.red80.x86_64 6/14Verifying : libpkgconf-1.9.5-4.red80.x86_64 7/14Verifying : logrotate-3.22.0-1.red80.x86_64 8/14Verifying : openssl-1:3.1.5-5.red80.x86_64 9/14Verifying : pkgconf-1.9.5-4.red80.x86_64 10/14Verifying : pkgconf-m4-1.9.5-4.red80.noarch 11/14Verifying : pkgconf-pkg-config-1.9.5-4.red80.x86_64 12/14Verifying : python3.9-3.9.21-2.red80.x86_64 13/14Verifying : pangolin-dbms-{major.minor}-{pangolin_version}-redos8.0.x86_64 14/14Installed:jsoncpp-1.9.5-1.red80.x86_64 libXft-2.3.3-8.red80.x86_64 libXrender-0.9.10-16.red80.x86_64 libicu-71.1-1.red80.x86_64 libpkgconf-1.9.5-4.red80.x86_64logrotate-3.22.0-1.red80.x86_64 openssl-1:3.1.5-5.red80.x86_64 pangolin-dbms-{major.minor}-{pangolin_version}-redos8.0.x86_64 pkgconf-1.9.5-4.red80.x86_64 pkgconf-m4-1.9.5-4.red80.noarchpkgconf-pkg-config-1.9.5-4.red80.x86_64 python3.9-3.9.21-2.red80.x86_64 tk-1:8.6.12-1.red80.x86_64 uuid-1.6.2-52.red80.x86_64Complete![UserName@ServerName Distr]$ sudo dnf -y install pangolin-dbms-{major.minor}-client-{pangolin_version}-redos8.0.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 MTransaction Summary===================================================================================================================================================================================================Install 1 PackageTotal size: 2.0 MInstalled size: 11 MDownloading Packages:Running transaction checkTransaction check succeeded.Running transaction testTransaction test succeeded.Running transactionPreparing : 1/1Running scriptlet: pangolin-dbms-{major.minor}-client-{pangolin_version}-redos8.0.x86_64 1/1Installing : pangolin-dbms-{major.minor}-client-{pangolin_version}-redos8.0.x86_64 1/1Running scriptlet: pangolin-dbms-{major.minor}-client-{pangolin_version}-redos8.0.x86_64 1/1Config /etc/man_db.conf was updatedpg_dumpall auto /usr/pangolin-dbms-client-major.minor/bin/pg_dumpallclusterdb-man auto /usr/pangolin-dbms-client-major.minor/share/man/man1/clusterdb.1.gzecpg-man auto /usr/pangolin-major.minor/share/man/man1/ecpg.1.gzinitprotection auto /usr/pangolin-major.minor/bin/initprotectionpostmaster auto /usr/pangolin-major.minor/bin/postmasterpg_controldata auto /usr/pangolin-major.minor/bin/pg_controldatapg_ctl-man auto /usr/pangolin-major.minor/share/man/man1/pg_ctl.1.gzpax auto /usr/bin/spaxpg_verifybackup auto /usr/pangolin-dbms-client-major.minor/bin/pg_verifybackuppg_upgrade auto /usr/pangolin-major.minor/bin/pg_upgradepostmaster-man auto /usr/pangolin-major.minor/share/man/man1/postmaster.1.gzpg_dump auto /usr/pangolin-dbms-client-major.minor/bin/pg_dumppg_receivewal-man auto /usr/pangolin-dbms-client-major.minor/share/man/man1/pg_receivewal.1.gzpg_amcheck auto /usr/pangolin-dbms-client-major.minor/bin/pg_amcheckdropdb auto /usr/pangolin-dbms-client-major.minor/bin/dropdbreindexdb auto /usr/pangolin-dbms-client-major.minor/bin/reindexdbld auto /usr/bin/ld.bfdpg_repack auto /usr/pangolin-major.minor/bin/pg_repacklibnssckbi.so.x86_64 auto /usr/lib64/pkcs11/p11-kit-trust.sopg_test_timing auto /usr/pangolin-major.minor/bin/pg_test_timingarptables auto /usr/sbin/arptables-nftpg_resetwal auto /usr/pangolin-major.minor/bin/pg_resetwaloid2name-man auto /usr/pangolin-major.minor/share/man/man1/oid2name.1.gzclusterdb auto /usr/pangolin-dbms-client-major.minor/bin/clusterdbpg_restore-man auto /usr/pangolin-dbms-client-major.minor/share/man/man1/pg_restore.1.gzpg_rewind auto /usr/pangolin-major.minor/bin/pg_rewindtrace_decode auto /usr/pangolin-major.minor/bin/trace_decodeprint auto /usr/bin/lpr.cupspg_restore auto /usr/pangolin-dbms-client-major.minor/bin/pg_restorepg_isready auto /usr/pangolin-dbms-client-major.minor/bin/pg_isreadycifs-idmap-plugin auto /usr/lib64/cifs-utils/cifs_idmap_sss.sopg_upgrade-man auto /usr/pangolin-major.minor/share/man/man1/pg_upgrade.1.gzpg_amcheck-man auto /usr/pangolin-dbms-client-major.minor/share/man/man1/pg_amcheck.1.gzpg_archivecleanup-man auto /usr/pangolin-major.minor/share/man/man1/pg_archivecleanup.1.gzreindexdb-man auto /usr/pangolin-dbms-client-major.minor/share/man/man1/reindexdb.1.gzpg_verifybackup-man auto /usr/pangolin-dbms-client-major.minor/share/man/man1/pg_verifybackup.1.gzpg_waldump-man auto /usr/pangolin-major.minor/share/man/man1/pg_waldump.1.gziptables auto /usr/sbin/iptables-nftcreatedb auto /usr/pangolin-dbms-client-major.minor/bin/createdbpkcs12_cert_info auto /usr/pangolin-major.minor/bin/pkcs12_cert_infopg_dump-man auto /usr/pangolin-dbms-client-major.minor/share/man/man1/pg_dump.1.gzvacuumlo auto /usr/pangolin-major.minor/bin/vacuumlopostgres auto /usr/pangolin-major.minor/bin/postgresvacuumdb auto /usr/pangolin-dbms-client-major.minor/bin/vacuumdbecpg auto /usr/pangolin-major.minor/bin/ecpgebtables auto /usr/sbin/ebtables-nftvacuumlo-man auto /usr/pangolin-major.minor/share/man/man1/vacuumlo.1.gzman auto /usr/bin/man.man-dbpg_test_timing-man auto /usr/pangolin-major.minor/share/man/man1/pg_test_timing.1.gzpsql_set_lsn auto /usr/pangolin-major.minor/bin/psql_set_lsndropdb-man auto /usr/pangolin-dbms-client-major.minor/share/man/man1/dropdb.1.gzpg_controldata-man auto /usr/pangolin-major.minor/share/man/man1/pg_controldata.1.gzpgbench-man auto /usr/pangolin-dbms-client-major.minor/share/man/man1/pgbench.1.gzpg_basebackup-man auto /usr/pangolin-dbms-client-major.minor/share/man/man1/pg_basebackup.1.gzvacuumdb-man auto /usr/pangolin-dbms-client-major.minor/share/man/man1/vacuumdb.1.gzpg_recvlogical-man auto /usr/pangolin-dbms-client-major.minor/share/man/man1/pg_recvlogical.1.gzpg_resetwal-man auto /usr/pangolin-major.minor/share/man/man1/pg_resetwal.1.gzpg_isready-man auto /usr/pangolin-dbms-client-major.minor/share/man/man1/pg_isready.1.gzsoelim auto /usr/bin/soelim.groffpg_auth_config auto /usr/pangolin-major.minor/bin/pg_auth_configpg_ctl auto /usr/pangolin-major.minor/bin/pg_ctlpg_waldump auto /usr/pangolin-major.minor/bin/pg_waldumpmailx auto /usr/bin/mailx.mailxpsql auto /usr/pangolin-dbms-client-major.minor/bin/psqldropuser-man auto /usr/pangolin-dbms-client-major.minor/share/man/man1/dropuser.1.gzpsql_rsa_verify auto /usr/pangolin-major.minor/bin/psql_rsa_verifypg_basebackup auto /usr/pangolin-dbms-client-major.minor/bin/pg_basebackuppg_config auto /usr/pangolin-major.minor/bin/pg_configpgbench auto /usr/pangolin-dbms-client-major.minor/bin/pgbenchpg_dumpall-man auto /usr/pangolin-dbms-client-major.minor/share/man/man1/pg_dumpall.1.gzpostgres-man auto /usr/pangolin-major.minor/share/man/man1/postgres.1.gzpg_test_fsync-man auto /usr/pangolin-major.minor/share/man/man1/pg_test_fsync.1.gzpg_test_fsync auto /usr/pangolin-major.minor/bin/pg_test_fsyncpg_checksums-man auto /usr/pangolin-major.minor/share/man/man1/pg_checksums.1.gzinitdb auto /usr/pangolin-major.minor/bin/initdbmta auto /usr/bin/esmtp-wrapperpg_receivewal auto /usr/pangolin-dbms-client-major.minor/bin/pg_receivewalcreateuser-man auto /usr/pangolin-dbms-client-major.minor/share/man/man1/createuser.1.gzpg_recvlogical auto /usr/pangolin-dbms-client-major.minor/bin/pg_recvlogicaloid2name auto /usr/pangolin-major.minor/bin/oid2namepsql-man auto /usr/pangolin-dbms-client-major.minor/share/man/man1/psql.1.gzpg_checksums auto /usr/pangolin-major.minor/bin/pg_checksumscreateuser auto /usr/pangolin-dbms-client-major.minor/bin/createuserdropuser auto /usr/pangolin-dbms-client-major.minor/bin/dropuserinitdb-man auto /usr/pangolin-major.minor/share/man/man1/initdb.1.gzpg_auth_password auto /usr/pangolin-major.minor/bin/pg_auth_passwordpg_archivecleanup auto /usr/pangolin-major.minor/bin/pg_archivecleanupcreatedb-man auto /usr/pangolin-dbms-client-major.minor/share/man/man1/createdb.1.gzpg_rewind-man auto /usr/pangolin-major.minor/share/man/man1/pg_rewind.1.gzpg_config-man auto /usr/pangolin-major.minor/share/man/man1/pg_config.1.gzVerifying : pangolin-dbms-{major.minor}-client-{pangolin_version}-redos8.0.x86_64 1/1Installed:pangolin-dbms-{major.minor}-client-{pangolin_version}-redos8.0.x86_64Complete!Должно получиться вот так:
[UserName@ServerName Distr]$ rpm -qa pangolin\*pangolin-dbms-{major.minor}-{pangolin_version}-redos8.0.x86_64pangolin-dbms-{major.minor}-client-{pangolin_version}-redos8.0.x86_64 -
Подключите динамические библиотеки:
[UserName@ServerName Distr]$ echo '/usr/pangolin/lib' | sudo tee /etc/ld.so.conf.d/pangolin.conf/usr/pangolin/lib[UserName@ServerName Distr]$ echo '/usr/pangolin-dbms-client/lib' | sudo tee -a /etc/ld.so.conf.d/pangolin.conf/usr/pangolin-dbms-client/lib[UserName@ServerName Distr]$ sudo cat /etc/ld.so.conf.d/pangolin.conf/usr/pangolin/lib/usr/pangolin-dbms-client/libПроиндексировать базу динамических библиотек:
[UserName@ServerName Distr]$ sudo ldconfig
Запуск сервера Pangolin
-
Создайте директории
/pgdata/0{major_version}/data,/pgerrorlogs/0{major_version},/opt/pangolin_license. Измените владельца директорий наpostgres:postgres/:[UserName@ServerName Distr]$ sudo mkdir -p /pgdata/0{major_version}/data /pgerrorlogs/0{major_version} /opt/pangolin_license[UserName@ServerName Distr]$ sudo chown -R postgres:postgres /pgdata /pgerrorlogs /opt/pangolin_license[UserName@ServerName Distr]$ sudo ls -ld /pgdata/0{major_version}/data /pgerrorlogs/0{major_version} /opt/pangolin_licensedrwxr-xr-x. 2 postgres postgres 4096 Mar 27 13:32 /opt/pangolin_licensedrwxr-xr-x. 2 postgres postgres 4096 Mar 27 13:32 /pgdata/0{major_version}/datadrwxr-xr-x. 2 postgres postgres 4096 Mar 27 13:32 /pgerrorlogs/0{major_version} -
Добавьте в профиль
postgresпеременные окружения:[UserName@ServerName Distr]$ sudo vi /home/postgres/.bash_profile# .bash_profile# Get the aliases and functionsif [ -f ~/.bashrc ]; then. ~/.bashrcfi# 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Проверьте изменения:
[UserName@ServerName Distr]$ sudo cat /home/postgres/.bash_profile -
Скопируйте файл лицензии в директорию
/opt/pangolin_license/. Измените владельца файла лицензии наpostgres:postgres:[UserName@ServerName Distr]$ sudo cp ~/Distr/license_trial_202505.json /opt/pangolin_license/license.json[UserName@ServerName Distr]$ sudo chown -v postgres:postgres /opt/pangolin_license/license.jsonchanged ownership of '/opt/pangolin_license/license.json' from root:root to postgres:postgres
Инициализация PGDATA
Из-под пользователя postgres проинициализируйте каталог $PGDATA:
[UserName@ServerName Distr]$ sudo su - postgres
[postgres@ServerName ~]$ initdb -k
The 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.UTF-8".
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.
fixing permissions on existing directory /pgdata/0{major_version}/data ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... posix
selecting default max_connections ...
"/usr/pangolin-major.minor/bin/postgres" --check -F -c log_checkpoints=false -c is_initdb=true -c max_connections=100 -c shared_buffers=1000 -c dynamic_shared_memory_type=posix < "/dev/null" > "/dev/null" 2>&1
100
selecting default shared_buffers ... 128MB
selecting default time zone ... Europe/Moscow
creating configuration files ... ok
running bootstrap script ... WARNING: 01000: Force disable "enable_vault_certificates_cache" vault credentials does not exists
LOCATION: check_enable_certificates_cache, security.c:112
WARNING: 01000: Force disable "enable_vault_params_cache", vault credentials does not exists
LOCATION: check_enable_params_cache, security.c:101
2025-03-27 13:54:49.902 MSK [13545] WARNING: /usr/pangolin-major.minor/bin/postgres: Could not init KMS connection. Error: -52 (failed to lock file)
ok
performing post-bootstrap initialization ... WARNING: 01000: Force disable "enable_vault_certificates_cache" vault credentials does not exists
LOCATION: check_enable_certificates_cache, security.c:112
WARNING: 01000: Force disable "enable_vault_params_cache", vault credentials does not exists
LOCATION: check_enable_params_cache, security.c:101
2025-03-27 13:54:50.314 MSK [13547] WARNING: postgres: Could not init KMS connection. Error: -52 (failed to lock file)
sh: line 1: locale: command not found
2025-03-27 13:54:50.595 MSK [13547] WARNING: no usable system locales were found
ok
syncing data to disk ... ok
initdb: warning: enabling "trust" authentication for local connections
initdb: 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
Конфигурация сервера
В конец файла $PGDATA/postgresql.conf добавьте параметры:
port = 5432
max_connections = 100
superuser_reserved_connections = 3
enabled_extra_auth_methods = 'peer, trust'
listen_addresses = '*'
Запуск сервера Pangolin
-
Запустите сервер с записью лога в директорию
/pgerrorlogs/0{major_version}:[postgres@ServerName ~]$ pg_ctl -l /pgerrorlogs/0{major_version}/pangolin-`date +%F_%T`.log startwaiting for server to start.... doneserver started[postgres@ServerName ~]$ ls -la /pgerrorlogs/0{major_version}/total 12drwxr-xr-x. 2 postgres postgres 4096 Mar 27 14:24 .drwxr-xr-x. 3 root root 4096 Mar 27 13:32 ..-rw-------. 1 postgres postgres 2061 Mar 27 14:24 pangolin-2025-03-27_14:24:34.log[postgres@ServerName ~]$ ps f -C postgresPID TTY STAT TIME COMMAND13724 ? Ss 0:00 /usr/pangolin-major.minor/bin/postgres13726 ? Ss 0:00 \_ postgres: checkpointer13727 ? Ss 0:00 \_ postgres: background writer13729 ? Ss 0:00 \_ postgres: idle sessions terminator13730 ? Ss 0:00 \_ postgres: walwriter13731 ? Ss 0:00 \_ postgres: autovacuum launcher13732 ? Ss 0:00 \_ postgres: autounite launcher13733 ? Ss 0:00 \_ postgres: integrity check launcher13734 ? Ss 0:00 \_ postgres: license checker13735 ? Ss 0:00 \_ postgres: logical replication launcher[postgres@ServerName ~]$ psqlpsql (15.5)Type "help" for help.postgres=# select product_version();product_version---------------------------Platform V Pangolin {pangolin_version}(1 row)postgres=# \q -
Остановите сервер:
[postgres@ServerName ~]$ pg_ctl stopwaiting for server to shut down.... doneserver stopped
Сервис systemd для Pangolin
-
Создайте сервис
systemdдля управления экземпляром PostgreSQL:[UserName@ServerName Distr]$ sudo vi /etc/systemd/system/postgresql.service[Unit]Description=Runners PostgreSQL serviceAfter=syslog.target network.target[Service]Type=notifyEnvironment="PG_LICENSE_PATH=/opt/pangolin_license"Environment="PG_PLUGINS_PATH=/usr/pangolin-{major_version}/lib"Environment="PGCTLTIMEOUT=120"Environment="LD_LIBRARY_PATH=/usr/pangolin-{major_version}/lib"LimitNOFILE=65536# Pre-commands to start watchdog deviceUser=postgresGroup=postgresPermissionsStartOnly=trueExecStartPre=/bin/mkdir -p /var/run/postgresqlExecStartPre=/bin/chown -R postgres:postgres /var/run/postgresqlExecReload=/bin/kill -HUP $MAINPIDWorkingDirectory=/usr/pangolin-{major_version}ExecStart=/bin/bash -i -c "/usr/pangolin-{major_version}/bin/postgres -D /pgdata/0{major_version}/data"Restart=on-failure[Install]WantedBy=multi-user.targetПроверьте изменения:
[UserName@ServerName Distr]$ cat /etc/systemd/system/postgresql.service -
Перечитайте конфигурацию
systemd:[UserName@ServerName Distr]$ sudo systemctl daemon-reloadПроверьте, что юнит существует:
[UserName@ServerName Distr]$ sudo systemctl list-unit-files | grep postgresqlpostgresql.service disabled disabled -
Включите автозапуск сервиса:
[UserName@ServerName Distr]$ sudo systemctl enable postgresqlCreated symlink /etc/systemd/system/multi-user.target.wants/postgresql.service → /etc/systemd/system/postgresql.service. -
Запуск сервера Pangolin:
[UserName@ServerName ~]$ sudo systemctl start postgresql[UserName@ServerName ~]$ sudo systemctl status postgresql● postgresql.service - Runners PostgreSQL serviceLoaded: loaded (/etc/systemd/system/postgresql.service; enabled; preset: disabled)Active: active (running) since Thu 2025-03-27 15:23:26 MSK; 3s agoProcess: 14562 ExecStartPre=/bin/mkdir -p /var/run/postgresql (code=exited, status=0/SUCCESS)Process: 14563 ExecStartPre=/bin/chown -R postgres:postgres /var/run/postgresql (code=exited, status=0/SUCCESS)Main PID: 14564 (postgres)Tasks: 10 (limit: 9499)Memory: 29.4MCPU: 227msCGroup: /system.slice/postgresql.service├─14564 /usr/pangolin-{major_version}/bin/postgres -D /pgdata/0{major_version}/data├─14581 "postgres: checkpointer "├─14582 "postgres: background writer "├─14584 "postgres: idle sessions terminator "├─14585 "postgres: walwriter "├─14586 "postgres: autovacuum launcher "├─14587 "postgres: autounite launcher "├─14588 "postgres: integrity check launcher "├─14589 "postgres: license checker "└─14590 "postgres: logical replication launcher "Mar 27 15:23:26 ServerName bash[14564]: 2025-03-27 15:23:26.830 MSK [14564] LOG: listening on IPv4 address "0.0.0.0", port 5432Mar 27 15:23:26 ServerName bash[14564]: 2025-03-27 15:23:26.830 MSK [14564] LOG: listening on IPv6 address "::", port 5432Mar 27 15:23:26 ServerName bash[14564]: 2025-03-27 15:23:26.836 MSK [14564] LOG: listening on Unix socket "/tmp/.s.PGSQL.5432"Mar 27 15:23:26 ServerName bash[14583]: 2025-03-27 15:23:26.854 MSK [14583] LOG: database system was shut down at 2025-03-27 15:23:20 MSKMar 27 15:23:26 ServerName bash[14584]: 2025-03-27 15:23:26.854 MSK [14584] LOG: idle terminator startedMar 27 15:23:26 ServerName bash[14588]: 2025-03-27 15:23:26.891 MSK [14564] LOG: Start integrity check launcherMar 27 15:23:26 ServerName bash[14564]: 2025-03-27 15:23:26.892 MSK [14564] LOG: database system is ready to accept connectionsMar 27 15:23:26 ServerName bash[14588]: 2025-03-27 15:23:26.893 MSK [14588] LOG: Start of integrity checkMar 27 15:23:26 ServerName bash[14589]: 2025-03-27 15:23:26.894 MSK [14589] LOG: License checker startedMar 27 15:23:26 ServerName systemd[1]: Started postgresql.service - Runners PostgreSQL service. -
Проверьте запуск
psql:[UserName@ServerName ~]$ sudo su - postgres[postgres@ServerName ~]$ psqlpsql (15.5)Type "help" for help.postgres=# select product_version();product_version---------------------------Platform V Pangolin {pangolin_version}(1 row)postgres=# \q
Настройка .psqlrc
Для более удобного вывода в консоли отредактируйте .psqlrc:
[postgres@ServerName ~]$ vi ~/.psqlrc
\pset pager on
\setenv PAGER 'less -S'
\pset border 2
\pset linestyle unicode
\set PROMPT1 '%n@%/%=# '
Перезагрузите сервер:
[UserName@ServerName ~]$ sudo systemctl restart postgresql
Пример удобного для работы вывода:
[postgres@ServerName ~]$ psql
Pager is used for long output.
Border style is 2.
Line style is unicode.
psql (15.5)
Type "help" for help.
postgres@postgres=# \dg
List of roles
┌───────────┬────────────────────────────────────────────────────────────┬───────────┐
│ Role name │ Attributes │ Member of │
├───────────┼────────────────────────────────────────────────────────────┼───────────┤
│ postgres │ Superuser, Create role, Create DB, Replication, Bypass RLS │ {} │
│ UserName │ │ {} │
└───────────┴────────────────────────────────────────────────────────────┴───────────┘
postgres@postgres=# \l
List of databases
┌───────────┬──────────┬──────────┬─────────────┬─────────────┬────────────┬─────────────────┬───────────────────────┐
│ Name │ Owner │ Encoding │ Collate │ Ctype │ ICU Locale │ Locale Provider │ Access privileges │
├───────────┼──────────┼──────────┼─────────────┼─────────────┼────────────┼─────────────────┼───────────────────────┤
│ postgres │ postgres │ UTF8 │ en_US.UTF-8 │ en_US.UTF-8 │ │ libc │ │
│ template0 │ postgres │ UTF8 │ en_US.UTF-8 │ en_US.UTF-8 │ │ libc │ =c/postgres ↵│
│ │ │ │ │ │ │ │ postgres=CTc/postgres │
│ template1 │ postgres │ UTF8 │ en_US.UTF-8 │ en_US.UTF-8 │ │ libc │ =c/postgres ↵│
│ │ │ │ │ │ │ │ postgres=CTc/postgres │
└───────────┴──────────┴──────────┴─────────────┴─────────────┴────────────┴─────────────────┴───────────────────────┘
(3 rows)