OKВсе сервисы работают штатно
InfrawireЛоготип InfrawireДокументация

Установка PostgreSQL на VPS Linux

PostgreSQL — надёжная СУБД для веб-приложений и смешанных нагрузок. Здесь: установка на Ubuntu/Debian, создание БД и первые шаги по безопасности.

Требования

  • Ubuntu 20.04+ или Debian 11+ с sudo
  • Минимум 1 ГБ RAM (2 ГБ+ при серьёзной нагрузке)

Установка

1. Обновление и пакет сервера

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

2. Сервис

Bash
sudo systemctl status postgresql sudo systemctl enable postgresql

По умолчанию PostgreSQL слушает локально (127.0.0.1) — нормально, если приложение на том же VPS.

База и пользователь приложения

Под пользователем postgres откройте psql:

Bash
sudo -u postgres psql

В psql (замените имена и пароль):

SQL
CREATE USER monapp WITH PASSWORD 'mot_de_passe_solide'; CREATE DATABASE monapp_db OWNER monapp; GRANT ALL PRIVILEGES ON DATABASE monapp_db TO monapp; \q

Проверка:

Bash
psql -h 127.0.0.1 -U monapp -d monapp_db

Типичная строка подключения

TEXT
postgresql://monapp:[email protected]:5432/monapp_db

Безопасность

  1. Сильный пароль у пользователя приложения.
  2. Не открывайте PostgreSQL в интернет без крайней необходимости. Если нужно: строгий фаервол, listen_addresses, pg_hba.conf, лучше туннель или VPN.
  3. С публичными сервисами совмещайте UFW и Fail2ban.

Удалённый доступ (избегайте без нужды)

В postgresql.conf (путь вида /etc/postgresql/*/main/):

Config
listen_addresses = '*'

В pg_hba.confузкая строка (пример: только фиксированный IP другого сервера):

TEXT
host monapp_db monapp 203.0.113.50/32 scram-sha-256

Затем:

Bash
sudo systemctl restart postgresql

Резервные копии

Логический дамп:

Bash
sudo -u postgres pg_dump monapp_db > backup_monapp.sql

Восстановление:

Bash
sudo -u postgres psql monapp_db < backup_monapp.sql

Планируйте копии (cron) на внешнее хранилище.

Устранение неполадок

  • Peer authentication failed — используйте -h 127.0.0.1 для TCP или настройте pg_hba.conf.
  • Connection refused — сервис активен и верный порт (по умолчанию 5432).