Серверы баз данных

/
/
Интеграция с Pgadmin4 в виде собственной службы

Интеграция с Pgadmin4 в виде собственной службы

Для управления PostgreSQL в панели ispmanager 6, можно использовать веб-приложение Pgadmin4 в виде отдельной службы на Python.

Авторизация в Pgadmin4 выполняется под единым аккаунтом администратора, после чего можно подключиться к PostrgreSQL под нужным пользователем.

Сначала потребуется установить само приложение Pgadmin4:

curl -fsS https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo gpg --dearmor -o /etc/apt/keyrings/packages-pgadmin-org.gpg
sudo sh -c 'echo "deb [signed-by=/etc/apt/keyrings/packages-pgadmin-org.gpg] https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/$(lsb_release -cs) pgadmin4 main" > /etc/apt/sources.list.d/pgadmin4.list && apt update'
apt install pgadmin4-web
rpm -i https://ftp.postgresql.org/pub/pgadmin/pgadmin4/yum/pgadmin4-redhat-repo-2-1.noarch.rpm
yum install pgadmin4-web

Выполните первичную конфигурацию Pgadmin4:

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

На этапе первичной конфигурации будет создана учетная запись администратора Pgadmin4 - запомните эти данные!

Приведите файл /usr/pgadmin4/web/config_local.py к виду:

SERVER_MODE = True
DEFAULT_SERVER = '127.0.0.1'
DEFAULT_SERVER_PORT = 5050

PROXY_X_FOR_COUNT = 1
PROXY_X_HOST_COUNT = 1
PROXY_X_PORT_COUNT = 1
PROXY_X_PREFIX_COUNT = 1

SESSION_COOKIE_SECURE = True
SESSION_COOKIE_SAMESITE = 'Lax'
SESSION_COOKIE_PATH = '/pgadmin4'

Создайте файл для службы Pgadmin4 с Flask по пути /etc/systemd/system/pgadmin4.service и добавьте в него следующую конфигурацию:

[Unit]
Description=pgAdmin 4 Service
After=network.target

[Service]
User=www-data
Group=www-data
WorkingDirectory=/usr/pgadmin4/web
Environment="PYTHONPATH=/usr/pgadmin4/web"
Environment="SCRIPT_NAME=/pgadmin4"
ExecStart=/usr/pgadmin4/venv/bin/python3 /usr/pgadmin4/web/pgAdmin4.py
Restart=always

[Install]
WantedBy=multi-user.target
[Unit]
Description=pgAdmin 4 Service
After=network.target

[Service]
User=apache
Group=apache
WorkingDirectory=/usr/pgadmin4/web
Environment="PYTHONPATH=/usr/pgadmin4/web"
Environment="SCRIPT_NAME=/pgadmin4"
ExecStart=/usr/pgadmin4/venv/bin/python3 /usr/pgadmin4/web/pgAdmin4.py
Restart=always

[Install]
WantedBy=multi-user.target

Перезагрузите конфигурацию менеджера systemd:

systemctl daemon-reload

Включите автозапуск службы Pgadmin4 и запустите её:

systemctl enable pgadmin4
systemctl restart pgadmin4

Проверьте статус службы:

systemctl status pgadmin4
Пример вывода активной службы
● pgadmin4.service - pgAdmin 4 Service
Loaded: loaded (/etc/systemd/system/pgadmin4.service; enabled; preset: disabled)
Active: active (running) since Mon 2026-09-28 08:32:54 UTC; 3min 38s ago
Main PID: 4017318 (python3)
Tasks: 3 (limit: 23127)
Memory: 121.1M (peak: 122.5M)
CPU: 3.892s
CGroup: /system.slice/pgadmin4.service
└─4017318 /usr/pgadmin4/venv/bin/python3 /usr/pgadmin4/web/pgAdmin4.py

Sep 28 08:32:54 white-diopside.example.com systemd[1]: Started pgAdmin 4 Service.
Sep 28 08:32:58 white-diopside.example.com python3[4017318]: Starting pgAdmin 4. Please navigate to http://127.0.0.1:5050 in your browser.
Sep 28 08:32:58 white-diopside.example.com python3[4017318]: 2026-09-28 08:32:58,027: WARNING        werkzeug:        Werkzeug appears to be used in a production depl>
Sep 28 08:32:58 white-diopside.example.com python3[4017318]:  * Serving Flask app 'pgadmin'
Sep 28 08:32:58 white-diopside.example.com python3[4017318]:  * Debug mode: off

Настройка веб-интерфейса

Для Litespeed и Apache

Создайте конфигурационный файл по пути /etc/apache2/conf.d/pgadmin4.conf (для RHEL-based систем путь /etc/httpd/conf.d/pgadmin4.conf) со следующим содержимым:

<IfModule mod_proxy.c>
    ProxyPreserveHost On

    ProxyPass /pgadmin4 http://127.0.0.1:5050/pgadmin4
    ProxyPassReverse /pgadmin4 http://127.0.0.1:5050/pgadmin4

    ProxyPassReverseCookiePath / /pgadmin4

    <Location /pgadmin4>
        Require all granted
        RequestHeader set X-Script-Name "/pgadmin4"
        RequestHeader set X-Forwarded-Proto "https"
        RequestHeader set X-Forwarded-For "%{REMOTE_ADDR}s"
        
        <IfModule mod_security2.c>
            SecRuleEngine Off
        </IfModule>
    </Location>
</IfModule>

Перезапустите службу веб-сервера:

Для Debian-based систем:

systemctl apache restart

Для RHEL-based систем:

systemctl httpd restart
systemctl lsws restart

Теперь веб-интерфейс Pgadmin4 доступен по пути /pgadmin4 для адреса сервера и любого сайта в этой панели, например https://192.168.0.10/pgadmin4 или https://domain.com/pgadmin4.

Для авторизации используются данные администратора, который был создан во время первичной конфигурации Pgadmin4.

Для Nginx

Создайте конфигурационный файл по пути /etc/nginx/vhosts-includes/pgadmin4-nginx.conf со следующим содержимым:

location = /pgadmin4 {
    return 301 /pgadmin4/;
}

location /pgadmin4/ {
    proxy_pass http://127.0.0.1:5050/pgadmin4/;
    
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Script-Name /pgadmin4;
    
    proxy_redirect http://127.0.0.1:5050/pgadmin4/ /pgadmin4/;
    proxy_redirect http://127.0.0.1:5050 /;
   
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    
    proxy_read_timeout 300s;
    proxy_connect_timeout 75s;
    
    proxy_cookie_path /pgadmin4 /pgadmin4;
}

Перезапустите службу Nginx;

systemctl nginx restart

Теперь веб-интерфейс Pgadmin4 доступен по пути /pgadmin4 для адреса сервера и любого сайта в этой панели, например https://192.168.0.10/pgadmin4 или https://domain.com/pgadmin4.

Для авторизации используются данные администратора, который был создан во время первичной конфигурации Pgadmin4.