Гид по технологиям

Установка PostgreSQL 11 и pgAdmin4 на CentOS 7

• 8 min read • Базы данных • Обновлено 21 Nov 2025
PostgreSQL 11 и pgAdmin4 на CentOS 7
PostgreSQL 11 и pgAdmin4 на CentOS 7

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

Что такое PostgreSQL и pgAdmin4

PostgreSQL — это объектно-реляционная система управления базами данных с открытым исходным кодом, подходящая для больших и нагруженных баз. Кратко: надежная, расширяемая, поддерживает сложные типы данных и транзакции.

pgAdmin4 — веб-ориентированная графическая админка для PostgreSQL. Она написана на Python и JavaScript и может работать как десктопное приложение или как веб-приложение под httpd/Apache.

Краткое определение терминов:

  • ORDBMS: СУБД с возможностями объектно-реляционных расширений (коротко — PostgreSQL).
  • SELinux: Механизм безопасности ядра Linux для контроля привилегий и доступа.

Оглавление

  • Шаг 1 — Установка зависимостей
  • Шаг 2 — Добавление репозитория и установка PostgreSQL 11
  • Шаг 3 — Настройка пользователя postgres и метода аутентификации
  • Шаг 4 — Установка pgAdmin4
  • Шаг 5 — Конфигурация pgAdmin4 и создание администратора
  • Шаг 6 — Настройка SELinux
  • Шаг 7 — Настройка firewalld
  • Шаг 8 — Проверка и добавление сервера в pgAdmin4
  • Критерии приёмки
  • Чек-листы и ролевая ответственность
  • Подсказки, типовые ошибки и устранение неполадок
  • Краткая сводка и ссылки на документацию

Шаг 1 — Установка зависимостей

Сначала обновим пакеты и установим базовые утилиты. Это важно для совместимости репозиториев и инструментов управления.

Выполните:

sudo yum update
sudo yum -y install epel-release

Затем установите пакеты, которые понадобятся дальше: управление политиками SELinux, firewalld, редактор vim и сетевые утилиты.

sudo yum -y install policycoreutils-python firewalld vim net-tools

Эти пакеты обеспечивают:

  • policycoreutils-python — утилиты для управления контекстами SELinux (semanage и др.).
  • firewalld — динамическая конфигурация сетевого брандмауэра.
  • net-tools — ifconfig, netstat и прочие классические утилиты.

Индикатор обновления и установка пакетов

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

Шаг 2 — Добавление репозитория PostgreSQL и установка PostgreSQL 11

Добавьте официальный репозиторий PostgreSQL для CentOS 7 и установите пакеты сервера и утилит.

sudo yum -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo yum repolist

После добавления репозитория установите PostgreSQL 11:

sudo yum -y install postgresql11 postgresql11-server postgresql11-contrib

Инициализируйте кластер базы данных (создание каталога данных, системных таблиц и др.):

/usr/pgsql-11/bin/postgresql-11-setup initdb

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

systemctl start postgresql-11
systemctl enable postgresql-11

Проверка статуса сервиса:

systemctl status postgresql-11

Успешный запуск сервиса PostgreSQL

Примечание: если вы используете SELinux или нестандартные пути для данных, учтите это при инициализации.

Шаг 3 — Настройка пользователя postgres и аутентификации

По умолчанию в PostgreSQL есть системный пользователь postgres. Настроим пароль и переключим метод аутентификации с ident на md5, чтобы разрешить подключение по паролю.

Войдите под пользователем postgres и откройте psql:

su - postgres
psql

Установите пароль для пользователя postgres:

\password postgres
# Введите новый пароль и подтвердите его

Выйдите из psql:

\q
exit

Теперь изменим метод аутентификации в файле pg_hba.conf. Откройте его в редакторе:

cd /var/lib/pgsql/11/data/
vim pg_hba.conf

Найдите строку для локальных подключений 127.0.0.1/32 и замените ident на md5:

host    all             all             127.0.0.1/32            md5

Сохраните и перезапустите сервис:

systemctl restart postgresql-11

Проверка подключения с хоста:

psql -h 127.0.0.1 -U postgres
# Введите пароль, который вы задали

Вход в psql по паролю

Важно: если планируете удалённые подключения, отредактируйте также postgresql.conf параметр listen_addresses и добавьте соответствующие ACL в pg_hba.conf.

Шаг 4 — Установка pgAdmin4

Теперь установим pgAdmin4 из доступных пакетов. Пакет автоматически подтянет зависимости, включая httpd и вспомогательные модули.

sudo yum -y install pgadmin4

Запустите Apache (httpd) и включите автозагрузку:

systemctl start httpd
systemctl enable httpd

pgAdmin4 после установки доступен как веб-приложение под Apache по умолчанию.

Стартовая страница pgAdmin4

Замечание: в некоторых сборках pgAdmin4 пакет называется pgadmin4-web или содержит дополнительные зависимости. Убедитесь, что установлен компонент веб-интерфейса.

Шаг 5 — Конфигурация pgAdmin4 и создание администратора

Подготовим директории для данных и логов, настроим конфигурацию и создадим пользователя-администратора.

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

cd /etc/httpd/conf.d/
mv pgadmin4.conf.sample pgadmin4.conf
mkdir -p /var/log/pgadmin4/
mkdir -p /var/lib/pgadmin4/{sessions,storage}

Отредактируйте основной файл конфигурации pgAdmin4 (местоположение для пакетов Python2 указано в примере пакета):

vim /usr/lib/python2.7/site-packages/pgadmin4-web/config.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'

Создайте администратора pgAdmin4 через скрипт настройки:

python /usr/lib/python2.7/site-packages/pgadmin4-web/setup.py

Следуйте подсказкам, введите email администратора и пароль. После успешного создания перезапустите Apache:

systemctl restart httpd

Измените владельца каталогов на пользователя Apache, чтобы веб-сервер имел права записи:

chown -R apache:apache /var/lib/pgadmin4/
chown -R apache:apache /var/log/pgadmin4/

Создание администратора pgAdmin4

Совет: для production-серверов храните базу данных pgAdmin4 (по умолчанию SQLite) на отдельном разделе или используйте внешний сервер баз данных для большей надежности.

Шаг 6 — Настройка SELinux для pgAdmin4

Если SELinux включен в режиме Enforcing, нужно разрешить Apache подключаться к сети и установить корректные контексты безопасности для каталогов pgAdmin4.

Проверьте статус SELinux:

sestatus

Статус SELinux в режиме Enforcing

Разрешите httpd делать сетевые соединения — это необходимо для подключения к localhost:5432:

setsebool -P httpd_can_network_connect 1

Установите контекст httpd_sys_rw_content_t для директорий данных и логов, чтобы Apache мог читать и писать файлы:

sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/lib/pgadmin4(/.*)?"
sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/log/pgadmin4(/.*)?"

Восстановите контексты:

sudo restorecon -R /var/lib/pgadmin4/
sudo restorecon -R /var/log/pgadmin4/

После этого Apache сможет работать с файлами pgAdmin4 без отключения SELinux.

Применение контекстов SELinux к каталогам pgAdmin4

Важно: semanage может отсутствовать в минимальной установке; в таком случае установите пакет policycoreutils-python, как описано в шаге 1.

Шаг 7 — Настройка firewalld

Разрешим HTTP и HTTPS трафик, чтобы веб-интерфейс pgAdmin4 был доступен извне (если это требуется политикой безопасности).

firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload

Проверьте текущую конфигурацию зон и сервисов при необходимости:

firewall-cmd --list-all

Настройка Firewalld для HTTP и HTTPS

Совет: если доступ должен быть ограничен по IP, используйте правила rich rules или настройку зон вместо глобального открытия портов.

Шаг 8 — Проверка и добавление сервера в pgAdmin4

Откройте браузер и перейдите по адресу сервера и пути /pgadmin4. Например:

http://10.5.5.15/pgadmin4

Страница входа pgAdmin4

Войдите под учетной записью администратора, созданной ранее. После входа вы попадёте на дашборд pgAdmin4.

Дашборд pgAdmin4

Добавление PostgreSQL сервера в pgAdmin4:

  1. Нажмите Add New Server.
  2. На вкладке General укажите имя сервера.
  3. На вкладке Connection укажите Host/IP, порт (по умолчанию 5432), Username и Password.
  4. Нажмите Save.

Подключение сервера в pgAdmin4

После сохранения в левой панели вы увидите дерево вашего сервера и баз данных.

Подключённый сервер в pgAdmin4

Поздравляем — установка и базовая конфигурация PostgreSQL 11 и pgAdmin4 завершены.


Критерии приёмки

  • PostgreSQL 11 корректно установлен и сервис запущен: systemctl status postgresql-11 показывает active.
  • Авторизация по паролю для локальных подключений работает: psql -h 127.0.0.1 -U postgres успешно авторизуется.
  • Apache запущен и обслуживает pgAdmin4: systemctl status httpd -> active.
  • Администратор pgAdmin4 создан и может войти через веб-интерфейс.
  • SELinux настроен (если Enforcing) и директории имеют метку httpd_sys_rw_content_t.
  • Firewall разрешает доступ по HTTP/HTTPS или доступ ограничён в соответствии с политикой безопасности.

Чек-листы и ролевая ответственность

Чек-лист для системного администратора:

  • Обновить систему и установить EPEL.
  • Добавить репозиторий PostgreSQL.
  • Установить и инициализировать PostgreSQL.
  • Настроить пароль postgres и pg_hba.conf.
  • Установить pgAdmin4 и создать администратора.
  • Настроить SELinux и права на директории.
  • Настроить firewalld или сетевые правила.
  • Проверить подключение через pgAdmin4 и psql.

DevOps / инженер по безопасности:

  • Провести аудит открытых портов и политики доступа.
  • Настроить резервное копирование базы данных.
  • Рассмотреть использование TLS для веб-интерфейса pgAdmin4 и для подключений PostgreSQL.

Ролевая ответственность помогает избежать конфликтов при развертывании в продакшене.


Подсказки, типовые ошибки и устранение неполадок

  1. Ошибка: «psql: could not connect to server: Connection refused»
  • Проверьте, что postgresql-11 запущен: systemctl status postgresql-11.
  • Убедитесь, что listen_addresses в postgresql.conf настроен корректно.
  • Для локального подключения используйте 127.0.0.1 и соответствующую строку в pg_hba.conf.
  1. Ошибка входа в pgAdmin4 через браузер
  • Перезапустите httpd и проверьте логи /var/log/httpd/error_log и /var/log/pgadmin4/pgadmin4.log.
  • Убедитесь, что директории принадлежат apache: apache и имеют корректные права.
  • Если SELinux в Enforcing, проверьте контексты и политику: audit2why и audit.log помогут выяснить причину отказа.
  1. Проблемы с semanage отсутствует
  • Установите policycoreutils-python: sudo yum -y install policycoreutils-python.
  1. Если pgAdmin4 показывает пустую страницу
  • Проверьте конфигурацию Apache в /etc/httpd/conf.d/pgadmin4.conf.
  • Убедитесь, что все зависимости Python установлены и соответствующих пакетов достаточно.
  1. Рекомендации по безопасности
  • Включите TLS на Apache и принудите HTTPS для доступа к pgAdmin4.
  • Ограничьте доступ к /pgadmin4 по IP, если необходимо.
  • Регулярно обновляйте пакеты и следите за CVE в PostgreSQL и pgAdmin.

Быстрый cheat sheet команд

  • Обновление и EPEL: sudo yum update && sudo yum -y install epel-release
  • Установка PostgreSQL 11: sudo yum -y install postgresql11 postgresql11-server postgresql11-contrib
  • Инициализация: /usr/pgsql-11/bin/postgresql-11-setup initdb
  • Управление сервисом: systemctl start|stop|restart|status postgresql-11
  • Установка pgAdmin4: sudo yum -y install pgadmin4
  • Запуск Apache: systemctl start httpd && systemctl enable httpd
  • SELinux: setsebool -P httpd_can_network_connect 1
  • Метки контекстов: semanage fcontext -a -t httpd_sys_rw_content_t “/var/lib/pgadmin4(/.*)?”

Альтернативные подходы и масштабирование

  • Если требуется высокая доступность, рассмотрите настройку кластеров с репликацией (Streaming Replication), Patroni или Pacemaker.
  • Для больших нагрузок храните pgAdmin4 в контейнере или на отдельном сервере и используйте внешнюю СУБД для хранения настроек pgAdmin4.
  • Для автоматизированных развертываний применяйте Ansible playbooks или Terraform для инфраструктуры и конфигурации.

Мини-методология развертывания для продакшена:

  1. Подготовка базовой ОС и обновление.
  2. Развёртывание PostgreSQL с резервной схемой (репликация).
  3. Настройка мониторинга и бэкапов.
  4. Развёртывание pgAdmin4 через контролируемый CI/CD с TLS.
  5. Тестирование доступа и политики безопасности.

Краткая сводка

Установить PostgreSQL 11 и pgAdmin4 на CentOS 7 можно за несколько шагов: добавить репозиторий, установить и инициализировать сервер, настроить пароль и аутентификацию, установить pgAdmin4, настроить SELinux и firewall, затем проверить доступ через браузер. Следуйте чек-листу и настройте резервное копирование и TLS для боевых систем.

Справочные ссылки


КОНЕЦ

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро