Как установить и настроить PostgreSQL в Ubuntu 22.04  

Как установить и настроить PostgreSQL в Ubuntu 22.04  

Мы подготовили подробное руководство по установке и настройке PostgreSQL на Ubuntu 22.04.

Docker лого

В статье — три варианта установки: из стандартного репозитория, из официального репозитория разработчиков и через Docker. Вы узнаете, как включить современную аутентификацию, создать пользователя и базу данных, подключить расширения и настроить сетевой доступ.

PostgreSQL лого

Если вы работаете с данными — будь то высоконагруженный веб-сервис, аналитическая платформа или даже геоинформационная система, — PostgreSQL станет отличным выбором. Эта СУБД не просто хранит информацию: она гарантирует целостность транзакций даже при миллионах запросов в минуту, поддерживает сложные типы данных (например, JSONB или геометрические объекты через PostGIS) и её можно настраивать под любые, даже самые необычные, сценарии. А ещё PostgreSQL распространяется бесплатно и имеет открытый исходный код, что делает её фаворитом среди разработчиков, DevOps-инженеров и администраторов баз данных.

Разберём, как установить PostgreSQL на Ubuntu 22.04, в том числе на VPS, настроить параметры для оптимизации производительности и избежать типичных ошибок.

Вы узнаете не только как запустить сервер, но и как:

  • Настроить аутентификацию через scram-sha-256 вместо устаревшего md5.
  • Разрешить удалённые подключения без риска для безопасности.
  • Подключить расширения.
  • Оптимизировать работу с индексами и кешированием под вашу нагрузку.

Аренда VPS/VDS от 219 руб/месяц

Преимущества VPS в AdminVPS:

✓ Бесплатное администрирование

✓ Только быстрые NVMe-диски

✓ Защита от DDoS-атак

✓ Быстрая техподдержка

Аренда VPS/VDS виртуального сервера от AdminVPS — это прозрачная и честная услуга с доступной ценой

Установка PostgreSQL на Ubuntu 22.04: все способы и подводные камни

Ubuntu лого

Установить PostgreSQL на Ubuntu можно несколькими методами, и выбор зависит от ваших задач. Разберём три ключевых подхода: стандартный репозиторий Ubuntu (просто, но версия может быть не самой свежей), официальный репозиторий PostgreSQL (актуальные версии) и Docker (для изоляции окружения).

Для каждого варианта — свой способ установки.

Установка из стандартного репозитория Ubuntu (простой способ)

Если вам не нужна последняя версия PostgreSQL и важна стабильность:

sudo apt update && sudo apt upgrade -y 
sudo apt install postgresql postgresql-contrib -y  

Что происходит при выполнении этих команд:

  • sudo apt update — обновляет локальный список пакетов, чтобы система «видела» актуальные версии ПО;
  • sudo apt upgrade -y — обновляет уже установленные пакеты (-y автоматически подтверждает действие, чтобы не ждать ввода);
  • postgresql — основной пакет СУБД;
  • postgresql-contrib — дополнительные модули (например, pgcrypto для шифрования или uuid-ossp для генерации UUID).

Плюсы такой установки — минимум действий и полная интеграция с системными сервисами. Минус — версия PostgreSQL может быть устаревшей (например, Ubuntu 22.04 по умолчанию предлагает PostgreSQL 14).

Установка из официального репозитория PostgreSQL (актуальные версии)

Для работы с PostgreSQL 16 или 17 (последние LTS-релизы на момент публикации) установите СУБД из репозитория разработчиков.

Шаг 1. Добавление репозитория

sudo sh -c 'echo "deb https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' 
wget -qO- https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo tee /etc/apt/trusted.gpg.d/pgdg.asc 
sudo apt update  

Пояснения:

  • lsb_release -cs — возвращает кодовое имя дистрибутива (например, jammy для Ubuntu 22.04);
  • wget -qO- — загружает ключ репозитория без вывода логов (-q) и передаёт его в stdout (-O-);
  • sudo tee — записывает вывод в файл с правами суперпользователя.

Шаг 2. Установка PostgreSQL

sudo apt install postgresql-16 postgresql-client-16 postgresql-contrib -y  

Что устанавливается:

  • postgresql-16 — сервер PostgreSQL версии 16;
  • postgresql-client-16 — клиентские утилиты (например, psql);
  • postgresql-contrib — дополнительные расширения.

Если вам нужны специфичные модули (например, PostGIS для геоданных), добавьте их отдельно:

sudo apt install postgresql-16-postgis-3  

Установка через Docker (для изолированных сред)

Если вы предпочитаете контейнеры:

docker run --name postgres-16 \ 
  -e POSTGRES_USER=admin \ 
  -e POSTGRES_PASSWORD=Secret123! \ 
  -e POSTGRES_DB=mydb \ 
  -p 5432:5432 \ 
  -v /path/to/data:/var/lib/postgresql/data \ 
  -d postgres:16  

Разбор параметров:

  • --name postgres-16 — имя контейнера (его можно изменить);
  • -e — переменные окружения;
  • POSTGRES_USER — суперпользователь БД;
  • POSTGRES_PASSWORD — его пароль;
  • POSTGRES_DB — база данных, создаваемая при старте;
  • -p 5432:5432 — проброс порта (хост:контейнер);
  • -v /path/to/data:/var/lib/postgresql/data — монтирование тома для сохранения данных;
  • -d — запуск в фоновом режиме (detached).

Плюсы — изоляция от основной системы и лёгкое обновление до новых версий. Минус — требуется настройка резервного копирования тома.

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

Независимо от метода, проверьте статус службы:

sudo systemctl status postgresql  

В выводе ищите Active: active (running) — это значит, что служба работает.

Если статус — inactive, проверьте логи:

sudo journalctl -u postgresql@16-main -xe  

Настройка PostgreSQL: аутентификация, пользователи и оптимизация под нагрузку

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

Создание пользователя и базы данных через psql

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

Подключитесь к серверу под встроенным пользователем postgres:

sudo -u postgres psql  

Так, sudo -u postgres запускает psql от имени postgres, что необходимо для доступа к СУБД.

В консоли PostgreSQL:

CREATE USER myuser WITH PASSWORD 'СложныйПароль!123' VALID UNTIL '2026-01-01'; 
CREATE DATABASE mydb OWNER myuser ENCODING 'UTF8' LC_COLLATE 'ru_RU.UTF-8'; 
\connect mydb  

Что мы сделали:

  • CREATE USER — создаёт пользователя с паролем, который истечёт 1 января 2026 года (VALID UNTIL). Это вынуждает регулярно обновлять пароли;
  • ENCODING 'UTF8' — устанавливает кодировку UTF-8 для корректной работы с русским языком;
  • LC_COLLATE 'ru_RU.UTF-8' — задаёт правила сортировки для русского языка (важно для поиска и индексов).

PostgreSQL 16 и 17 по умолчанию используют аутентификацию scram-sha-256 — более безопасную схему, чем устаревший MD5. Убедитесь, что в пароле есть буквы в разных регистрах, цифры и спецсимволы.

Конфигурационный файл pg_hba.conf: кто, откуда и как может подключаться

Файл pg_hba.conf (Host-Based Authentication) — это «пропускной пункт» вашей СУБД. Находится он в:

 /etc/postgresql/16/main/pg_hba.conf

Версия может отличаться. Откройте его:

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

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

# TYPEDATABASE USER ADDRESS METHOD 
local all postgres peer 
hostssl mydb myuser 192.168.1.0/24  scram-sha-256
Таблица. Настройки доступа

Расшифровка:

  • local — подключение через Unix-сокет;
  • peer — аутентификация через системного пользователя (только для local);
  • hostssl — разрешает только SSL-подключения;
  • 192.168.1.0/24 — диапазон доверенных IP-адресов;
  • scram-sha-256 — обязательное использование современного метода шифрования.

Если ваш сервер в публичной сети, замените 192.168.1.0/24 на конкретные IP или используйте VPN.

Аренда VPS/VDS от ₽449/месяц

✓ Тарифные планы VPS под любые потребности.

✓ Безлимитный трафик на всех тарифах.

✓ Дата-центры в Германии, Нидерландах и других локациях.

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

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

sudo systemctl reload postgresql  

Ошибка в pg_hba.conf приведёт к отказу сервера — всегда проверяйте синтаксис через pg_ctl перед перезагрузкой:

sudo -u postgres pg_ctl -D /var/lib/postgresql/16/main/ reload -t 5

Если в конфигурации есть ошибки — они будут выведены в консоль, изменения не применятся, а PostgreSQL продолжит работать со старыми настройками.

Файл postgresql.conf: оптимизируем СУБД под нагрузку

Основной конфигурационный файл находится в /etc/postgresql/16/main/postgresql.conf. Откройте его и настройте ключевые параметры:

listen_addresses = '*'          # Разрешаем удалённые подключения 
shared_buffers = 4GB           # 25% от общей RAM (но не более 8GB) 
work_mem = 64MB                # Оперативная память на каждую операцию сортировки/хеширования 
maintenance_work_mem = 1GB     # Для VACUUM и создания индексов 
effective_cache_size = 12GB    # 50-75% от RAM 
synchronous_commit = off       # Для высоких нагрузок (но есть риск потери данных при сбое!) 
wal_level = replica            # Для репликации и Point-in-Time Recovery  

Пояснения:

  • shared_buffers — кеш данных в RAM. Для сервера с 16GB RAM оптимально 4GB;
  • work_mem — завышение этого параметра приводит к своппингу, поэтому начинайте с 32-64MB. Также чем больше максимальное количество одновременных соединений, тем меньше должен быть work_mem;
  • synchronous_commit = off — ускоряет запись, но при сбое можно потерять данные.

Docker: как не потерять данные при обновлении

После изменения конфига выполните не restart, а reload, чтобы не прерывать активные соединения:

sudo systemctl reload postgresql  

Если вы выбрали установку через Docker, помните, что контейнеры — это временные среды. Все данные хранятся в томах, и их нужно регулярно создавать бекапы.

Создайте резервную копию:

docker exec -t postgres-16 pg_dumpall -U admin > backup.sql  

Для автоматизации добавьте задание в cron

0 3 * * * docker exec -t postgres-16 pg_dumpall -U admin | gzip > /backups/pg_$(date +\%Y-\%m-\%d).sql.gz  

Что это даёт:

  • ежедневный бекап в 3:00;
  • сжатие через gzip для экономии места;
  • имена файлов с датами для удобства.

Главное правило: храните бекапы не на том же сервере, а в облаке (например, Yandex Cloud) или на отдельном физическом носителе.

Заключение

Теперь вы знаете, как установить PostgreSQL на сервер с Ubuntu 22.04 и подготовить СУБД к работе: защитить базы данных современной аутентификацией, оптимизировать параметры под нагрузку, настроить фильтрацию подключений через pg_hba.conf. Но это только начало — также необходимо настроить репликацию, чтобы данные не пропали при сбое, внедрить мониторинг через Prometheus и Grafana для отслеживания медленных запросов и использовать EXPLAIN ANALYZE, чтобы находить «узкие места» в логике приложений.

Не забывайте, что даже идеально настроенная СУБД требует внимания: регулярно обновляйте PostgreSQL, запускайте VACUUM для очистки «мёртвых» строк и анализируйте статистику использования индексов.

Читайте в блоге:

Loading spinner
0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

VPN на VPS-сервере

Узнайте, как создать собственный VPN на VPS-сервере для защиты ваших конфиденциальных данных!

Что будем искать? Например,VPS-сервер

Мы в социальных сетях