PostgreSQL, web uygulamaları, analitik ve karma iş yükleri için güvenilir bir ilişkisel veritabanıdır. Bu rehber Ubuntu/Debian üzerinde kurulum, veritabanı oluşturma ve temel güvenliği kapsar.
Ön koşullar
sudoerişimli Ubuntu 20.04+ veya Debian 11+- En az 1 GB RAM (ağır yükler için 2 GB+)
Kurulum
1. Güncelleme ve sunucu kurulumu
Bashsudo apt update && sudo apt upgrade -y sudo apt install -y postgresql postgresql-contrib
2. Hizmeti etkinleştirin ve kontrol edin
Bashsudo systemctl status postgresql sudo systemctl enable postgresql
Varsayılan olarak PostgreSQL localhost (127.0.0.1) üzerinde dinler; aynı VPS'teki uygulamalar için uygundur.
Uygulama kullanıcısı ve veritabanı oluşturma
postgres sistem kullanıcısına geçin ve psql açın:
Bashsudo -u postgres psql
psql içinde (adları ve parolayı ayarlayın):
SQLCREATE USER myapp WITH PASSWORD 'strong_password_here'; CREATE DATABASE myapp_db OWNER myapp; GRANT ALL PRIVILEGES ON DATABASE myapp_db TO myapp; \q
Bağlantıyı test edin:
Bashpsql -h 127.0.0.1 -U myapp -d myapp_db
Tipik bağlantı dizesi
TEXTpostgresql://myapp:[email protected]:5432/myapp_db
Güvenlik temelleri
- Uygulama rolü için güçlü parola.
- Kesinlikle gerekmedikçe PostgreSQL'i internete açmayın. Gerekirse: sıkı güvenlik duvarı,
listen_addresses,pg_hba.conf, tercihen VPN veya tünel. - Genel hizmetler için UFW ve Fail2ban ile birlikte kullanın.
Uzak erişim (gerekmedikçe kaçının)
postgresql.conf düzenleyin (yol değişir, genellikle /etc/postgresql/*/main/):
Configlisten_addresses = '*'
pg_hba.conf içinde kısıtlayıcı bir satır ekleyin (örnek: tek güvenilir IP):
TEXThost myapp_db myapp 203.0.113.50/32 scram-sha-256
Ardından:
Bashsudo systemctl restart postgresql
Yedekleme
Mantıksal döküm:
Bashsudo -u postgres pg_dump myapp_db > backup_myapp.sql
Geri yükleme:
Bashsudo -u postgres psql myapp_db < backup_myapp.sql
Yedekleri harici depolamaya cron ile zamanlayın.
Sorun giderme
- Peer authentication failed: TCP için
-h 127.0.0.1kullanın veyapg_hba.confayarlayın. - Connection refused: hizmet durumunu ve portu kontrol edin (
5432varsayılan).