OKWszystkie usługi działają prawidłowo
InfrawireLogo InfrawireDokumentacja

Instalacja PostgreSQL na VPS Linux

PostgreSQL to niezawodna baza relacyjna dla aplikacji WWW, analityki i mieszanych obciążeń. Poniżej instalacja na Ubuntu/Debian, utworzenie bazy i podstawy bezpieczeństwa.

Wymagania

  • Ubuntu 20.04+ lub Debian 11+ z sudo
  • Co najmniej 1 GB RAM (przy cięższym obciążeniu 2 GB+)

Instalacja

1. Aktualizacja i pakiet serwera

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

2. Usługa

Bash
sudo systemctl status postgresql sudo systemctl enable postgresql

Domyślnie PostgreSQL nasłuchuje na localhost (127.0.0.1) — wygodne, gdy aplikacja jest na tym samym VPS.

Użytkownik aplikacji i baza

Przełącz się na użytkownika systemowego postgres i uruchom psql:

Bash
sudo -u postgres psql

W psql (dostosuj nazwy i hasło):

SQL
CREATE USER myapp WITH PASSWORD 'strong_password_here'; CREATE DATABASE myapp_db OWNER myapp; GRANT ALL PRIVILEGES ON DATABASE myapp_db TO myapp; \q

Test połączenia:

Bash
psql -h 127.0.0.1 -U myapp -d myapp_db

Typowy connection string

TEXT
postgresql://myapp:[email protected]:5432/myapp_db

Bezpieczeństwo

  1. Silne hasło roli aplikacji.
  2. Unikaj wystawiania PostgreSQL do Internetu, jeśli nie jest to konieczne. Jeśli musisz: ścisły firewall, listen_addresses, pg_hba.conf, najlepiej VPN lub tunel.
  3. Łącz z UFW i Fail2ban dla publicznych usług.

Dostęp zdalny (unikaj, o ile nie potrzebujesz)

W postgresql.conf (ścieżka zwykle /etc/postgresql/*/main/):

Config
listen_addresses = '*'

W pg_hba.conf dodaj restrykcyjną regułę (przykład: jedno zaufane IP):

TEXT
host myapp_db myapp 203.0.113.50/32 scram-sha-256

Potem:

Bash
sudo systemctl restart postgresql

Kopie zapasowe

Zrzut logiczny:

Bash
sudo -u postgres pg_dump myapp_db > backup_myapp.sql

Przywrócenie:

Bash
sudo -u postgres psql myapp_db < backup_myapp.sql

Planuj kopie (cron) na zewnętrzny storage.

Rozwiązywanie problemów

  • Peer authentication failed: użyj -h 127.0.0.1 dla TCP lub dostosuj pg_hba.conf.
  • Connection refused: status usługi i port (5432 domyślnie).