23.06.2025

Как установить и настроить pgAdmin 4 в режиме сервера в Ubuntu 22.04

Введение

pgAdmin – это проект с открытым кодом, созданный для управления базами данных PostgreSQL. PostgreSQL – одна из самых востребованных систем управления базами данных в мире.

Инструмент удобен в использовании для новичков и профессионалов, работающих с PostgreSQL. Использует объектно-реляционную БД и предоставляет web-интерфейс и версию для рабочего стола для удобного взаимодействия с объектами базы данных.

Подготовка к установке

Для правильной работы между pgAdmin 4 и PostgreSQL, необходимо заранее подготовить:

Этап 1 – Развертывание pgAdmin и скачивание зависимостей

В первую очередь обновим индексы пакетов, для этого воспользуемся встроенной утилитой apt:

sudo apt update

Скачаем зависимости libgmp3-dev, libpq-dev:

sudo apt install libgmp3-dev libpq-dev

Создадим нескольких директорий с целью хранения информации о подключенных сессиях, хранилище и журнальных файлов:

sudo mkdir -p /var/lib/pgadmin4/sessions
sudo mkdir /var/lib/pgadmin4/storage
sudo mkdir /var/log/pgadmin4

Создадим пользователя serverspace:

useradd -m serverspace

После чего нужно задать новую парольную фразу юзера serverspace:

passwd serverspace

Добавляем его в группу sudo:

usermod -aG sudo serverspace

Далее, следует изменить владельцев директорий с root на serverspace, некоторые утилиты не дают доступ запускать службы в режиме суперпользователя:

sudo chown -R serverspace:serverspace /var/lib/pgadmin4
sudo chown -R serverspace:serverspace /var/log/pgadmin4

Затем перейдём в папку созданную под названием “test”. В данной инструкции имена каталогов указываются аналогично инструкции. Перейдём в ранее созданный каталог test и запустим среду test_env:

cd test/
source test_env/bin/activate

Запустив виртуальное окружение test_env, обновим пакет pip для установки нужной библиотеки. В случае не обновлённого pip, мы можем столкнуться с некоторыми трудностями при установке pgAdmin.

Обновление pip происходит следующим образом:

python3 -m pip install -U pip

С помощью web-браузера необходимо скачать последний релиз файла с расширением .whl. Который является стандартным пакетным расширением для Python дистрибутива. Скопируем ссылку утилиту, в командной строке пропишем:

wget https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v7.2/pip/pgadmin4-7.2-py3-none-any.whl

Используя pip, настроим скачанный пакет:

python -m pip install wheel

Установим:

python -m pip install pgadmin4-7.2-py3-none-any.whl

Скачаем Gunicorn на Python WSGI, который будет взаимодействовать с Nginx:

python -m pip install gunicorn

Первый этап выполнен успешно. Изменим конфигурационный файл, после чего можно будет подключиться к базе данных.

Этап 2 – Конфигурирование pgAdmin 4

Необходимо сделать резервную копию файла config.py, находящийся в папке установленного пакета pgAdmin. В этом примере путь до файла:/test/test_env/lib/python3.10/site-packages/pgadmin4/

cd /test/test_env/lib/python3.10/site-packages/pgadmin4/

Изменение основного файла – может привести к потере данных:

cp config.py config.py.orig

Файл config.py стоит редактировать только при необходимости, чтобы не повредить данные и работоспособность pgAdmin 4.

Внесем правки в файл config_local.py.

Важно! Файл должен располагаться по адресу: /site-packages/pgadmin4/

Для создания файла можно воспользоваться утилитой touch, либо сразу создать и открыть в редакторе vim или nano. Мы воспользуемся nano:

nano /test_env/lib/python3.10/site-packages/pgadmin4/config_local.py

После открытия внесем правки:

LOG_FILE = '/var/log/pgadmin4/pgadmin4.log'
SQLITE_PATH = '/var/lib/pgadmin4/pgadmin4.db'
SESSION_DB_PATH = '/var/lib/pgadmin4/sessions'
STORAGE_DIR = '/var/lib/pgadmin4/storage'
AZURE_CREDENTIAL_CACHE_DIR = '/var/lib/pgadmin4/azurecredentialcache'
SERVER_MODE = True

Данный код выполняет:
LOG_FILE: Путь до файла логов
SQLITE_PATH: Путь к пользовательским данным в БД SQLite Файл хранится в каталоге /var/lib/pgadmin4/, наши пользовательские данные не подлежат потере после обновления.
SESSION_DB_PATH: Путь, указывающий к каталогу, хранящему информацию о подключенных сеансах.
STORAGE_DIR: Путь к каталогу, сохраняющему информацию о хранилище.
SERVER_MODE: Режим сервера – True (Истина).

Для выхода с сохранением нажмём ESC, введём :wq! и нажмём ENTER.

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

Установим открытый ключ:

curl -fsS https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo gpg --dearmor -o /usr/share/keyrings/packages-pgadmin-org.gpg

Для продолжения нужно добавить файл конфигурации. Отправим в терминал следующую команду:

sudo sh -c 'echo "deb [signed-by=/usr/share/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'

Установим pgadmin4:

sudo apt install pgadmin4

Запустим конфигурацию:

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

Далее напишем наши данные (емеил, парольную фразу) для будущего входа web-интерфейс pgAdmin:

Теперь pgAdmin доступен в нашей сети

Этап 3 – Развертывание Gunicorn и Nginx

За работу pgAdmin в качестве web-приложения отвечает Gunicorn. В данный момент к pgAdmin есть возможность подключения из локальных компьютеров. Для получения доступа за пределами нашей сети конфигурирует web-сервер Nginx.

Перейдем в корневую директорию, затем нужно перейти по адресу:

cd /etc/nginx/sites-available/

Внесём изменения в файл /test_domain.ru:

server {
listen 80; #Прослушивание 80 порта IPv4
listen [::]:80; #В большинстве случаев при запуске nginx -t выдаёт ошибку. Ссылается на эту строку, при получении ошибки закомментируйте строку
server_name test_domain.ru www.test_domain.ru; #Название сервера
location / { #Путь
proxy_pass http://unix:/tmp/pgadmin4.sock; #обратный прокси
include proxy_params;
}
}

Запустим виртуальную среду Python. Подключим обратный прокси, использовав несколько команд:

source /test/test_env/bin/activate
gunicorn --bind unix:/tmp/pgadmin4.sock --workers=1 --threads=25 --chdir /root/test/test_env/lib/python3.10/site-packages/pgadmin4 pgAdmin4:app
#Выход
[2022-11-04 21:55:37 +0000] [6338] [INFO] Starting gunicorn 20.1.0
[2022-11-04 21:55:37 +0000] [6338] [INFO] Listening at: unix:/tmp/pgadmin4.sock (6338)
[2022-11-04 21:55:37 +0000] [6338] [INFO] Using worker: gthread
[2022-11-04 21:55:37 +0000] [6339] [INFO] Booting worker with pid: 6339

Команда должна выполняться из виртуального пространства test_env и в ответ на выходе не должны быть ошибки связанные с библиотеками.

Этап 4 – Доступ к pgAdmin 4

На машине из нашей сети запустим web-браузер и в адресной строке укажем адрес хоста, на котором развёрнут pgAdmin http://server_ip/pgadmin4.

В текущем примере используется адрес http://10.0.0.1/pgadmin4

При авторизации укажем почту, пароль – использованные при создании конфигурации (Конец “Этап 2 – Конфигурирование pgAdmin 4”).

Выполним авторизацию нажав на кнопку Login (Войти) (см. рисунок 1)

Рисунок 1 – Доступ к pgAdmin

При успешной авторизации, мы увидим главную страницу web-интерфейса pgAdmin (см. рисунок 2).

Рисунок 2 – Панель управления pgAdmin

Теперь внесём правки в конфигурационный файл, используемый для соединения с БД PostgreSQL.

Этап 5 – Конфигурация пользователя PostgreSQL

Нажатием CTRL + C выполним остановку процесса, тем самым, перейдем обратно в консоль.

Выполнив Пункт “Процесс установки” из инструкции. Продолжим
настройку.

Войдем в учетную запись “встроенного” администратора:

su postgres
psql postgres

Создадим юзера и саму БД с помощью команд:

CREATE ROLE <логин> LOGIN PASSWORD '<пароль>';

CREATE DATABASE <база_данных> WITH OWNER = <логин>;

Например:

CREATE ROLE serverspace LOGIN PASSWORD 'ububntu';
CREATE DATABASE serverspacedb WITH OWNER = serverspace;

В терминале базы данных добавим пароль для пользователя serverspace. При развёртывании СУБД, каждому пользователю необходимо создать сложные пароли и указать привилегии пользователя:

ALTER USER serverspace PASSWORD 'p@55w0rd';

Выполним выход написав \q.

Зайдем через браузер в консоль pgAdmin 4. Добавим новый сервер с помощью инструмента Add New Server (см. рисунок 3).

Рисунок 3 – Добавление нового сервера

Введём название (см. рисунок 4).

Рисунок 4 – Название сервера

Перейдём во вкладку Connection, заполним поля Hostname/address (Название хоста/адрес) – localhost, Maintenance database (Обслуживающая база данных) – serverspacedb, Username (Имя пользователя) – serverspace, Password – указанный ранее в командной строке. После заполнения полей нажмём Save (см. рисунок 5).
Внимание! На рисунках отображается название базы данных:serverspace.

Рисунок 5 – Заполнение полей для подключения к базе данных

Правильность подключения проверяется во вкладке Browser (Браузер). Во вкладке Servers появятся символы (1), уведомляющие о подключении нового сервера. В развёрнутом виде получаем информацию о Database (Базы данных), Login/Group Roles (Роли/Группа входа), Tablespace (Табличные пространства). В разделе Базы данных хранится две базы данных postgres (стандартная база данных установленная стандартно в PostgreSQL) и serverspacedb созданная ранее. (см. рисунок 6).

Рисунок 6 – Добавленный сервер с таблицами PostgreSQL

Добавили сервер с помощью несколько кликов по мыши.

Этап 6 – Создание таблицы с помощью Web-Интерфейса.

Чтобы создать таблицу в базе данных, необходимо:

  1. Выбираем Schemas в базе serverspacedb, затем Tables;
  2. Выбираем Create -> Table. (см. рисунок 7)

Рисунок 7 – Создание таблицы

Откроется окно Create table, во вкладке General. Далее внесём название таблицы в поле Name (Название). Owner (Владелец) и Schemas (Схемы) заполняются автоматически. При необходимости можно внести изменения на своё усмотрение (см. рисунок 8).

Рисунок 8 – Наименование таблицы

Перейдём во вкладку Columns, создание столбца происходит следующим образом: Нажимаем кнопку «+» указываем Name (Название), Data type (Тип данных) и значение Not NULL (Не пустое), чтобы все столбцы не были пустыми и выберем Primary key (Первичный ключ) для указания первичного ключа и нажимаем Save (Сохранить) (см. рисунок 9).

Рисунок 9 – Создание столбцов в таблице

Появилась настроенная БД и наша таблица со столбцами.

Приступим к заполнению таблицы с помощью SQL. вызываем контекстное меню правой кнопкой мыши по нашей таблице и нажимаем на Scripts -> CREATE Script (Создать скрипт) (см. рисунок 10).

Рисунок 10 – Создание скрипта

Добавим скрипт для заполнения столбцов, также можно добавить больше информации разделяя запятыми (см. рисунок 11).

/*Добавление информации в таблицу*/
INSERT INTO public."test_table"(
/*Название строк*/
test_col1,
test_col2,
test_col3)
/*Значения*/
VALUES
/*Информация о строках*/
('Test1', 10, 'True'),
('Test2', 20, 'False'),
('Test3', 30, 'True');

Рисунок 11 – Добавление скрипта

Запускаем скрипт с помощью кнопки (▶) и закрываем окно с редактором.

Просмотр внесённых изменений в таблице выполняется следующим образом:

Рисунок 12 – Просмотр всех строк

В открывшемся окне с результатами выполненного запроса, заполненные данные хранятся в разделе Data Output. (см. рисунок 13)

Рисунок 13 – Записанные данные

Использованный метод считается одним из используемых для создания таблицы и заполнения.

Однако, следующий пример использует только SQL запрос:

Рисунок 14 – Открытие инструмента запросов

Создадим таблицу и столбцы. Заполним созданные поля типом данных, и информацией со значениями «15, ‘test_table2’, ‘True’» (см. рисунок 15):

/*Создание таблицы с названием test_table2*/
Create table test_table2 (
/*Атрибуты таблицы*/
test_table1 int,
test_table2 text,
test_table3 boolean );
/*Скрипт для заполнения таблицы*/
insert into test_table2 (
/*Ввод данных в таблицы и в их атрибуты*/
test_table1,
test_table2,
test_table3 )
/*Заполняемые значения атрибутов*/
values (15, 'test_table2', 'True');

Рисунок 15 – Создание и заполнение таблицы

При проверке новой таблицы мы не обнаружим новую таблицу, пока не обновим базу данных serverspacedb.

Нажимаем на базу данных правой кнопкой мыши и выбираем пункт Refresh (Обновить) (см. рисунок 16).

Рисунок 16 – Обновление базы данных

Теперь посмотрим результаты запроса нашего кода. Данные заполнены в соответствии с написанным запросом (см. рисунок 17)

Рисунок 17 – Результат выполненного запроса

У нас получились две таблицы: первая – с использованием визуального интерфейса, вторая – используя SQL

Выводы

pgAdmin уникальный инструмент для работы с базой данных в режиме web-интерфейса.
Как работать:

  1. Установить Ubuntu Server 22.04;
  2. Настройка ufw для порта 80/tcp;
  3. Установите Nginx, Python, PostgreSQL;
  4. Разверните виртуальную среду на Python;
  5. Установите библиотеку Gunicorn;
  6. Настройте обратный прокси в Nginx;
  7. Сконфигурируйте Gunicorn и Nginx для их совместной работы;
  8. Запустите скрипт для установки виртуального сервера pgAdmin;
  9. Запустите сервер;
  10. Перейдите в браузере по адресу сервера локального хоста;
  11. Добавьте сервер, укажите данные для PostgreSQL;
  12. Создайте таблицу, заполняйте данными и редактируйте.