7/24 Türkçe destek:[email protected]Sistem durumuDestek talebi

VPS’te PostgreSQL Kurulumu ve Veritabanı Oluşturma

Okuma süresi: 5 dk

Kısa yanıt: Paylaşımlı hosting paketlerimizde PostgreSQL ve phpPgAdmin yoktur; PostgreSQL root erişimli bir VPS’e kurulur. Ubuntu 24.04 VPS’te sudo apt install postgresql ile sunucuyu kurun, sudo -u postgres createuser --pwprompt uygulama ile kullanıcı ve sudo -u postgres createdb -O uygulama uygulamadb ile veritabanı oluşturun; uygulamanızı localhost ve 5432 portu üzerinden bağlayın.

Bu rehber kimin için: PostgreSQL kullanan geliştiriciler · Gereken süre: 10 dakika · Seviye: Orta

Paylaşımlı hosting paketlerimizde veritabanı olarak MySQL/MariaDB kullanılır; PostgreSQL ve phpPgAdmin bulunmaz. Çoğu PHP uygulaması (WordPress dahil) MySQL/MariaDB ile çalışır; Django projeleri ya da PostGIS kullanan uygulamalar gibi PostgreSQL gerektiren işler için PostgreSQL’i VPS’e kurarsınız. VPS’te önek kuralı yoktur, adları siz belirlersiniz; PostgreSQL kurulumdan sonra varsayılan olarak yalnız sunucunun kendisinden (localhost) gelen bağlantıları kabul eder.

VPS’e PostgreSQL kurma

  1. VPS’e sudo yetkili kullanıcınızla SSH ile bağlanın; yeni bir sunucuysa önce Ubuntu VPS ilk kurulum adımlarını tamamlayın.
  2. Paket listesini güncelleyip PostgreSQL’i kurun: sudo apt update && sudo apt install -y postgresql (Ubuntu 24.04 deposundan PostgreSQL 16 kurulur).
  3. Servisin çalıştığını kontrol edin: sudo systemctl status postgresql
  4. Yapılandırma dosyaları /etc/postgresql/16/main/ klasöründedir: postgresql.conf genel ayarları, pg_hba.conf ise kimin hangi yöntemle bağlanabileceğini belirler.

Kurulumdan sonra yalnız postgres adlı bir yönetici rolü vardır ve bu role işletim sistemindeki postgres kullanıcısıyla (sudo -u postgres) erişilir. Uygulamalarınız için bu rolü değil, aşağıdaki adımlarla açacağınız ayrı rolleri kullanın.

Veritabanı oluşturma

  1. psql’i açın: VPS’e SSH ile bağlanın ve PostgreSQL yönetici rolüyle sudo -u postgres psql komutunu çalıştırın; açılan psql isteminden exit yazarak çıkarsınız. Aşağıdaki SQL komutlarını bu istemde, createuser ve createdb komutlarını ise doğrudan kabukta çalıştırırsınız.
  2. Veritabanı: psql isteminde CREATE DATABASE uygulamadb; komutunu çalıştırın ya da kabukta sudo -u postgres createdb uygulamadb kullanın.
  3. Kullanıcı: Uygulamaya özel bir rol açın: CREATE ROLE uygulama WITH LOGIN PASSWORD 'GucluBirSifre'; (kabukta createuser --pwprompt ile de açabilirsiniz). Uygulamaya postgres süper kullanıcısını vermeyin.
  4. Yetki: Veritabanının sahibini bu rol yapın: ALTER DATABASE uygulamadb OWNER TO uygulama; PostgreSQL 15 ve sonrasında public şemasında tablo oluşturma yetkisi herkese değil veritabanı sahibine tanınır; sahiplik, uygulamanın tablolarını oluşturabilmesini sağlar.
  5. Bağlantı bilgileri: Uygulama aynı VPS’teyse sunucu localhost, port 5432; veritabanı ve kullanıcı adı olarak oluşturduğunuz adları kullanın (VPS’te önek yoktur). Bağlantıyı psql -h localhost -U uygulama -d uygulamadb ile deneyin.
  6. Yönetim: Grafik arayüz isterseniz bilgisayarınıza pgAdmin ya da DBeaver kurup sunucuya SSH tüneliyle bağlanın; bu yöntemde 5432 portunu internete açmanız gerekmez. Tabloları ve sorguları komut satırında psql ile de yönetebilirsiniz.

Uygulama bağlantısı

PHP uygulamaları için pgsql ve pdo_pgsql eklentileri gerekir. VPS’te sudo apt install php-pgsql ile kurup sudo systemctl restart php8.3-fpm ile PHP-FPM’i yeniden başlatın; php -m komutunun çıktısında pgsql ve pdo_pgsql görünmelidir (VPS’te cPanel’in eklenti ekranı yoktur; paylaşımlı hosting için bkz. PHP eklentisi etkinleştirme). Python ve Node.js uygulamalarında psycopg veya pg kütüphanesiyle aynı bilgiler kullanılır.

Uzaktan bağlantı açma (gerekiyorsa)

Masaüstü aracınızla bağlanacaksanız önce SSH tünelini deneyin: ssh -N -L 5433:127.0.0.1:5432 [email protected] komutu açıkken aracınızı localhost ve 5433 portuna bağlarsınız; sunucuda hiçbir ayarı değiştirmeniz gerekmez. Başka bir sunucudaki uygulama doğrudan bağlanacaksa:

  1. sudo nano /etc/postgresql/16/main/postgresql.conf ile listen_addresses satırının başındaki # işaretini kaldırın ve değeri listen_addresses = 'localhost,203.0.113.10' (ya da tüm arayüzler için '*') yapın.
  2. pg_hba.conf dosyasının sonuna yalnız bağlanacak IP için bir satır ekleyin: hostssl uygulamadb uygulama 198.51.100.25/32 scram-sha-256
  3. Ayarları uygulayın: sudo systemctl restart postgresql
  4. Güvenlik duvarında 5432 portunu yalnız o IP’ye açın: sudo ufw allow from 198.51.100.25 to any port 5432 proto tcp (UFW rehberi).
  5. İstemci tarafında bağlantıyı TLS ile deneyin: psql "host=203.0.113.10 dbname=uygulamadb user=uygulama sslmode=require"

Ubuntu’nun PostgreSQL paketi TLS’i kendinden imzalı bir sertifikayla açık getirir; sslmode=require bağlantıyı şifreler ama sertifikayı doğrulamaz. pg_hba.conf’a herkese açık (0.0.0.0/0) satır eklemeyin. Kurulumu, güncellemeleri ve yedek takibini ekibimize bırakmak isterseniz PostgreSQL de sunucu yönetimi hizmetimizin kapsamındadır.

Yedekleme

VPS paketlerinde sunucunun yedeği haftada bir alınır. Veritabanını daha sık ve ayrı yedeklemek için pg_dump kullanın: sudo -u postgres pg_dump -Fc uygulamadb > uygulamadb.dump komutu sıkıştırılmış bir yedek dosyası üretir; geri yüklemek için sudo -u postgres pg_restore -d uygulamadb uygulamadb.dump kullanın. Yedek dosyasını sunucu dışına da kopyalayın; cron ile düzenli yedek kurmak için VPS yedekleme rehberimize bakın.

Not: Uygulamanız hem MySQL hem PostgreSQL destekliyorsa ve paylaşımlı hostingte kalmak istiyorsanız MySQL/MariaDB’yi seçin; PostgreSQL yalnız VPS’te kullanılabilir.

Hâlâ çözülmediyse

“password authentication failed” hatası alırsanız şifreyi ALTER ROLE uygulama WITH PASSWORD 'YeniSifre'; ile yenileyin ve pg_hba.conf dosyasında bağlandığınız adres için scram-sha-256 satırı olduğunu kontrol edin. “Peer authentication failed” hatası, -h localhost yazmadan bağlandığınızda işletim sistemi kullanıcı adınızın rol adıyla eşleşmediğini gösterir. Sunucu kayıtları /var/log/postgresql/ klasöründedir. PostgreSQL’i uzantıları, sürümü ve performans ayarlarıyla kendiniz yönetmek için root erişimli VPS sunucu kullanmanız gerekir.

Sık sorulan sorular

PostGIS gibi uzantıları kurabilir miyim?

VPS’te evet: Ubuntu 24.04’te sudo apt install postgresql-16-postgis-3 ile paketi kurup ilgili veritabanında CREATE EXTENSION postgis; komutunu çalıştırın. Paylaşımlı hosting paketlerimizde PostgreSQL olmadığı için uzantı da kurulamaz.

Uzaktan bağlanabilir miyim?

VPS’te evet. En güvenli yol SSH tünelidir: ssh -N -L 5433:127.0.0.1:5432 [email protected] komutu açıkken istemcinizi localhost ve 5433 portuna bağlarsınız. Portu doğrudan açmanız gerekiyorsa postgresql.conf’ta listen_addresses, pg_hba.conf’ta yalnız istemci IP’niz için hostssl satırı ve UFW’de o IP’ye 5432 izni ekleyin (uzaktan bağlantı bölümü).

cPanel’de PostgreSQL Veritabanları simgesini göremiyorum.

Paylaşımlı hosting paketlerimizde PostgreSQL bulunmadığı için bu ekran görünmez. Uygulamanız MySQL/MariaDB ile de çalışıyorsa paylaşımlı hostingte MySQL veritabanı kullanın; PostgreSQL şartsa VPS sunucu uygundur.

Paylaşımlı hostingte PostgreSQL kullanabilir miyim?

Hayır. Paylaşımlı hosting paketlerimizde veritabanı olarak MySQL/MariaDB ve phpMyAdmin kullanılır; PostgreSQL ve phpPgAdmin yoktur. PostgreSQL gerektiren uygulamalar için VPS sunucu gerekir; kurulumunu ve bakımını ekibimize bırakmak isterseniz sunucu yönetimi hizmetini ekleyebilirsiniz. Paylaşımlı hostingte veritabanı açmak için MySQL veritabanı oluşturma rehberine bakın.

Haftalık VPS yedeği PostgreSQL veritabanımı da kapsar mı?

VPS paketlerinde sunucunuzun yedeği haftada bir alınır ve veritabanı dosyaları da sunucunun bir parçasıdır. Haftadan daha sık bir geri dönüş noktası ya da yalnız tek bir veritabanının kopyası gerekiyorsa pg_dump ile kendi yedeğinizi alın ve dosyayı sunucu dışına kopyalayın; zamanlanmış yedek için VPS yedekleme rehberine bakın.

İlgili rehberler