Takip et

Ubuntu 22.04 Üzerinde pgAdmin 4’ü Sunucu Modunda Kurma ve Yapılandırma Rehberi

Ubuntu 22.04 Üzerinde pgAdmin 4’ü Sunucu Modunda Kurma ve Yapılandırma Rehberi Giriş Veritabanı yönetimi, modern yazılım geliştirme ve veri

Ubuntu 22.04 Üzerinde pgAdmin 4’ü Sunucu Modunda Kurma ve Yapılandırma Rehberi

Giriş

Veritabanı yönetimi, modern yazılım geliştirme ve veri analizi süreçlerinin ayrılmaz bir parçasıdır. PostgreSQL, açık kaynaklı ve güçlü bir ilişkisel veritabanı yönetim sistemi olarak geniş bir kullanıcı kitlesine sahiptir. Bu veritabanını yönetmek için kullanılan en popüler araçlardan biri de pgAdmin’dir. pgAdmin, PostgreSQL veritabanları için zengin özelliklere sahip bir grafiksel kullanıcı arayüzü (GUI) sunar.

pgAdmin 4, önceki sürümlerine göre önemli mimari değişiklikler getirmiştir. Bir web uygulaması olarak tasarlanmıştır ve hem masaüstü uygulaması olarak (yerel bir web sunucusu ile) hem de merkezi bir sunucu üzerinde (sunucu modu) çalıştırılabilir. Bu rehberde, pgAdmin 4’ü Ubuntu 22.04 işletim sistemi üzerinde sunucu modunda nasıl kuracağımızı ve yapılandıracağımızı adım adım ele alacağız. Sunucu modu, birden fazla kullanıcının aynı pgAdmin örneğine web tarayıcısı üzerinden erişmesine olanak tanır, bu da ekip içi işbirliğini ve merkezi yönetimi kolaylaştırır. Ayrıca, bu kurulumu Nginx ters proxy ve Let’s Encrypt ile SSL/TLS şifrelemesi kullanarak güvenli hale getireceğiz.

Ön Gereksinimler

Bu rehberi takip edebilmek için aşağıdaki ön gereksinimlere sahip olmanız gerekmektedir:

* Ubuntu 22.04 Sunucusu: Temiz bir Ubuntu 22.04 LTS (Jammy Jellyfish) kurulumuna sahip, internete erişimi olan bir sunucu.
* Sudo Yetkileri: Kurulum ve yapılandırma adımları için sudo yetkilerine sahip bir kullanıcı hesabı.
* PostgreSQL Kurulumu: pgAdmin’in yöneteceği bir veya daha fazla PostgreSQL veritabanı sunucusunun kurulu ve erişilebilir olması. Bu rehberde PostgreSQL kurulumu ele alınmayacaktır, ancak pgAdmin’in işlevselliği için gereklidir.
* Temel Linux Bilgisi: Komut satırı kullanımı ve temel Linux dosya sistemi bilgisi.
* Alan Adı: pgAdmin’e web üzerinden erişmek için yapılandırılmış bir alan adı (örneğin, pgadmin.alanadiniz.com). Let’s Encrypt ile SSL sertifikası almak için bu gereklidir. Eğer bir alan adınız yoksa, IP adresi üzerinden erişebilirsiniz, ancak SSL sertifikası alamazsınız ve bazı adımlar farklılık gösterebilir.
* Sabit IP Adresi: Sunucunuzun sabit bir genel IP adresine sahip olması önerilir.

Sistem Güncellemesi ve Temel Bağımlılıkların Kurulumu

Kuruluma başlamadan önce, sistem paket listesini güncelleyelim ve mevcut paketleri yükseltelim. Ayrıca pgAdmin’in ve diğer bileşenlerin düzgün çalışması için gerekli olabilecek bazı temel bağımlılıkları kuralım.

sudo apt update
sudo apt upgrade -y

Şimdi, pgAdmin 4, Nginx, Certbot ve Gunicorn gibi araçların kurulumu için gerekli olabilecek ek paketleri kuralım:

sudo apt install curl wget software-properties-common apt-transport-https build-essential python3-pip python3-dev libpq-dev -y

* curl, wget: Dosya indirmek için kullanılır.
* software-properties-common, apt-transport-https: APT depolarını yönetmek için gereklidir.
* build-essential, python3-pip, python3-dev, libpq-dev: Python tabanlı uygulamaların (pgAdmin ve Gunicorn gibi) derlenmesi ve PostgreSQL bağlantıları için gerekli olan geliştirme araçları ve kütüphaneleridir.

pgAdmin 4 Kurulumu

pgAdmin 4’ü Ubuntu’ya kurmanın en güvenilir yolu, resmi pgAdmin APT deposunu kullanmaktır. Bu, en güncel sürümleri almanızı ve paket yöneticisi aracılığıyla kolayca güncelleme yapmanızı sağlar.

pgAdmin 4 Deposunun Eklenmesi

İlk olarak, pgAdmin deposunun GPG anahtarını sistemimize eklememiz gerekiyor. Bu, indirdiğimiz paketlerin güvenilir olduğunu doğrulamamızı sağlar.

curl -fsSL https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/pgadmin.gpg

Ardından, pgAdmin 4 deposunu APT kaynak listemize ekleyelim. Ubuntu 22.04 için jammy kod adını kullanacağız.

sudo sh -c 'echo "deb https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/jammy pgadmin4 main" > /etc/apt/sources.list.d/pgadmin4.list'

Depoyu ekledikten sonra, paket listemizi tekrar güncelleyelim ki sistem yeni depoyu tanısın.

sudo apt update

pgAdmin 4 Paketlerinin Kurulumu

Artık pgAdmin 4 paketini kurabiliriz. Sunucu modunda çalıştıracağımız için, pgadmin4-web paketini tercih edeceğiz. Bu paket, pgAdmin’in web arayüzü bileşenlerini Apache veya başka bir web sunucusu bağımlılığı olmadan kurar, bu da Nginx ve Gunicorn ile özel bir kurulum için idealdir.

sudo apt install pgadmin4-web -y

Bu komut, pgAdmin 4’ün temel web bileşenlerini ve gerekli Python bağımlılıklarını kuracaktır. Kurulum tamamlandıktan sonra, pgAdmin 4 dosyaları genellikle /usr/pgadmin4/web dizininde bulunur.

pgAdmin 4 Sunucu Modu Yapılandırması

pgAdmin 4’ü sunucu modunda çalıştırmak için bazı temel yapılandırma değişiklikleri yapmamız gerekiyor. Bu değişiklikler genellikle config_local.py dosyasında yapılır.

Yapılandırma Dosyalarına Genel Bakış

pgAdmin 4, yapılandırma için birden fazla dosya kullanır:
* /usr/pgadmin4/web/config.py: Ana dağıtım yapılandırma dosyasıdır. Bu dosyayı doğrudan düzenlememelisiniz, çünkü güncellemelerle üzerine yazılabilir.
* /usr/pgadmin4/web/config_distro.py: Dağıtıma özel ek yapılandırmalar içerir.
* /etc/pgadmin4/config_local.py: Yerel ve özel yapılandırmalarınızı yapmanız gereken yer burasıdır. Bu dosya, config.py ve config_distro.py dosyalarındaki ayarları geçersiz kılar.

Bu rehberde, /etc/pgadmin4/config_local.py dosyasını oluşturarak veya düzenleyerek pgAdmin 4’ü yapılandıracağız.

Temel Ayarlar

Şimdi /etc/pgadmin4/config_local.py dosyasını oluşturalım ve aşağıdaki temel ayarları ekleyelim.

sudo nano /etc/pgadmin4/config_local.py

Dosyaya aşağıdaki içeriği ekleyin:

# pgAdmin 4 sunucu modu yapılandırması

Sunucu modunu etkinleştir

SERVER_MODE = True

pgAdmin'in veritabanı dosyalarının saklanacağı dizin (SQLite)

Bu dizin pgAdmin kullanıcısı tarafından yazılabilir olmalı

SQLITE_PATH = '/var/lib/pgadmin4/pgadmin4.db'

Günlük dosyası yolu

LOG_FILE = '/var/log/pgadmin4/pgadmin4.log'

Oturum dosyalarının saklanacağı dizin

SESSION_DB_PATH = '/var/lib/pgadmin4/sessions'

Depolama dizini (örneğin, yedekleme dosyaları için)

STORAGE_DIR = '/var/lib/pgadmin4/storage'

CSRF (Cross-Site Request Forgery) koruması için gizli anahtar

Bu anahtarı rastgele ve güçlü bir değerle değiştirin.

Python'da secrets.token_hex(16) ile oluşturabilirsiniz.

CSRF_SESSION_KEY = 'Sizin_Cok_Guclu_Ve_Rastgele_CSRF_Anahtarınız_Buraya_Gelecek'

Flask uygulaması için gizli anahtar (güvenlik için çok önemli)

Bu anahtarı rastgele ve güçlü bir değerle değiştirin.

Python'da os.urandom(24).hex() ile oluşturabilirsiniz.

SECRET_KEY = 'Sizin_Cok_Guclu_Ve_Rastgele_SECRET_Anahtarınız_Buraya_Gelecek'

Kimlik doğrulama modunu ayarlayın (örneğin, 'web' varsayılan web oturum açma için)

AUTHENTICATION_SOURCES = ['web']

Varsayılan sunucu adresini ayarlayın (Gunicorn'un dinleyeceği adres)

Gunicorn'u Nginx arkasında çalıştıracağımız için 127.0.0.1 yeterlidir.

DEFAULT_SERVER = '127.0.0.1'

Varsayılan sunucu portu (Gunicorn'un dinleyeceği port)

DEFAULT_SERVER_PORT = 5050

Oturum çerezi için SameSite politikası

Güvenlik için 'Lax' veya 'Strict' önerilir

SESSION_COOKIE_SAMESITE = 'Lax'

Debug modunu kapatın (üretim ortamında False olmalı)

DEBUG = False

Eğer Apache ile birlikte gelirse, Apache yapılandırmasını devre dışı bırakmak için

ENABLE_WEB_SERVER = False # Bu satırı eklemek, pgadmin4-apache2 paketi kurulduysa işe yarar.

ÖNEMLİ: CSRF_SESSION_KEY ve SECRET_KEY değerlerini kesinlikle rastgele ve güçlü değerlerle değiştirmeniz gerekmektedir. Bu anahtarları oluşturmak için Python’ı kullanabilirsiniz:

python3 -c 'import secrets; print(secrets.token_hex(16))'

Çıktı: Rastgele bir 32 karakterli hex dizesi (CSRF_SESSION_KEY için)

python3 -c 'import os; print(os.urandom(24).hex())'

Çıktı: Rastgele bir 48 karakterli hex dizesi (SECRET_KEY için)

Üretilen değerleri config_local.py dosyasındaki ilgili satırlara yapıştırın.

Yapılandırma dosyalarını kaydettikten sonra, pgAdmin’in kullanacağı dizinleri oluşturalım ve doğru izinleri atayalım:

sudo mkdir -p /var/lib/pgadmin4/sessions
sudo mkdir -p /var/lib/pgadmin4/storage
sudo mkdir -p /var/log/pgadmin4
sudo chown -R pgadmin:pgadmin /var/lib/pgadmin4
sudo chown -R pgadmin:pgadmin /var/log/pgadmin4
sudo chmod -R 700 /var/lib/pgadmin4
sudo chmod -R 700 /var/log/pgadmin4

pgadmin kullanıcısı, pgadmin4-web paketi yüklendiğinde otomatik olarak oluşturulur. Bu kullanıcı, pgAdmin uygulamasının çalışacağı kullanıcıdır ve bu dizinlere yazma yetkisine sahip olmalıdır.

Kullanıcı Kimlik Doğrulama

pgAdmin 4’ü ilk kez sunucu modunda başlattığınızda, bir yönetici kullanıcı hesabı oluşturmanız gerekir. Bu hesap, web arayüzüne giriş yapmak için kullanılacaktır.

sudo /usr/pgadmin4/bin/setup-web.sh

Bu komut sizden bir e-posta adresi ve bir parola girmenizi isteyecektir. Bu bilgilerle pgAdmin’e giriş yapacaksınız.

Setting up pgAdmin 4 in web mode:
NOTE: Configuring pgAdmin 4 for web mode only.
Please enter the email address and password to set up the admin user account.
You can change them later in the pgAdmin 4 interface.
Email address: admin@your_domain.com
Password:
Retype password:

E-posta adresi olarak gerçek bir adres kullanmanız önerilir.

Gunicorn ile pgAdmin 4 Çalıştırma

pgAdmin 4 bir Python WSGI (Web Server Gateway Interface) uygulamasıdır. Üretim ortamında doğrudan Flask’ın yerleşik sunucusu yerine Gunicorn gibi sağlam bir WSGI sunucusu kullanmak daha iyidir. Gunicorn, eşzamanlı bağlantıları daha iyi yönetir ve daha kararlı bir performans sunar.

Gunicorn Kurulumu

Gunicorn’u Python’ın pip paket yöneticisi aracılığıyla kuralım:

sudo pip install gunicorn

pgAdmin 4 WSGI Uygulamasını Bulma

pgAdmin 4’ün WSGI giriş noktası genellikle /usr/pgadmin4/web/pgAdmin4.py dosyasındadır. Gunicorn bu dosyayı kullanarak uygulamayı başlatacaktır.

Systemd Servisi Oluşturma

Gunicorn’u manuel olarak çalıştırmak yerine, Systemd kullanarak bir servis olarak çalıştırmak en iyi yaklaşımdır. Bu, sunucu yeniden başlatıldığında pgAdmin’in otomatik olarak başlamasını sağlar ve servis yönetimini kolaylaştırır.

/etc/systemd/system/pgadmin4.service adında bir Systemd servis dosyası oluşturalım:

sudo nano /etc/systemd/system/pgadmin4.service

Dosyaya aşağıdaki içeriği ekleyin:

[Unit]
Description=pgAdmin 4 - PostgreSQL Tools Web Application
After=network.target

[Service]
User=pgadmin
Group=pgadmin
WorkingDirectory=/usr/pgadmin4/web
Environment="PATH=/usr/bin:/usr/local/bin"
ExecStart=/usr/local/bin/gunicorn --workers 3 --bind 127.0.0.1:5050 pgAdmin4:app
Restart=always

[Install]
WantedBy=multi-user.target

Yukarıdaki yapılandırmayı açıklayalım:
* [Unit]: Servisin tanımını ve bağımlılıklarını belirtir. After=network.target ile ağın başlatılmasından sonra başlamasını sağlar.
* [Service]: Servisin nasıl çalıştırılacağını tanımlar.
* User=pgadmin, Group=pgadmin: pgAdmin uygulamasını pgadmin kullanıcısı ve grubu altında çalıştırırız. Bu, güvenlik için iyi bir uygulamadır.
* WorkingDirectory=/usr/pgadmin4/web: Gunicorn’un çalışacağı dizini belirtir.
* Environment="PATH=...": Gunicorn’un doğru PATH ortam değişkenine sahip olmasını sağlar.
* ExecStart=/usr/local/bin/gunicorn ...: Gunicorn’u başlatmak için kullanılan komut.
--workers 3: Gunicorn’un 3 işçi süreciyle çalışmasını sağlar. Bu değer sunucunuzun CPU çekirdeği sayısına göre ayarlanabilir (genellikle 2 CPU_çekirdek_sayısı + 1 önerilir).
* --bind 127.0.0.1:5050: Gunicorn’un sadece yerel arayüzde (localhost) 5050 portunu dinlemesini sağlar. Nginx bu porta proxy yapacaktır.
* pgAdmin4:app: pgAdmin 4’ün WSGI uygulamasını belirtir. /usr/pgadmin4/web/pgAdmin4.py dosyasındaki app objesini kullanır.
* Restart=always: Herhangi bir nedenle servis durduğunda Systemd’nin otomatik olarak yeniden başlatmasını sağlar.
* [Install]: Servisin hangi hedef tarafından etkinleştirileceğini belirtir. WantedBy=multi-user.target ile çok kullanıcılı modda otomatik olarak başlamasını sağlar.

Dosyayı kaydedip kapattıktan sonra, Systemd’yi yeni servisi tanıması için yeniden yüklemeliyiz:

sudo systemctl daemon-reload

Şimdi pgAdmin 4 servisini başlatalım ve sistem başlangıcında otomatik olarak başlamasını sağlayalım:

sudo systemctl start pgadmin4
sudo systemctl enable pgadmin4

Servisin durumunu kontrol ederek düzgün çalışıp çalışmadığını doğrulayabiliriz:

sudo systemctl status pgadmin4

Durum active (running) olarak görünmelidir. Herhangi bir hata varsa, journalctl -u pgadmin4.service komutuyla günlükleri inceleyebilirsiniz.

Nginx ile Ters Proxy Yapılandırması

Gunicorn doğrudan internete açık olmamalıdır. Nginx’i bir ters proxy olarak kullanarak, gelen web isteklerini Nginx’in işlemesini ve ardından bu istekleri Gunicorn’a iletmesini sağlayacağız. Nginx ayrıca SSL/TLS şifrelemesini yönetmek için de kullanılacaktır.

Nginx Kurulumu

Nginx’i Ubuntu paket yöneticisi aracılığıyla kuralım:

sudo apt install nginx -y

Kurulumdan sonra Nginx servisi otomatik olarak başlar. Durumunu kontrol edebilirsiniz: sudo systemctl status nginx.

Nginx Sanal Host Yapılandırması

Şimdi pgAdmin 4 için bir Nginx sanal host (server block) yapılandırması oluşturalım. your_domain.com yerine kendi alan adınızı kullanmayı unutmayın.

sudo nano /etc/nginx/sites-available/pgadmin4

Dosyaya aşağıdaki içeriği ekleyin:

server {
    listen 80;
    server_name pgadmin.alanadiniz.com; # Kendi alan adınızı buraya yazın

    # HTTP isteklerini HTTPS'e yönlendir (Certbot kurulduktan sonra otomatik olarak güncellenecek)
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name pgadmin.alanadiniz.com; # Kendi alan adınızı buraya yazın

    ssl_certificate /etc/letsencrypt/live/pgadmin.alanadiniz.com/fullchain.pem; # Certbot oluşturacak
    ssl_key /etc/letsencrypt/live/pgadmin.alanadiniz.com/privkey.pem;       # Certbot oluşturacak
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384";
    ssl_prefer_server_ciphers on;

    # HSTS (HTTP Strict Transport Security)
    add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";

    # Güvenlik başlıkları
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";
    add_header X-XSS-Protection "1; mode=block";

    location / {
        proxy_pass http://127.0.0.1:5050; # Gunicorn'un dinlediği adres ve port
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_redirect off;
        proxy_buffering off; # Gunicorn ile gerçek zamanlı iletişimi sağlar
    }

    # Statik dosyalar için ayrı bir location bloğu tanımlanabilir
    # pgAdmin 4'ün statik dosyaları genellikle /usr/pgadmin4/web/pgadmin/static dizinindedir.
    # Bu, Nginx'in statik dosyaları doğrudan sunarak Gunicorn üzerindeki yükü azaltmasını sağlar.
    location /static/ {
        alias /usr/pgadmin4/web/pgadmin/static/;
        expires 30d;
        add_header Cache-Control "public, no-transform";
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }
}

Not: İlk server bloğu, HTTP isteklerini HTTPS’e yönlendirmek içindir. SSL sertifikasını Certbot ile aldıktan sonra Certbot bu bloğu otomatik olarak güncelleyecektir. ssl_certificate ve ssl_key yolları da Certbot tarafından oluşturulan yollara işaret edecektir. Şimdilik bu yolların var olmadığını unutmayın.

Yapılandırmayı Etkinleştirme

Oluşturduğumuz sanal host yapılandırmasını etkinleştirmek için, sites-available dizininden sites-enabled dizinine bir sembolik bağlantı oluşturalım:

sudo ln -s /etc/nginx/sites-available/pgadmin4 /etc/nginx/sites-enabled/

Varsayılan Nginx yapılandırmasını devre dışı bırakalım, böylece çakışma olmaz:

sudo unlink /etc/nginx/sites-enabled/default

Nginx yapılandırma dosyasında sözdizimi hatası olup olmadığını kontrol edelim:

sudo nginx -t

Eğer syntax is ok ve test is successful mesajlarını alırsanız, Nginx’i yeniden başlatarak yeni yapılandırmayı uygulayabiliriz:

sudo systemctl restart nginx

SSL/TLS Şifrelemesi (Let’s Encrypt ile)

Web trafiğini güvence altına almak için Let’s Encrypt aracılığıyla ücretsiz bir SSL/TLS sertifikası alacağız. Certbot aracı bu süreci otomatikleştirecektir.

Certbot Kurulumu

Certbot ve Nginx eklentisini kuralım:

sudo apt install certbot python3-certbot-nginx -y

SSL Sertifikası Alma

Şimdi Certbot’u çalıştırarak alan adınız için SSL sertifikası alalım. pgadmin.alanadiniz.com yerine kendi alan adınızı yazın.

sudo certbot --nginx -d pgadmin.alanadiniz.com

Certbot sizden bazı bilgiler isteyecek (e-posta, hizmet şartlarını kabul etme vb.). İşlemi tamamladığınızda, Certbot Nginx yapılandırmanızı otomatik olarak güncelleyecek ve SSL sertifikasını yükleyecektir.

Certbot’un sertifikaları otomatik olarak yenilemek için bir cronjob veya Systemd zamanlayıcı kurduğunu doğrulayabilirsiniz. Yenileme işlemini test etmek için:

sudo certbot renew --dry-run

Bu komut, sertifika yenileme işlemini gerçek bir değişiklik yapmadan simüle eder. Başarılı olursa, sertifikalarınızın süresi dolduğunda otomatik olarak yenileneceğinden emin olabilirsiniz.

Güvenlik Duvarı (UFW) Yapılandırması

Sunucunuzu güvende tutmak için bir güvenlik duvarı (firewall) kullanmak çok önemlidir. Ubuntu’da UFW (Uncomplicated Firewall) bunu kolaylaştırır.

UFW Kurulumu ve Temel Ayarlar

UFW genellikle Ubuntu’da önceden yüklüdür, ancak kurulu değilse kurabilirsiniz:

sudo apt install ufw -y

Varsayılan olarak gelen tüm bağlantıları reddedip giden tüm bağlantılara izin verelim:

sudo ufw default deny incoming
sudo ufw default allow outgoing

Gerekli Portların Açılması

Şimdi SSH, HTTP (80) ve HTTPS (443) bağlantılarına izin verelim:

sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'

Nginx Full, Nginx’in hem HTTP (80) hem de HTTPS (443) portlarını kapsayan bir uygulama profilidir.

Güvenlik duvarını etkinleştirelim:

sudo ufw enable

Devam etmek isteyip istemediğiniz sorulduğunda y yazıp Enter tuşuna basın.

UFW durumunu kontrol ederek kuralların doğru bir şekilde uygulandığını doğrulayabilirsiniz:

sudo ufw status

Çıktı, SSH, HTTP ve HTTPS bağlantılarına izin verildiğini göstermelidir.

pgAdmin 4’e Erişim ve İlk Yapılandırma

Tüm kurulum ve yapılandırma adımlarını tamamladığınıza göre, pgAdmin 4 web arayüzüne erişebilirsiniz.

Web tarayıcınızı açın ve https://pgadmin.alanadiniz.com adresine gidin (kendi alan adınızı kullanarak).
Certbot tarafından sağlanan SSL sertifikası sayesinde bağlantınız güvenli olacaktır.

pgAdmin 4 oturum açma ekranını görmelisiniz. setup-web.sh komutuyla oluşturduğunuz yönetici e-posta adresi ve parolasıyla giriş yapın.

Giriş yaptıktan sonra, pgAdmin 4’ün ana kontrol panelini göreceksiniz. Şimdi PostgreSQL sunucularınızı ekleyebilirsiniz:
1. Sol paneldeki “Servers” (Sunucular) öğesine sağ tıklayın ve “Create” (Oluştur) -> “Server…” (Sunucu…) seçeneğini seçin.
2. “General” (Genel) sekmesinde sunucu için bir isim girin (örneğin, “Yerel PostgreSQL Sunucusu”).
3. “Connection” (Bağlantı) sekmesine gidin.
* Host name/address: PostgreSQL sunucunuzun IP adresi veya ana bilgisayar adı. Eğer pgAdmin ile aynı sunucudaysa localhost veya 127.0.0.1 kullanabilirsiniz.
* Port: PostgreSQL’in dinlediği port (varsayılan 5432).
* Maintenance database: postgres veya başka bir bakım veritabanı.
* Username: PostgreSQL’e bağlanmak için kullanılacak kullanıcı adı (örneğin, postgres).
* Password: PostgreSQL kullanıcısının parolası.
4. “Save” (Kaydet) düğmesine tıklayın.

pgAdmin 4, sunucunuza bağlanacak ve veritabanlarınızı, tablolarınızı, sorgularınızı ve daha fazlasını yönetmenize olanak tanıyacaktır.

Sorun Giderme ve İpuçları

Kurulum sırasında veya sonrasında karşılaşabileceğiniz bazı yaygın sorunlar ve çözümleri:

* pgAdmin’e erişemiyorum:
* Güvenlik Duvarı: UFW kurallarınızı kontrol edin (sudo ufw status). HTTP/HTTPS portlarının açık olduğundan emin olun.
* Nginx: Nginx servisi çalışıyor mu? (sudo systemctl status nginx). Nginx yapılandırmanız doğru mu? (sudo nginx -t). Nginx hata günlüklerini kontrol edin (sudo tail -f /var/log/nginx/error.log).
* Gunicorn/pgAdmin: pgAdmin4 servisi çalışıyor mu? (sudo systemctl status pgadmin4). pgAdmin günlüklerini kontrol edin (sudo tail -f /var/log/pgadmin4/pgadmin4.log) veya Systemd günlüklerini (sudo journalctl -u pgadmin4.service). Gunicorn’un doğru portu dinlediğinden emin olun.
* Alan Adı/DNS: Alan adınızın sunucunuzun IP adresine doğru şekilde işaret ettiğinden emin olun.
* 502 Bad Gateway Hatası: Genellikle Nginx’in Gunicorn’a bağlanamadığı anlamına gelir. Gunicorn servisi çalışıyor mu? Gunicorn’un Nginx yapılandırmanızdaki proxy_pass ile aynı adresi ve portu dinlediğinden emin olun.
* 500 Internal Server Error: pgAdmin uygulamasının kendisinde bir hata olduğunu gösterir. pgAdmin loglarını kontrol edin (/var/log/pgadmin4/pgadmin4.log). Dosya izinleri veya config_local.py içindeki hatalı yapılandırmalar bu hataya neden olabilir.
* Dosya İzinleri: /var/lib/pgadmin4 ve /var/log/pgadmin4 dizinlerinin pgadmin kullanıcısı tarafından yazılabilir olduğundan emin olun (sudo chown -R pgadmin:pgadmin /var/lib/pgadmin4).
* SECRET_KEY ve CSRF_SESSION_KEY: Bu anahtarların config_local.py dosyasında ayarlandığından ve güçlü, rastgele değerler olduğundan emin olun. Eksik veya zayıf anahtarlar güvenlik sorunlarına veya uygulamanın başlamamasına neden olabilir.

Güvenlik Notları

pgAdmin 4’ü sunucu modunda çalıştırmak, merkezi yönetim avantajları sunarken, güvenlik konusunda dikkatli olmayı gerektirir:

* Güçlü Parolalar: pgAdmin yönetici hesabı ve PostgreSQL veritabanı kullanıcıları için her zaman güçlü, karmaşık parolalar kullanın.
* SSL/TLS: Her zaman HTTPS kullanarak pgAdmin’e erişin. Let’s Encrypt ile sağladığımız SSL sertifikası bu konuda size yardımcı olacaktır.
* Düzenli Güncellemeler: Ubuntu işletim sisteminizi, pgAdmin 4’ü ve diğer tüm yazılımları düzenli olarak güncelleyin. Bu, bilinen güvenlik açıklarına karşı korunmanızı sağlar.
* Erişim Kısıtlamaları: Eğer mümkünse, pgAdmin’e sadece belirli IP adreslerinden erişime izin verin. Nginx yapılandırmasında allow ve deny yönergelerini kullanarak veya UFW kurallarıyla bunu yapabilirsiniz.
* Yedeklemeler: pgAdmin’in yönettiği PostgreSQL veritabanlarınızın düzenli yedeklerini alın.
* Log İzleme: pgAdmin ve Nginx günlüklerini düzenli olarak izleyerek şüpheli etkinlikleri tespit edin.

Sonuç

Bu rehberde, Ubuntu 22.04 sunucusu üzerinde pgAdmin 4’ü sunucu modunda başarıyla kurmayı ve yapılandırmayı öğrendiniz. Gunicorn’u WSGI sunucusu olarak kullanarak pgAdmin’i bir Systemd servisi olarak çalıştırdık. Ardından, Nginx’i bir ters proxy olarak yapılandırdık ve Let’s Encrypt ile SSL/TLS şifrelemesi ekleyerek bağlantıyı güvence altına aldık. Son olarak, UFW güvenlik duvarını yapılandırarak sunucumuzun güvenliğini artırdık.

Artık ekibinizdeki herkes, herhangi bir web tarayıcısı üzerinden merkezi olarak yönetilen pgAdmin 4 örneğinize güvenli bir şekilde erişebilir ve PostgreSQL veritabanlarınızı etkin bir şekilde yönetebilir. Bu kurulum, veritabanı yönetimi süreçlerinizde verimliliği ve güvenliği önemli ölçüde artıracaktır.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Exit mobile version