Установка PostgreSQL на Ubuntu 20.04/22.04 - Полное руководство | AdminWiki

Установка PostgreSQL на Ubuntu: Подробное руководство для разработчиков

18 декабря 2025 10 мин. чтения #devops #postgres на ubuntu #postgresql #ubuntu #базы данных #установка postgres

Представь, что тебе нужно развернуть надежную базу данных для нового проекта. PostgreSQL — один из лучших выборов: мощный, отказоустойчивый и с открытым исходным кодом. В этом руководстве мы вместе пройдем путь от чистой системы Ubuntu до полностью рабочего сервера PostgreSQL с тонкой настройкой.

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

Перед установкой PostgreSQL убедимся, что наша система Ubuntu обновлена. Это важный шаг для обеспечения безопасности и совместимости.

bash
sudo apt update
sudo apt upgrade -y
💡 Совет: Рекомендую выполнять эти команды регулярно, не только перед установкой новых пакетов.

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

Ubuntu включает PostgreSQL в свои репозитории, но версия может быть не самой свежей. Для получения последней версии добавим официальный репозиторий PostgreSQL.

Добавление репозитория PostgreSQL

bash
# Установка зависимостей для работы с репозиториями
sudo apt install -y wget gnupg2

# Импорт GPG ключа репозитория
sudo wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

# Добавление репозитория (для Ubuntu 22.04)
echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" | \
  sudo tee /etc/apt/sources.list.d/pgdg.list

# Обновление списка пакетов
sudo apt update

Установка PostgreSQL

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

bash
# Установка PostgreSQL и дополнительных утилит
sudo apt install -y postgresql postgresql-contrib

# Проверка статуса службы
sudo systemctl status postgresql
📌 Важно: Пакет postgresql-contrib содержит дополнительные модули и утилиты, которые часто бывают полезны.

Первоначальная настройка PostgreSQL

Работа с пользователем postgres

PostgreSQL создает специального системного пользователя postgres. Давай переключимся на него для выполнения административных задач:

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

# Запуск интерактивной оболочки PostgreSQL
psql

# Внутри psql проверяем версию
SELECT version();

# Выход из psql
\q

# Возвращаемся к своему пользователю
exit

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

Для работы с базой данных создадим отдельного пользователя (не используя postgres для приложений):

bash
# Создаем нового пользователя и базу данных
sudo -u postgres createuser --interactive

# Создаем базу данных для нового пользователя
sudo -u postgres createdb myuser

Либо сделаем это через psql:

sql
-- Входим в psql от имени postgres
sudo -u postgres psql

-- Создаем пользователя с паролем
CREATE USER myuser WITH PASSWORD 'strong_password_here';

-- Создаем базу данных и назначаем владельца
CREATE DATABASE mydatabase OWNER myuser;

-- Даем все привилегии пользователю на его базу данных
GRANT ALL PRIVILEGES ON DATABASE mydatabase TO myuser;

-- Выходим
\q
⚠️ Внимание: Никогда не используйте простые пароли в production! Замени 'strong_password_here' на надежный пароль.

Настройка удаленного доступа к PostgreSQL

По умолчанию PostgreSQL слушает только localhost. Для удаленного доступа нужно изменить конфигурацию.

Редактирование postgresql.conf

bash
# Находим основной конфигурационный файл
sudo find / -name "postgresql.conf" 2>/dev/null | head -1

# Обычно он находится здесь (версия может отличаться)
sudo nano /etc/postgresql/15/main/postgresql.conf

Найди и измени следующие параметры:

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

# Порт PostgreSQL (стандартный 5432)
port = 5432

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

bash
# Редактируем файл аутентификации
sudo nano /etc/postgresql/15/main/pg_hba.conf

Добавь в конец файла правила для удаленного доступа:

config
# Разрешить доступ с определенного IP
host    all             all             192.168.1.100/32       md5

# Или разрешить доступ со всей сети
host    all             all             192.168.1.0/24         md5

# Для production лучше ограничить доступ к конкретным базам
host    mydatabase      myuser          0.0.0.0/0              md5
⚠️ Безопасность: В production среде ограничь доступ только необходимым IP-адресам. 0.0.0.0/0 разрешает доступ откуда угодно!

Перезапуск PostgreSQL

bash
# Применяем изменения
sudo systemctl restart postgresql

# Проверяем, что служба работает
sudo systemctl status postgresql

# Проверяем, слушает ли PostgreSQL сетевые подключения
sudo ss -tulpn | grep 5432

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

Действие Команда Описание
Запуск службы sudo systemctl start postgresql Запуск PostgreSQL
Остановка службы sudo systemctl stop postgresql Остановка PostgreSQL
Перезагрузка sudo systemctl restart postgresql Перезапуск с применением конфигов
Статус службы sudo systemctl status postgresql Проверка состояния
Автозагрузка sudo systemctl enable postgresql Запуск при загрузке системы

Полезные команды psql

Вот основные команды для работы в интерактивной оболочке psql:

  • \l — список всех баз данных
  • \c database_name — подключение к базе данных
  • \dt — список таблиц в текущей базе
  • \du — список пользователей и их ролей
  • \d table_name — описание таблицы
  • \q — выход из psql
  • \? — помощь по командам psql
  • \h — помощь по SQL командам

Бэкап и восстановление баз данных

Создание бэкапа

bash
# Бэкап одной базы данных
pg_dump -U username -h localhost database_name > backup.sql

# Бэкап всех баз данных
pg_dumpall -U postgres > all_databases_backup.sql

# Сжатый бэкап
pg_dump -U username database_name | gzip > backup.sql.gz

Восстановление из бэкапа

bash
# Восстановление одной базы
psql -U username -h localhost database_name < backup.sql

# Восстановление всех баз
psql -U postgres -f all_databases_backup.sql

# Восстановление из сжатого бэкапа
gunzip -c backup.sql.gz | psql -U username database_name

Оптимизация производительности PostgreSQL

После установки стоит настроить PostgreSQL для оптимальной производительности. Основные параметры в postgresql.conf:

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

# Кэш для рабочих данных
work_mem = 16MB

# Кэш для поддержания соединений
maintenance_work_mem = 256MB

# Параллельные запросы
max_parallel_workers_per_gather = 2
max_worker_processes = 8

# Автовакуум (очень важно!)
autovacuum = on
log_autovacuum_min_duration = 0
💡 Производительность: Настройки памяти зависят от объема RAM на сервере. Не выделяйте больше 40% RAM для shared_buffers.

Часто задаваемые вопросы (FAQ)

Как проверить версию PostgreSQL?

Есть несколько способов:

bash
# Из командной строки
psql --version

# Изнутри PostgreSQL
sudo -u postgres psql -c "SELECT version();"

# Через системные пакеты
dpkg -l | grep postgresql

Как изменить пароль пользователя PostgreSQL?

Используйте команду ALTER USER внутри psql:

sql
-- Войдите в psql от имени postgres
sudo -u postgres psql

-- Измените пароль
ALTER USER username WITH PASSWORD 'new_password';

PostgreSQL не запускается, что делать?

Проверьте логи для диагностики:

bash
# Проверьте логи PostgreSQL
sudo journalctl -u postgresql -f

# Или посмотрите файлы логов
sudo tail -f /var/log/postgresql/postgresql-15-main.log

# Проверьте синтаксис конфигурации
sudo -u postgres pg_ctl -D /var/lib/postgresql/15/main reload

Как удалить PostgreSQL полностью?

Если нужно полностью удалить PostgreSQL:

bash
# Остановите службу
sudo systemctl stop postgresql

# Удалите пакеты
sudo apt purge postgresql* -y

# Удалите конфигурацию и данные (осторожно!)
sudo rm -rf /etc/postgresql/
sudo rm -rf /var/lib/postgresql/

# Удалите пользователя postgres
sudo deluser postgres

# Очистите зависимости
sudo apt autoremove -y

Заключение

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

  • Работающий сервер PostgreSQL с последней версией
  • Настроенный удаленный доступ (с ограничениями по безопасности)
  • Созданные пользователи и базы данных для приложений
  • Инструменты для бэкапа и восстановления
  • Базовые настройки для оптимизации производительности

Для production-среды рекомендую дополнительно настроить мониторинг, регулярные бэкапы и репликацию. PostgreSQL — мощная система, и правильная настройка окупится стабильностью и производительностью твоих приложений.

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