Установка PostgreSQL на сервер: что проверить до старта
За 20–30 минут вы установите PostgreSQL 15 на Debian 12, проверите службу и создадите отдельные роль и базу для приложения. До запуска важно решить, где будет подключаться приложение: от этого зависит, нужно ли вообще открывать сетевой доступ к серверу.

За 20–30 минут вы установите PostgreSQL 15 на сервер с Debian 12, проверите, что служба запущена, и создадите отдельные роль и базу данных для приложения. До начала решите главное: приложение будет работать на том же сервере или подключаться по сети. Для первого варианта открывать порт базы данных наружу не нужно.
Что подготовить до установки
Инструкция рассчитана на Debian 12 и пакет PostgreSQL из стандартного репозитория Debian. В этой версии ОС он устанавливает PostgreSQL 15; номер минорного обновления может меняться. Если у вас Ubuntu, другая версия Debian или уже настроен сторонний репозиторий PostgreSQL, сначала проверьте доступную версию пакета: состав репозиториев и версия сервера могут отличаться.
| Что проверить | Что понадобится | Как проверить |
|---|---|---|
| Операционная система | Debian 12 | cat /etc/os-release |
| Доступ к серверу | SSH и учётная запись с правами sudo | Команда sudo -v должна пройти без ошибки |
| Место на диске | Запас для пакетов, базы и будущих резервных копий | Посмотрите свободное место командой df -h |
| Схема подключения | Локально на сервере или по приватной сети | Запишите, откуда приложение будет обращаться к базе |
До установки также решите, кто будет обслуживать PostgreSQL и где будут храниться резервные копии. База на том же диске, что и система, не переживёт потерю этого диска без отдельной копии.
Не открывайте порт PostgreSQL в интернет «на всякий случай». Сначала установите сервер и проверьте локальное подключение; удалённый доступ настраивают отдельно — вместе с правилами сети и аутентификацией.
Установка и первая проверка
- Проверьте репозиторий. В терминале сервера выполните команды:
В выводе найдите строкуsudo apt update apt-cache policy postgresqlCandidate. На чистом Debian 12 пакет должен вести к PostgreSQL 15. Если указана другая основная версия или кандидата нет, остановитесь и проверьте репозитории, прежде чем продолжать. Это поможет не поставить версию, отличающуюся от той, под которую готовили приложение. - Установите сервер.
Подтвердите установку, если система попросит. Пакетsudo apt install postgresql postgresql-contribpostgresql-contribдобавляет дополнительные расширения; для базового запуска серверу он не обязателен. Проверка: установка завершается без сообщения об ошибке. - Включите службу и проверьте готовность.
Ожидаемый результат второй команды — сообщение о том, что сервер принимает подключения. Затем посмотрите версию клиента командойsudo systemctl enable --now postgresql pg_isreadypsql --version. Она не всегда доказывает версию работающего сервера, поэтому выполните и проверку ниже. - Уточните версию сервера и основные настройки. Откройте локальную консоль администратора:
В приглашении PostgreSQL выполните:sudo -u postgres psql
В ответах проверьте версию, порт и адрес прослушивания. На стандартной установке порт обычно равен 5432, а подключение ограничено локальным сервером. Если вывод отличается, не меняйте параметры наугад: сначала выясните, кто и для чего уже настроил сервер. Проверка успешна, если запросы завершились и вы получили строку версии и пути к файлам конфигурации.SELECT version(); SHOW port; SHOW listen_addresses; SHOW config_file; SHOW hba_file; \q - Создайте отдельную роль и базу приложения. Не используйте встроенную административную роль
postgresв настройках сайта или сервиса. Сначала откройте консоль, затем вводите команды:sudo -u postgres psql
После командыCREATE ROLE app_user LOGIN; \password app_user CREATE DATABASE app_db OWNER app_user; \q\passwordконсоль дважды запросит пароль и не покажет введённые символы. Выберите уникальный пароль и сохраните его в менеджере секретов приложения, а не в репозитории с кодом. Проверка: в консоли администратора команда\duпоказывает рольapp_user, а\l— базуapp_db. - Проверьте вход от имени приложения.
Введите пароль, когда появится запрос, затем выполните:psql -h 127.0.0.1 -U app_user -d app_db -W
В результате должны отображатьсяSELECT current_user, current_database(); \qapp_userиapp_db. Подключение через127.0.0.1проверяет вход по TCP с паролем; это полезнее, чем проверка только через локальный системный сокет.
Что означает кластер PostgreSQL
В терминологии PostgreSQL кластер¹ — это набор баз данных, которым управляет один экземпляр сервера, а не обязательно группа машин. При установке пакет обычно создаёт и запускает кластер автоматически. Поэтому отдельная ручная команда создания кластера на типовом Debian-сервере обычно не нужна.
¹ Кластер PostgreSQL — каталог данных и связанных с ним баз, ролей и настроек одного экземпляра сервера. Не путайте его с кластером серверов для высокой доступности: это другая архитектура.
Если проверка не прошла
sudo: command not found. В системе нет утилиты sudo или текущая учётная запись не подходит для этой схемы доступа. Подключитесь под администратором сервера и используйте штатный способ повышения прав, принятый у вашего хостера.pg_isreadyсообщает, что сервер не принимает подключения. Проверьте состояние командойsudo systemctl status postgresql, а журнал —sudo journalctl -u postgresql -n 50 --no-pager. Ищите конкретную причину запуска: нехватку диска, ошибку конфигурации или остановленный кластер.psql: error: connection ... failed: FATAL: password authentication failed. Проверьте имя базы и роли, раскладку клавиатуры и введённый пароль. Если пароль потерян, задайте новый через локальную консоль администратора командой\password app_user, а затем обновите секрет в приложении.FATAL: database app_db does not exist. Проверьте, что база создана именно под таким именем: в консоли администратора выполните\l. Имена, набранные с кавычками и разным регистром, PostgreSQL обрабатывает иначе, поэтому для первого запуска используйте простые имена в нижнем регистре.- Сервер не виден с другого компьютера. Это ожидаемо, если он слушает только локальные подключения или сетевой доступ закрыт. Не исправляйте проблему открытием порта для всех адресов: сначала настройте приватный маршрут, разрешённые адреса клиентов, правила доступа в PostgreSQL и firewall.
Что делать дальше
Если приложение и база работают на одном сервере, начните с подключения к 127.0.0.1 и не открывайте порт 5432 в публичном firewall. Если приложение находится отдельно, настройте доступ только из известной приватной сети и ограничьте права роли приложения необходимыми операциями. Параметры listen_addresses, правила в файле pg_hba.conf и правила firewall должны соответствовать одной и той же схеме доступа.
До запуска приложения в проде настройте регулярные резервные копии и проверьте восстановление на отдельной среде. Следующий практический шаг — измерить свободное место, размер базы и время выполнения типовых запросов. Изменения производительности и инвалидация резервных копий — отдельные темы; здесь важнее убедиться, что установка доступна приложению и не выставлена в интернет без необходимости.
Проверка рекламы на риски: Что в макете вызовет вопросы ФАС: превосходные степени, сравнения, обещания результата, маркировка.
Спросить за 40 ₽Источники: PostgreSQL: загрузка и установка для Debian, Документация PostgreSQL 15
Частые вопросы
Можно ли установить PostgreSQL на Ubuntu по этой инструкции?
Нужно ли открывать порт 5432 после установки?
Почему приложение не может войти, хотя psql запускается?
Опасно ли пропустить установку postgresql-contrib?
Что делать, если у меня другая версия Debian или PostgreSQL?
Нужно ли сразу настраивать резервное копирование?
Материал носит информационный характер и подготовлен редакцией «Агентуры». Он не является офертой, рекламой или индивидуальной консультацией. Упомянутые продукты, компании и торговые знаки принадлежат их правообладателям. Перед принятием решений, влекущих юридические или финансовые последствия, обратитесь к профильному специалисту.