Полное руководство по установке и начальной настройке PostgreSQL: пошаговая инструкция | AdminWiki
Timeweb Cloud — сервера, Kubernetes, S3, Terraform. Лучшие цены IaaS.
Попробовать

Полное руководство по установке и начальной настройке PostgreSQL: пошаговая инструкция

24 апреля 2026 6 мин. чтения

Подготовка к установке PostgreSQL: выбор метода и проверка системы

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

Минимальные требования к системе: 2 ГБ оперативной памяти (рекомендуется от 4 ГБ), 1 ГБ свободного места на диске для установки, права суперпользователя (root) или возможность использовать sudo. Для production-среды объем RAM - основной ресурс, влияющий на производительность. Выбирайте последнюю стабильную версию PostgreSQL (на момент написания - 17.x). LTS-релизы выходят раз в год и поддерживаются 5 лет.

Проверьте версию ОС и наличие пакетного менеджера. Для Linux выполните:

cat /etc/os-release
df -h /

Убедитесь, что порт 5432 не занят другим процессом:

sudo lsof -i :5432

Пошаговая установка PostgreSQL на Linux, Windows и macOS

Установка PostgreSQL на Linux (Ubuntu/Debian, CentOS/RHEL)

Для Ubuntu/Debian (20.04 и новее) используйте стандартный репозиторий:

sudo apt update
sudo apt install postgresql postgresql-contrib -y
sudo systemctl enable postgresql
sudo systemctl start postgresql
sudo systemctl status postgresql

Для CentOS/RHEL 8+ сначала добавьте репозиторий PostgreSQL:

sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo dnf -qy module disable postgresql
sudo dnf install -y postgresql17-server postgresql17-contrib
sudo /usr/pgsql-17/bin/postgresql-17-setup initdb
sudo systemctl enable postgresql-17
sudo systemctl start postgresql-17

После установки проверьте, что служба активна. Если вы используете Docker, ознакомьтесь с нашим руководством по быстрому запуску PostgreSQL в контейнерах.

Установка PostgreSQL на Windows

Скачайте установщик с официального сайта postgresql.org (раздел Downloads). Запустите мастер установки:

  1. Выберите компоненты: сервер PostgreSQL, pgAdmin 4, Stack Builder (для расширений).
  2. Укажите пароль для суперпользователя postgres. Запомните его.
  3. Порт по умолчанию - 5432. Оставьте, если не конфликтует.
  4. Локаль - выберите ru_RU.UTF-8 или en_US.UTF-8.

После завершения установки служба PostgreSQL запустится автоматически. Проверить статус можно через services.msc (ищите службу postgresql-x64-17).

Установка PostgreSQL на macOS

Самый удобный способ - через Homebrew:

brew install postgresql@17
brew services start postgresql@17

Альтернатива - скачать .dmg-дистрибутив с postgresql.org. Установка аналогична Windows: мастер, выбор компонентов, пароль.

Сборка PostgreSQL из исходных кодов (для всех ОС)

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

# Debian/Ubuntu
sudo apt install build-essential libreadline-dev zlib1g-dev flex bison
# CentOS/RHEL
sudo dnf groupinstall "Development Tools"
sudo dnf install readline-devel zlib-devel flex bison

Скачайте исходный код с официального сайта, распакуйте и выполните:

./configure --prefix=/usr/local/pgsql
make
sudo make install
sudo adduser postgres
sudo mkdir /usr/local/pgsql/data
sudo chown postgres:postgres /usr/local/pgsql/data
sudo -u postgres /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data

Запустите сервер:

sudo -u postgres /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start

Первоначальная настройка безопасности и доступа

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

sudo -u postgres psql

Измените пароль суперпользователя:

ALTER USER postgres WITH PASSWORD 'strong_password';

Настройка pg_hba.conf: управление доступом к серверу

Файл pg_hba.conf определяет, кто и как может подключаться к серверу. Он находится в каталоге данных (обычно /etc/postgresql/17/main/ на Linux, C:\Program Files\PostgreSQL\17\data\ на Windows).

Структура строки:

# TYPE  DATABASE  USER  ADDRESS  METHOD
local   all       all            peer
host    all       all   127.0.0.1/32  scram-sha-256

Ключевые методы аутентификации:

  • trust - без пароля. Используйте только для локальной разработки.
  • md5 - устарел, но совместим со старыми клиентами.
  • scram-sha-256 - рекомендуемый для production.

Пример безопасной конфигурации для production:

# Локальное подключение - через сокет, только postgres
local   all             postgres                                peer
local   all             all                                     scram-sha-256
# Сеть - только с доверенных IP
host    all             all             192.168.1.0/24          scram-sha-256
host    all             all             10.0.0.0/8              scram-sha-256
# Запретить все остальные подключения
host    all             all             0.0.0.0/0               reject

После изменения файла перечитайте конфигурацию:

sudo -u postgres pg_ctl reload

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

Создание первого пользователя (роли) и базы данных

Не работайте под суперпользователем postgres в повседневных задачах. Создайте отдельную роль и базу данных:

CREATE USER app_user WITH PASSWORD 'secure_password';
CREATE DATABASE app_db OWNER app_user;
GRANT ALL PRIVILEGES ON DATABASE app_db TO app_user;

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

psql -U app_user -d app_db -h localhost

Базовая настройка производительности (postgresql.conf)

Файл postgresql.conf - основной инструмент тюнинга. Начните с параметров памяти и дисковых операций.

Настройка параметров памяти (RAM)

Расчеты основаны на общем объеме оперативной памяти сервера. Предположим, у вас 16 ГБ RAM:

  • shared_buffers - 25% от RAM (4 ГБ). Для Windows - не более 1 ГБ из-за особенностей менеджера памяти.
  • work_mem - на каждое соединение. Формула: (RAM - shared_buffers) / (max_connections * 16). При 100 соединениях: (12 ГБ * 1024) / (100 * 16) = 7,8 МБ. Установите 8 МБ.
  • maintenance_work_mem - для VACUUM, CREATE INDEX. Установите 1 ГБ.

Пример блока конфигурации:

shared_buffers = 4GB
work_mem = 8MB
maintenance_work_mem = 1GB
effective_cache_size = 12GB

Не завышайте shared_buffers - это приведет к перегрузке кэша ОС.

Настройка для разных типов накопителей (SSD и HDD)

Для HDD-массивов увеличьте random_page_cost до 4.0 (по умолчанию 1.0 для SSD). Это заставит планировщик запросов избегать случайных чтений:

random_page_cost = 4.0
effective_io_concurrency = 2

Для SSD снизьте random_page_cost до 1.1 и увеличьте effective_io_concurrency до 200:

random_page_cost = 1.1
effective_io_concurrency = 200

Параметр checkpoint_completion_target для HDD установите 0.9 (растягивает запись чекпоинтов), для SSD - 0.7.

Полный список параметров и их влияние на производительность описан в официальной документации PostgreSQL. Для быстрой настройки используйте утилиту pg_config или онлайн-калькуляторы.

Проверка установки и решение типовых проблем

После настройки выполните проверку:

sudo -u postgres psql -c "SELECT version();"
psql -U app_user -d app_db -c "\l"

Частые ошибки и их решения:

  • could not connect to server: Connection refused - служба не запущена. Проверьте статус: systemctl status postgresql. Запустите: systemctl start postgresql.
  • FATAL: no pg_hba.conf entry - в файле доступа нет правила для вашего IP. Добавьте строку с методом scram-sha-256.
  • FATAL: password authentication failed - неверный пароль. Сбросьте через ALTER USER.
  • could not open directory - проблемы с правами на каталог данных. Владелец должен быть postgres.

Логи PostgreSQL - первый помощник в диагностике. На Linux они находятся в /var/log/postgresql/postgresql-17-main.log. Просмотрите последние записи:

sudo tail -100 /var/log/postgresql/postgresql-17-main.log

Дальнейшие шаги и рекомендации для рабочих сред

Базовая установка и настройка - только начало. Для production-среды обязательно настройте:

  • Резервное копирование: используйте pg_dump для логических бэкапов и pg_basebackup для физических. Подробнее - в статье Пошаговые стратегии резервного копирования и восстановления PostgreSQL.
  • Мониторинг: включите сбор статистики через pg_stat_statements и настройте оповещения.
  • Пулер соединений: для высоких нагрузок установите PgBouncer или Pgpool-II.
  • Обновления: регулярно устанавливайте минорные обновления для закрытия уязвимостей.

Если вы используете PostgreSQL в связке с другими сервисами, изучите наше руководство по развертыванию Nextcloud на TrueNAS SCALE, где PostgreSQL выступает в роли бэкенда.

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