Установка PostgreSQL 16 на Ubuntu 22.04: Пошаговая инструкция для DevOps | AdminWiki

Как установить PostgreSQL 16 на Ubuntu 22.04: Полное руководство для DevOps

17 декабря 2025 5 мин. чтения #dbeaver #devops #linux #postgresql #postgresql 16 #ubuntu #базы данных #настройка PostgreSQL

Введение: Зачем тебе PostgreSQL 16?

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

Важно: Ubuntu 22.04 LTS (Jammy Jellyfish) — стабильная платформа с долгосрочной поддержкой, идеальная для продакшен-окружения.

Подготовка системы

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

bash
# Обновляем список пакетов
sudo apt update && sudo apt upgrade -y

# Устанавливаем базовые утилиты
sudo apt install -y wget curl gnupg software-properties-common

Добавление официального репозитория PostgreSQL

Не используй стандартный репозиторий Ubuntu — там старая версия. Мы возьмем свежий пакет прямо от разработчиков PostgreSQL.

bash
# Импортируем GPG-ключ
curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | \
sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg

# Добавляем репозиторий
echo "deb [arch=amd64 signed-by=/etc/apt/trusted.gpg.d/postgresql.gpg] https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" | \
sudo tee /etc/apt/sources.list.d/pgdg.list

Установка PostgreSQL 16

Теперь установим сам PostgreSQL и полезные дополнительные модули.

bash
# Обновляем информацию о пакетах из нового репозитория
sudo apt update

# Устанавливаем PostgreSQL 16 и основные расширения
sudo apt install -y postgresql-16 postgresql-client-16 \
postgresql-contrib-16 postgresql-16-postgis-3
Внимание: Пакет postgresql-contrib содержит дополнительные расширения (например, pg_stat_statements для анализа запросов), которые часто требуются в продакшене.

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

Убедимся, что служба запустилась и работает корректно.

bash
# Проверяем статус службы
sudo systemctl status postgresql@16-main --no-pager -l

# Альтернативная проверка
pg_isready -h localhost -p 5432

Базовая настройка и безопасность

Настройка пароля для пользователя postgres

По умолчанию PostgreSQL использует peer-аутентификацию. Давай настроим пароль для удаленного подключения.

bash
# Переключаемся на системного пользователя postgres
sudo -u postgres psql

Внутри psql выполни следующие команды:

sql
-- Меняем пароль для пользователя postgres
ALTER USER postgres PASSWORD 'Ваш_Надежный_Пароль_123!';

-- Создаем тестовую базу и пользователя для примера
CREATE DATABASE testdb;
CREATE USER devuser WITH ENCRYPTED PASSWORD 'Dev_Password_456!';
GRANT ALL PRIVILEGES ON DATABASE testdb TO devuser;

-- Выходим
\q

Настройка аутентификации (pg_hba.conf)

Это критически важный файл для безопасности. Отредактируй его:

bash
sudo nano /etc/postgresql/16/main/pg_hba.conf

Найди строки в конце файла и измени метод аутентификации для локальных подключений с `peer` на `md5`:

config
# Было:
# local   all             all                                     peer

# Стало:
local   all             all                                     md5

Для разрешения подключений из сети (с определенного IP) добавь:

config
# Разрешить подключения с определенной подсети
host    all             all             192.168.1.0/24          md5

Настройка доступа (postgresql.conf)

Разрешим слушать подключения не только с localhost:

bash
sudo nano /etc/postgresql/16/main/postgresql.conf

Найди и раскомментируй/измени строку:

config
listen_addresses = '*'          # слушать все интерфейсы

После изменений перезапусти PostgreSQL:

bash
sudo systemctl restart postgresql@16-main
sudo systemctl enable postgresql@16-main

Подключение из DBeaver

DBeaver — популярный GUI-клиент для работы с базами данных. Настроим подключение.

  1. Открой DBeaver и создай новое подключение (Database → New Database Connection)
  2. Выбери PostgreSQL из списка
  3. Заполни параметры:
    • Host: IP-адрес твоего сервера
    • Port: 5432
    • Database: testdb (или postgres)
    • Username: devuser (или postgres)
    • Password: пароль, который ты задал
  4. Нажми "Test Connection" — должно появиться успешное сообщение
Совет: Если подключение не работает, проверь firewall: sudo ufw allow 5432/tcp

Основные команды для управления

Вот шпаргалка по часто используемым командам:

Задача Команда
Запуск/остановка sudo systemctl start/stop/restart postgresql@16-main
Проверка логов sudo journalctl -u postgresql@16-main -f
Подключение через psql psql -h localhost -U postgres -d postgres
Резервное копирование pg_dump -U postgres dbname > backup.sql

Оптимизация для продакшена

Базовые настройки PostgreSQL не оптимальны для высоких нагрузок. Вот что нужно настроить в `postgresql.conf`:

config
# Память (правило: 25% от RAM для shared_buffers)
shared_buffers = 4GB
work_mem = 32MB

# Производительность
max_connections = 100
maintenance_work_mem = 1GB

# Журналирование (WAL)
wal_level = replica
max_wal_size = 4GB

После изменений не забудь перезагрузить службу.

Частые проблемы и решения

Ошибка: "Connection refused"

Решение: Проверь, что PostgreSQL слушает нужный интерфейс (`listen_addresses`) и firewall разрешает порт 5432.

Ошибка аутентификации

Решение: Проверь `pg_hba.conf` — правильный ли метод аутентификации указан для твоего типа подключения.

Нехватка памяти

Решение: Увеличь `shared_buffers` и `work_mem` в конфигурации, но не выделяй более 25% ОЗУ.

Заключение

Ты успешно установил и настроил PostgreSQL 16 на Ubuntu 22.04. Теперь у тебя есть:

  1. Работающий кластер PostgreSQL 16
  2. Настроенная безопасность (пароли, pg_hba.conf)
  3. Возможность подключения из DBeaver
  4. Базовую оптимизацию для продакшена

Следующие шаги: настройка репликации, автоматическое резервное копирование и мониторинг с помощью pgAdmin или Prometheus. Но это уже тема для отдельного руководства!

Поделиться:
Сохранить гайд? В закладки браузера