Установка и настройка PostgreSQL и pgAdmin 4 на Alma Linux 8

посмотреть список доступных версий в репозитории:

dnf module list postgresql

в результате будет показан список:

AlmaLinux 8 - AppStream
Name                            Stream                      Profiles                               Summary                                                
postgresql                      9.6                         client, server [d]                     PostgreSQL server and client module                    
postgresql                      10 [d]                      client, server [d]                     PostgreSQL server and client module                    
postgresql                      12                          client, server [d]                     PostgreSQL server and client module                    
postgresql                      13                          client, server [d]                     PostgreSQL server and client module                    
postgresql                      15                          client, server [d]                     PostgreSQL server and client module                    

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

на против версии которая указана для установки по умолчанию стоит [d]

чтобы выбрать другую версию для установки (к примеру 15):

dnf module enable postgresql:15

установка:

dnf install postgresql-server

инициализировать базу данных:

postgresql-setup --initdb

в результате отобразится:

* Initializing database in '/var/lib/pgsql/data'
 * Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log

/var/lib/pgsql/data — по данному пути была создана файловая структура базы данных.

запустить и добавить в автозагрузку:

systemctl start postgresql && systemctl enable postgresql

создать пользователя:

su postgres

в консоли bash-4.4 выполнить команду:

createuser --interactive -P

указать имя пользователя, пароль и повтор пароля:

Enter name of role to add: "ИМЯ ПОЛЬЗОВАТЕЛЯ БАЗЫ"
Enter password for new role: "ПАРОЛЬ ПОЛЬЗОВАТЕЛЯ БАЗЫ"
Enter it again: "ПОВТОР ПАРОЛЯ"
Shall the new role be a superuser? (y/n) y

выйти из консоли bash-4.4:

exit

для того, чтобы авторизоватся под созданными пользователями на текущем сервере нужно открыть файл /var/lib/pgsql/data/pg_hba.conf в инициализированной базе и добавить в начало:

local   all             all                                     md5
host    all             all             127.0.0.1/32            md5
host    all             all             ::1/128                 md5
# ...

перезагрузить postgresql:

systemctl restart postgresql

 

pgAdmin 4

добавить репозиторий pgadmin4:

rpm -i https://ftp.postgresql.org/pub/pgadmin/pgadmin4/yum/pgadmin4-redhat-repo-2-1.noarch.rpm

установка PgAdmin4:

dnf install pgadmin4

запустить конфигурационный скрипт:

/usr/pgadmin4/bin/setup-web.sh

будет доступен по адресу: http://server_ip/pgadmin4/

работает только под пользователем apache

 

Если нужно поментить в определенный VirtualHost

удаляем /etc/httpd/conf.d/pgadmin4.conf

добавить в тот VirtualHost при запросе которого будет открыватся pgadmin4:

...
    LoadModule wsgi_module modules/mod_wsgi.so
    WSGIDaemonProcess pgadmin processes=1 threads=25 python-home=/usr/pgadmin4/venv
    WSGIScriptAlias /pgadmin4 /usr/pgadmin4/web/pgAdmin4.wsgi

    <Directory /usr/pgadmin4/web/>
        WSGIProcessGroup pgadmin
        WSGIApplicationGroup %{GLOBAL}
        <IfModule mod_authz_core.c>
            # Apache 2.4
            Require all granted
        </IfModule>
        <IfModule !mod_authz_core.c>
            # Apache 2.2
            Order Deny,Allow
            Deny from All
            Allow from 127.0.0.1
            Allow from ::1
        </IfModule>
    </Directory>
...

к примеру:

Listen 127.0.0.1:9888
<VirtualHost 127.0.0.1:9888>

    LoadModule wsgi_module modules/mod_wsgi.so
    WSGIDaemonProcess pgadmin processes=1 threads=25 python-home=/usr/pgadmin4/venv
    WSGIScriptAlias /pgadmin4 /usr/pgadmin4/web/pgAdmin4.wsgi

    <Directory /usr/pgadmin4/web/>
        WSGIProcessGroup pgadmin
        WSGIApplicationGroup %{GLOBAL}
        <IfModule mod_authz_core.c>
            # Apache 2.4
            Require all granted
        </IfModule>
        <IfModule !mod_authz_core.c>
            # Apache 2.2
            Order Deny,Allow
            Deny from All
            Allow from 127.0.0.1
            Allow from ::1
        </IfModule>
    </Directory>

    DocumentRoot /var/www/html

    <FilesMatch \.php$>
        SetHandler proxy:fcgi://127.0.0.1:9000
    </FilesMatch>

    ErrorLog /var/www/logs/error.log
    CustomLog /var/www/logs/access.log combined

</VirtualHost>