{"id":32190,"date":"2025-10-18T20:41:11","date_gmt":"2025-10-18T17:41:11","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=32190"},"modified":"2025-10-18T20:41:11","modified_gmt":"2025-10-18T17:41:11","slug":"ubuntu-22-04-uzerinde-pgadmin-4u-sunucu-modunda-kurma-ve-yapilandirma-rehberi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/ubuntu-22-04-uzerinde-pgadmin-4u-sunucu-modunda-kurma-ve-yapilandirma-rehberi\/","title":{"rendered":"Ubuntu 22.04 \u00dczerinde pgAdmin 4&#8217;\u00fc Sunucu Modunda Kurma ve Yap\u0131land\u0131rma Rehberi"},"content":{"rendered":"<p><body><\/p>\n<h2>Ubuntu 22.04 \u00dczerinde pgAdmin 4&#8217;\u00fc Sunucu Modunda Kurma ve Yap\u0131land\u0131rma Rehberi<\/h2>\n<h2>Giri\u015f<\/h2>\n<p>Veritaban\u0131 y\u00f6netimi, modern yaz\u0131l\u0131m geli\u015ftirme ve veri analizi s\u00fcre\u00e7lerinin ayr\u0131lmaz bir par\u00e7as\u0131d\u0131r. PostgreSQL, a\u00e7\u0131k kaynakl\u0131 ve g\u00fc\u00e7l\u00fc bir ili\u015fkisel veritaban\u0131 y\u00f6netim sistemi olarak geni\u015f bir kullan\u0131c\u0131 kitlesine sahiptir. Bu veritaban\u0131n\u0131 y\u00f6netmek i\u00e7in kullan\u0131lan en pop\u00fcler ara\u00e7lardan biri de pgAdmin&#8217;dir. pgAdmin, PostgreSQL veritabanlar\u0131 i\u00e7in zengin \u00f6zelliklere sahip bir grafiksel kullan\u0131c\u0131 aray\u00fcz\u00fc (GUI) sunar.<\/p>\n<p>pgAdmin 4, \u00f6nceki s\u00fcr\u00fcmlerine g\u00f6re \u00f6nemli mimari de\u011fi\u015fiklikler getirmi\u015ftir. Bir web uygulamas\u0131 olarak tasarlanm\u0131\u015ft\u0131r ve hem masa\u00fcst\u00fc uygulamas\u0131 olarak (yerel bir web sunucusu ile) hem de merkezi bir sunucu \u00fczerinde (sunucu modu) \u00e7al\u0131\u015ft\u0131r\u0131labilir. Bu rehberde, pgAdmin 4&#8217;\u00fc Ubuntu 22.04 i\u015fletim sistemi \u00fczerinde sunucu modunda nas\u0131l kuraca\u011f\u0131m\u0131z\u0131 ve yap\u0131land\u0131raca\u011f\u0131m\u0131z\u0131 ad\u0131m ad\u0131m ele alaca\u011f\u0131z. Sunucu modu, birden fazla kullan\u0131c\u0131n\u0131n ayn\u0131 pgAdmin \u00f6rne\u011fine web taray\u0131c\u0131s\u0131 \u00fczerinden eri\u015fmesine olanak tan\u0131r, bu da ekip i\u00e7i i\u015fbirli\u011fini ve merkezi y\u00f6netimi kolayla\u015ft\u0131r\u0131r. Ayr\u0131ca, bu kurulumu Nginx ters proxy ve Let&#8217;s Encrypt ile SSL\/TLS \u015fifrelemesi kullanarak g\u00fcvenli hale getirece\u011fiz.<\/p>\n<h2>\u00d6n Gereksinimler<\/h2>\n<p>Bu rehberi takip edebilmek i\u00e7in a\u015fa\u011f\u0131daki \u00f6n gereksinimlere sahip olman\u0131z gerekmektedir:<\/p>\n<p>*   <strong>Ubuntu 22.04 Sunucusu:<\/strong> Temiz bir Ubuntu 22.04 LTS (Jammy Jellyfish) kurulumuna sahip, internete eri\u015fimi olan bir sunucu.<br \/>\n*   <strong>Sudo Yetkileri:<\/strong> Kurulum ve yap\u0131land\u0131rma ad\u0131mlar\u0131 i\u00e7in <code>sudo<\/code> yetkilerine sahip bir kullan\u0131c\u0131 hesab\u0131.<br \/>\n*   <strong>PostgreSQL Kurulumu:<\/strong> pgAdmin&#8217;in y\u00f6netece\u011fi bir veya daha fazla PostgreSQL veritaban\u0131 sunucusunun kurulu ve eri\u015filebilir olmas\u0131. Bu rehberde PostgreSQL kurulumu ele al\u0131nmayacakt\u0131r, ancak pgAdmin&#8217;in i\u015flevselli\u011fi i\u00e7in gereklidir.<br \/>\n*   <strong>Temel Linux Bilgisi:<\/strong> Komut sat\u0131r\u0131 kullan\u0131m\u0131 ve temel Linux dosya sistemi bilgisi.<br \/>\n*   <strong>Alan Ad\u0131:<\/strong> pgAdmin&#8217;e web \u00fczerinden eri\u015fmek i\u00e7in yap\u0131land\u0131r\u0131lm\u0131\u015f bir alan ad\u0131 (\u00f6rne\u011fin, <code>pgadmin.alanadiniz.com<\/code>). Let&#8217;s Encrypt ile SSL sertifikas\u0131 almak i\u00e7in bu gereklidir. E\u011fer bir alan ad\u0131n\u0131z yoksa, IP adresi \u00fczerinden eri\u015febilirsiniz, ancak SSL sertifikas\u0131 alamazs\u0131n\u0131z ve baz\u0131 ad\u0131mlar farkl\u0131l\u0131k g\u00f6sterebilir.<br \/>\n*   <strong>Sabit IP Adresi:<\/strong> Sunucunuzun sabit bir genel IP adresine sahip olmas\u0131 \u00f6nerilir.<\/p>\n<h2>Sistem G\u00fcncellemesi ve Temel Ba\u011f\u0131ml\u0131l\u0131klar\u0131n Kurulumu<\/h2>\n<p>Kuruluma ba\u015flamadan \u00f6nce, sistem paket listesini g\u00fcncelleyelim ve mevcut paketleri y\u00fckseltelim. Ayr\u0131ca pgAdmin&#8217;in ve di\u011fer bile\u015fenlerin d\u00fczg\u00fcn \u00e7al\u0131\u015fmas\u0131 i\u00e7in gerekli olabilecek baz\u0131 temel ba\u011f\u0131ml\u0131l\u0131klar\u0131 kural\u0131m.<\/p>\n<pre><code class=\"language-bash\">sudo apt update\nsudo apt upgrade -y<\/code><\/pre>\n<p>\u015eimdi, pgAdmin 4, Nginx, Certbot ve Gunicorn gibi ara\u00e7lar\u0131n kurulumu i\u00e7in gerekli olabilecek ek paketleri kural\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo apt install curl wget software-properties-common apt-transport-https build-essential python3-pip python3-dev libpq-dev -y<\/code><\/pre>\n<p>*   <code>curl<\/code>, <code>wget<\/code>: Dosya indirmek i\u00e7in kullan\u0131l\u0131r.<br \/>\n*   <code>software-properties-common<\/code>, <code>apt-transport-https<\/code>: APT depolar\u0131n\u0131 y\u00f6netmek i\u00e7in gereklidir.<br \/>\n*   <code>build-essential<\/code>, <code>python3-pip<\/code>, <code>python3-dev<\/code>, <code>libpq-dev<\/code>: Python tabanl\u0131 uygulamalar\u0131n (pgAdmin ve Gunicorn gibi) derlenmesi ve PostgreSQL ba\u011flant\u0131lar\u0131 i\u00e7in gerekli olan geli\u015ftirme ara\u00e7lar\u0131 ve k\u00fct\u00fcphaneleridir.<\/p>\n<h2>pgAdmin 4 Kurulumu<\/h2>\n<p>pgAdmin 4&#8217;\u00fc Ubuntu&#8217;ya kurman\u0131n en g\u00fcvenilir yolu, resmi pgAdmin APT deposunu kullanmakt\u0131r. Bu, en g\u00fcncel s\u00fcr\u00fcmleri alman\u0131z\u0131 ve paket y\u00f6neticisi arac\u0131l\u0131\u011f\u0131yla kolayca g\u00fcncelleme yapman\u0131z\u0131 sa\u011flar.<\/p>\n<h3>pgAdmin 4 Deposunun Eklenmesi<\/h3>\n<p>\u0130lk olarak, pgAdmin deposunun GPG anahtar\u0131n\u0131 sistemimize eklememiz gerekiyor. Bu, indirdi\u011fimiz paketlerin g\u00fcvenilir oldu\u011funu do\u011frulamam\u0131z\u0131 sa\u011flar.<\/p>\n<pre><code class=\"language-bash\">curl -fsSL https:\/\/www.pgadmin.org\/static\/packages_pgadmin_org.pub | sudo gpg --dearmor -o \/etc\/apt\/trusted.gpg.d\/pgadmin.gpg<\/code><\/pre>\n<p>Ard\u0131ndan, pgAdmin 4 deposunu APT kaynak listemize ekleyelim. Ubuntu 22.04 i\u00e7in <code>jammy<\/code> kod ad\u0131n\u0131 kullanaca\u011f\u0131z.<\/p>\n<pre><code class=\"language-bash\">sudo sh -c 'echo \"deb https:\/\/ftp.postgresql.org\/pub\/pgadmin\/pgadmin4\/apt\/jammy pgadmin4 main\" > \/etc\/apt\/sources.list.d\/pgadmin4.list'<\/code><\/pre>\n<p>Depoyu ekledikten sonra, paket listemizi tekrar g\u00fcncelleyelim ki sistem yeni depoyu tan\u0131s\u0131n.<\/p>\n<pre><code class=\"language-bash\">sudo apt update<\/code><\/pre>\n<h3>pgAdmin 4 Paketlerinin Kurulumu<\/h3>\n<p>Art\u0131k pgAdmin 4 paketini kurabiliriz. Sunucu modunda \u00e7al\u0131\u015ft\u0131raca\u011f\u0131m\u0131z i\u00e7in, <code>pgadmin4-web<\/code> paketini tercih edece\u011fiz. Bu paket, pgAdmin&#8217;in web aray\u00fcz\u00fc bile\u015fenlerini Apache veya ba\u015fka bir web sunucusu ba\u011f\u0131ml\u0131l\u0131\u011f\u0131 olmadan kurar, bu da Nginx ve Gunicorn ile \u00f6zel bir kurulum i\u00e7in idealdir.<\/p>\n<pre><code class=\"language-bash\">sudo apt install pgadmin4-web -y<\/code><\/pre>\n<p>Bu komut, pgAdmin 4&#8217;\u00fcn temel web bile\u015fenlerini ve gerekli Python ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 kuracakt\u0131r. Kurulum tamamland\u0131ktan sonra, pgAdmin 4 dosyalar\u0131 genellikle <code>\/usr\/pgadmin4\/web<\/code> dizininde bulunur.<\/p>\n<h2>pgAdmin 4 Sunucu Modu Yap\u0131land\u0131rmas\u0131<\/h2>\n<p>pgAdmin 4&#8217;\u00fc sunucu modunda \u00e7al\u0131\u015ft\u0131rmak i\u00e7in baz\u0131 temel yap\u0131land\u0131rma de\u011fi\u015fiklikleri yapmam\u0131z gerekiyor. Bu de\u011fi\u015fiklikler genellikle <code>config_local.py<\/code> dosyas\u0131nda yap\u0131l\u0131r.<\/p>\n<h3>Yap\u0131land\u0131rma Dosyalar\u0131na Genel Bak\u0131\u015f<\/h3>\n<p>pgAdmin 4, yap\u0131land\u0131rma i\u00e7in birden fazla dosya kullan\u0131r:<br \/>\n*   <code>\/usr\/pgadmin4\/web\/config.py<\/code>: Ana da\u011f\u0131t\u0131m yap\u0131land\u0131rma dosyas\u0131d\u0131r. Bu dosyay\u0131 do\u011frudan d\u00fczenlememelisiniz, \u00e7\u00fcnk\u00fc g\u00fcncellemelerle \u00fczerine yaz\u0131labilir.<br \/>\n*   <code>\/usr\/pgadmin4\/web\/config_distro.py<\/code>: Da\u011f\u0131t\u0131ma \u00f6zel ek yap\u0131land\u0131rmalar i\u00e7erir.<br \/>\n*   <code>\/etc\/pgadmin4\/config_local.py<\/code>: Yerel ve \u00f6zel yap\u0131land\u0131rmalar\u0131n\u0131z\u0131 yapman\u0131z gereken yer buras\u0131d\u0131r. Bu dosya, <code>config.py<\/code> ve <code>config_distro.py<\/code> dosyalar\u0131ndaki ayarlar\u0131 ge\u00e7ersiz k\u0131lar.<\/p>\n<p>Bu rehberde, <code>\/etc\/pgadmin4\/config_local.py<\/code> dosyas\u0131n\u0131 olu\u015fturarak veya d\u00fczenleyerek pgAdmin 4&#8217;\u00fc yap\u0131land\u0131raca\u011f\u0131z.<\/p>\n<h3>Temel Ayarlar<\/h3>\n<p>\u015eimdi <code>\/etc\/pgadmin4\/config_local.py<\/code> dosyas\u0131n\u0131 olu\u015ftural\u0131m ve a\u015fa\u011f\u0131daki temel ayarlar\u0131 ekleyelim.<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/pgadmin4\/config_local.py<\/code><\/pre>\n<p>Dosyaya a\u015fa\u011f\u0131daki i\u00e7eri\u011fi ekleyin:<\/p>\n<pre><code class=\"language-python\"># pgAdmin 4 sunucu modu yap\u0131land\u0131rmas\u0131\n\n<h2>Sunucu modunu etkinle\u015ftir<\/h2>\nSERVER_MODE = True\n\n<h2>pgAdmin'in veritaban\u0131 dosyalar\u0131n\u0131n saklanaca\u011f\u0131 dizin (SQLite)<\/h2>\n<h2>Bu dizin pgAdmin kullan\u0131c\u0131s\u0131 taraf\u0131ndan yaz\u0131labilir olmal\u0131<\/h2>\nSQLITE_PATH = '\/var\/lib\/pgadmin4\/pgadmin4.db'\n\n<h2>G\u00fcnl\u00fck dosyas\u0131 yolu<\/h2>\nLOG_FILE = '\/var\/log\/pgadmin4\/pgadmin4.log'\n\n<h2>Oturum dosyalar\u0131n\u0131n saklanaca\u011f\u0131 dizin<\/h2>\nSESSION_DB_PATH = '\/var\/lib\/pgadmin4\/sessions'\n\n<h2>Depolama dizini (\u00f6rne\u011fin, yedekleme dosyalar\u0131 i\u00e7in)<\/h2>\nSTORAGE_DIR = '\/var\/lib\/pgadmin4\/storage'\n\n<h2>CSRF (Cross-Site Request Forgery) korumas\u0131 i\u00e7in gizli anahtar<\/h2>\n<h2>Bu anahtar\u0131 rastgele ve g\u00fc\u00e7l\u00fc bir de\u011ferle de\u011fi\u015ftirin.<\/h2>\n<h2>Python'da secrets.token_hex(16) ile olu\u015fturabilirsiniz.<\/h2>\nCSRF_SESSION_KEY = 'Sizin_Cok_Guclu_Ve_Rastgele_CSRF_Anahtar\u0131n\u0131z_Buraya_Gelecek'\n\n<h2>Flask uygulamas\u0131 i\u00e7in gizli anahtar (g\u00fcvenlik i\u00e7in \u00e7ok \u00f6nemli)<\/h2>\n<h2>Bu anahtar\u0131 rastgele ve g\u00fc\u00e7l\u00fc bir de\u011ferle de\u011fi\u015ftirin.<\/h2>\n<h2>Python'da os.urandom(24).hex() ile olu\u015fturabilirsiniz.<\/h2>\nSECRET_KEY = 'Sizin_Cok_Guclu_Ve_Rastgele_SECRET_Anahtar\u0131n\u0131z_Buraya_Gelecek'\n\n<h2>Kimlik do\u011frulama modunu ayarlay\u0131n (\u00f6rne\u011fin, 'web' varsay\u0131lan web oturum a\u00e7ma i\u00e7in)<\/h2>\nAUTHENTICATION_SOURCES = ['web']\n\n<h2>Varsay\u0131lan sunucu adresini ayarlay\u0131n (Gunicorn'un dinleyece\u011fi adres)<\/h2>\n<h2>Gunicorn'u Nginx arkas\u0131nda \u00e7al\u0131\u015ft\u0131raca\u011f\u0131m\u0131z i\u00e7in 127.0.0.1 yeterlidir.<\/h2>\nDEFAULT_SERVER = '127.0.0.1'\n\n<h2>Varsay\u0131lan sunucu portu (Gunicorn'un dinleyece\u011fi port)<\/h2>\nDEFAULT_SERVER_PORT = 5050\n\n<h2>Oturum \u00e7erezi i\u00e7in SameSite politikas\u0131<\/h2>\n<h2>G\u00fcvenlik i\u00e7in 'Lax' veya 'Strict' \u00f6nerilir<\/h2>\nSESSION_COOKIE_SAMESITE = 'Lax'\n\n<h2>Debug modunu kapat\u0131n (\u00fcretim ortam\u0131nda False olmal\u0131)<\/h2>\nDEBUG = False\n\n<h2>E\u011fer Apache ile birlikte gelirse, Apache yap\u0131land\u0131rmas\u0131n\u0131 devre d\u0131\u015f\u0131 b\u0131rakmak i\u00e7in<\/h2>\n<h2>ENABLE_WEB_SERVER = False # Bu sat\u0131r\u0131 eklemek, pgadmin4-apache2 paketi kurulduysa i\u015fe yarar.<\/code><\/pre>\n<\/h2>\n<p><strong>\u00d6NEML\u0130:<\/strong> <code>CSRF_SESSION_KEY<\/code> ve <code>SECRET_KEY<\/code> de\u011ferlerini kesinlikle rastgele ve g\u00fc\u00e7l\u00fc de\u011ferlerle de\u011fi\u015ftirmeniz gerekmektedir. Bu anahtarlar\u0131 olu\u015fturmak i\u00e7in Python&#8217;\u0131 kullanabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">python3 -c 'import secrets; print(secrets.token_hex(16))'\n<h2>\u00c7\u0131kt\u0131: Rastgele bir 32 karakterli hex dizesi (CSRF_SESSION_KEY i\u00e7in)<\/h2>\n\npython3 -c 'import os; print(os.urandom(24).hex())'\n<h2>\u00c7\u0131kt\u0131: Rastgele bir 48 karakterli hex dizesi (SECRET_KEY i\u00e7in)<\/code><\/pre>\n<\/h2>\n<p>\u00dcretilen de\u011ferleri <code>config_local.py<\/code> dosyas\u0131ndaki ilgili sat\u0131rlara yap\u0131\u015ft\u0131r\u0131n.<\/p>\n<p>Yap\u0131land\u0131rma dosyalar\u0131n\u0131 kaydettikten sonra, pgAdmin&#8217;in kullanaca\u011f\u0131 dizinleri olu\u015ftural\u0131m ve do\u011fru izinleri atayal\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo mkdir -p \/var\/lib\/pgadmin4\/sessions\nsudo mkdir -p \/var\/lib\/pgadmin4\/storage\nsudo mkdir -p \/var\/log\/pgadmin4\nsudo chown -R pgadmin:pgadmin \/var\/lib\/pgadmin4\nsudo chown -R pgadmin:pgadmin \/var\/log\/pgadmin4\nsudo chmod -R 700 \/var\/lib\/pgadmin4\nsudo chmod -R 700 \/var\/log\/pgadmin4<\/code><\/pre>\n<p><code>pgadmin<\/code> kullan\u0131c\u0131s\u0131, <code>pgadmin4-web<\/code> paketi y\u00fcklendi\u011finde otomatik olarak olu\u015fturulur. Bu kullan\u0131c\u0131, pgAdmin uygulamas\u0131n\u0131n \u00e7al\u0131\u015faca\u011f\u0131 kullan\u0131c\u0131d\u0131r ve bu dizinlere yazma yetkisine sahip olmal\u0131d\u0131r.<\/p>\n<h3>Kullan\u0131c\u0131 Kimlik Do\u011frulama<\/h3>\n<p>pgAdmin 4&#8217;\u00fc ilk kez sunucu modunda ba\u015flatt\u0131\u011f\u0131n\u0131zda, bir y\u00f6netici kullan\u0131c\u0131 hesab\u0131 olu\u015fturman\u0131z gerekir. Bu hesap, web aray\u00fcz\u00fcne giri\u015f yapmak i\u00e7in kullan\u0131lacakt\u0131r.<\/p>\n<pre><code class=\"language-bash\">sudo \/usr\/pgadmin4\/bin\/setup-web.sh<\/code><\/pre>\n<p>Bu komut sizden bir e-posta adresi ve bir parola girmenizi isteyecektir. Bu bilgilerle pgAdmin&#8217;e giri\u015f yapacaks\u0131n\u0131z.<\/p>\n<pre><code class=\"language-\">Setting up pgAdmin 4 in web mode:\nNOTE: Configuring pgAdmin 4 for web mode only.\nPlease enter the email address and password to set up the admin user account.\nYou can change them later in the pgAdmin 4 interface.\nEmail address: admin@your_domain.com\nPassword:\nRetype password:<\/code><\/pre>\n<p>E-posta adresi olarak ger\u00e7ek bir adres kullanman\u0131z \u00f6nerilir.<\/p>\n<h2>Gunicorn ile pgAdmin 4 \u00c7al\u0131\u015ft\u0131rma<\/h2>\n<p>pgAdmin 4 bir Python WSGI (Web Server Gateway Interface) uygulamas\u0131d\u0131r. \u00dcretim ortam\u0131nda do\u011frudan Flask&#8217;\u0131n yerle\u015fik sunucusu yerine Gunicorn gibi sa\u011flam bir WSGI sunucusu kullanmak daha iyidir. Gunicorn, e\u015fzamanl\u0131 ba\u011flant\u0131lar\u0131 daha iyi y\u00f6netir ve daha kararl\u0131 bir performans sunar.<\/p>\n<h3>Gunicorn Kurulumu<\/h3>\n<p>Gunicorn&#8217;u Python&#8217;\u0131n pip paket y\u00f6neticisi arac\u0131l\u0131\u011f\u0131yla kural\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo pip install gunicorn<\/code><\/pre>\n<h3>pgAdmin 4 WSGI Uygulamas\u0131n\u0131 Bulma<\/h3>\n<p>pgAdmin 4&#8217;\u00fcn WSGI giri\u015f noktas\u0131 genellikle <code>\/usr\/pgadmin4\/web\/pgAdmin4.py<\/code> dosyas\u0131ndad\u0131r. Gunicorn bu dosyay\u0131 kullanarak uygulamay\u0131 ba\u015flatacakt\u0131r.<\/p>\n<h3>Systemd Servisi Olu\u015fturma<\/h3>\n<p>Gunicorn&#8217;u manuel olarak \u00e7al\u0131\u015ft\u0131rmak yerine, Systemd kullanarak bir servis olarak \u00e7al\u0131\u015ft\u0131rmak en iyi yakla\u015f\u0131md\u0131r. Bu, sunucu yeniden ba\u015flat\u0131ld\u0131\u011f\u0131nda pgAdmin&#8217;in otomatik olarak ba\u015flamas\u0131n\u0131 sa\u011flar ve servis y\u00f6netimini kolayla\u015ft\u0131r\u0131r.<\/p>\n<p><code>\/etc\/systemd\/system\/pgadmin4.service<\/code> ad\u0131nda bir Systemd servis dosyas\u0131 olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/systemd\/system\/pgadmin4.service<\/code><\/pre>\n<p>Dosyaya a\u015fa\u011f\u0131daki i\u00e7eri\u011fi ekleyin:<\/p>\n<pre><code class=\"language-ini\">[Unit]\nDescription=pgAdmin 4 - PostgreSQL Tools Web Application\nAfter=network.target\n\n[Service]\nUser=pgadmin\nGroup=pgadmin\nWorkingDirectory=\/usr\/pgadmin4\/web\nEnvironment=\"PATH=\/usr\/bin:\/usr\/local\/bin\"\nExecStart=\/usr\/local\/bin\/gunicorn --workers 3 --bind 127.0.0.1:5050 pgAdmin4:app\nRestart=always\n\n[Install]\nWantedBy=multi-user.target<\/code><\/pre>\n<p>Yukar\u0131daki yap\u0131land\u0131rmay\u0131 a\u00e7\u0131klayal\u0131m:<br \/>\n*   <code>[Unit]<\/code>: Servisin tan\u0131m\u0131n\u0131 ve ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 belirtir. <code>After=network.target<\/code> ile a\u011f\u0131n ba\u015flat\u0131lmas\u0131ndan sonra ba\u015flamas\u0131n\u0131 sa\u011flar.<br \/>\n*   <code>[Service]<\/code>: Servisin nas\u0131l \u00e7al\u0131\u015ft\u0131r\u0131laca\u011f\u0131n\u0131 tan\u0131mlar.<br \/>\n    *   <code>User=pgadmin<\/code>, <code>Group=pgadmin<\/code>: pgAdmin uygulamas\u0131n\u0131 <code>pgadmin<\/code> kullan\u0131c\u0131s\u0131 ve grubu alt\u0131nda \u00e7al\u0131\u015ft\u0131r\u0131r\u0131z. Bu, g\u00fcvenlik i\u00e7in iyi bir uygulamad\u0131r.<br \/>\n    *   <code>WorkingDirectory=\/usr\/pgadmin4\/web<\/code>: Gunicorn&#8217;un \u00e7al\u0131\u015faca\u011f\u0131 dizini belirtir.<br \/>\n    *   <code>Environment=\"PATH=...\"<\/code>: Gunicorn&#8217;un do\u011fru PATH ortam de\u011fi\u015fkenine sahip olmas\u0131n\u0131 sa\u011flar.<br \/>\n    *   <code>ExecStart=\/usr\/local\/bin\/gunicorn ...<\/code>: Gunicorn&#8217;u ba\u015flatmak i\u00e7in kullan\u0131lan komut.<br \/>\n        <em>   <code>--workers 3<\/code>: Gunicorn&#8217;un 3 i\u015f\u00e7i s\u00fcreciyle \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar. Bu de\u011fer sunucunuzun CPU \u00e7ekirde\u011fi say\u0131s\u0131na g\u00f6re ayarlanabilir (genellikle <code>2 <\/em> CPU_\u00e7ekirdek_say\u0131s\u0131 + 1<\/code> \u00f6nerilir).<br \/>\n        *   <code>--bind 127.0.0.1:5050<\/code>: Gunicorn&#8217;un sadece yerel aray\u00fczde (localhost) 5050 portunu dinlemesini sa\u011flar. Nginx bu porta proxy yapacakt\u0131r.<br \/>\n        *   <code>pgAdmin4:app<\/code>: pgAdmin 4&#8217;\u00fcn WSGI uygulamas\u0131n\u0131 belirtir. <code>\/usr\/pgadmin4\/web\/pgAdmin4.py<\/code> dosyas\u0131ndaki <code>app<\/code> objesini kullan\u0131r.<br \/>\n    *   <code>Restart=always<\/code>: Herhangi bir nedenle servis durdu\u011funda Systemd&#8217;nin otomatik olarak yeniden ba\u015flatmas\u0131n\u0131 sa\u011flar.<br \/>\n*   <code>[Install]<\/code>: Servisin hangi hedef taraf\u0131ndan etkinle\u015ftirilece\u011fini belirtir. <code>WantedBy=multi-user.target<\/code> ile \u00e7ok kullan\u0131c\u0131l\u0131 modda otomatik olarak ba\u015flamas\u0131n\u0131 sa\u011flar.<\/p>\n<p>Dosyay\u0131 kaydedip kapatt\u0131ktan sonra, Systemd&#8217;yi yeni servisi tan\u0131mas\u0131 i\u00e7in yeniden y\u00fcklemeliyiz:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl daemon-reload<\/code><\/pre>\n<p>\u015eimdi pgAdmin 4 servisini ba\u015flatal\u0131m ve sistem ba\u015flang\u0131c\u0131nda otomatik olarak ba\u015flamas\u0131n\u0131 sa\u011flayal\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl start pgadmin4\nsudo systemctl enable pgadmin4<\/code><\/pre>\n<p>Servisin durumunu kontrol ederek d\u00fczg\u00fcn \u00e7al\u0131\u015f\u0131p \u00e7al\u0131\u015fmad\u0131\u011f\u0131n\u0131 do\u011frulayabiliriz:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl status pgadmin4<\/code><\/pre>\n<p>Durum <code>active (running)<\/code> olarak g\u00f6r\u00fcnmelidir. Herhangi bir hata varsa, <code>journalctl -u pgadmin4.service<\/code> komutuyla g\u00fcnl\u00fckleri inceleyebilirsiniz.<\/p>\n<h2>Nginx ile Ters Proxy Yap\u0131land\u0131rmas\u0131<\/h2>\n<p>Gunicorn do\u011frudan internete a\u00e7\u0131k olmamal\u0131d\u0131r. Nginx&#8217;i bir ters proxy olarak kullanarak, gelen web isteklerini Nginx&#8217;in i\u015flemesini ve ard\u0131ndan bu istekleri Gunicorn&#8217;a iletmesini sa\u011flayaca\u011f\u0131z. Nginx ayr\u0131ca SSL\/TLS \u015fifrelemesini y\u00f6netmek i\u00e7in de kullan\u0131lacakt\u0131r.<\/p>\n<h3>Nginx Kurulumu<\/h3>\n<p>Nginx&#8217;i Ubuntu paket y\u00f6neticisi arac\u0131l\u0131\u011f\u0131yla kural\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo apt install nginx -y<\/code><\/pre>\n<p>Kurulumdan sonra Nginx servisi otomatik olarak ba\u015flar. Durumunu kontrol edebilirsiniz: <code>sudo systemctl status nginx<\/code>.<\/p>\n<h3>Nginx Sanal Host Yap\u0131land\u0131rmas\u0131<\/h3>\n<p>\u015eimdi pgAdmin 4 i\u00e7in bir Nginx sanal host (server block) yap\u0131land\u0131rmas\u0131 olu\u015ftural\u0131m. <code>your_domain.com<\/code> yerine kendi alan ad\u0131n\u0131z\u0131 kullanmay\u0131 unutmay\u0131n.<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/nginx\/sites-available\/pgadmin4<\/code><\/pre>\n<p>Dosyaya a\u015fa\u011f\u0131daki i\u00e7eri\u011fi ekleyin:<\/p>\n<pre><code class=\"language-nginx\">server {\n    listen 80;\n    server_name pgadmin.alanadiniz.com; # Kendi alan ad\u0131n\u0131z\u0131 buraya yaz\u0131n\n\n    # HTTP isteklerini HTTPS'e y\u00f6nlendir (Certbot kurulduktan sonra otomatik olarak g\u00fcncellenecek)\n    return 301 https:\/\/$host$request_uri;\n}\n\nserver {\n    listen 443 ssl http2;\n    server_name pgadmin.alanadiniz.com; # Kendi alan ad\u0131n\u0131z\u0131 buraya yaz\u0131n\n\n    ssl_certificate \/etc\/letsencrypt\/live\/pgadmin.alanadiniz.com\/fullchain.pem; # Certbot olu\u015fturacak\n    ssl_key \/etc\/letsencrypt\/live\/pgadmin.alanadiniz.com\/privkey.pem;       # Certbot olu\u015fturacak\n    ssl_session_cache shared:SSL:10m;\n    ssl_session_timeout 10m;\n    ssl_protocols TLSv1.2 TLSv1.3;\n    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\";\n    ssl_prefer_server_ciphers on;\n\n    # HSTS (HTTP Strict Transport Security)\n    add_header Strict-Transport-Security \"max-age=63072000; includeSubDomains; preload\";\n\n    # G\u00fcvenlik ba\u015fl\u0131klar\u0131\n    add_header X-Frame-Options \"SAMEORIGIN\";\n    add_header X-Content-Type-Options \"nosniff\";\n    add_header X-XSS-Protection \"1; mode=block\";\n\n    location \/ {\n        proxy_pass http:\/\/127.0.0.1:5050; # Gunicorn'un dinledi\u011fi adres ve port\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n        proxy_redirect off;\n        proxy_buffering off; # Gunicorn ile ger\u00e7ek zamanl\u0131 ileti\u015fimi sa\u011flar\n    }\n\n    # Statik dosyalar i\u00e7in ayr\u0131 bir location blo\u011fu tan\u0131mlanabilir\n    # pgAdmin 4'\u00fcn statik dosyalar\u0131 genellikle \/usr\/pgadmin4\/web\/pgadmin\/static dizinindedir.\n    # Bu, Nginx'in statik dosyalar\u0131 do\u011frudan sunarak Gunicorn \u00fczerindeki y\u00fck\u00fc azaltmas\u0131n\u0131 sa\u011flar.\n    location \/static\/ {\n        alias \/usr\/pgadmin4\/web\/pgadmin\/static\/;\n        expires 30d;\n        add_header Cache-Control \"public, no-transform\";\n    }\n\n    error_page 500 502 503 504 \/50x.html;\n    location = \/50x.html {\n        root \/usr\/share\/nginx\/html;\n    }\n}<\/code><\/pre>\n<p><strong>Not:<\/strong> \u0130lk <code>server<\/code> blo\u011fu, HTTP isteklerini HTTPS&#8217;e y\u00f6nlendirmek i\u00e7indir. SSL sertifikas\u0131n\u0131 Certbot ile ald\u0131ktan sonra Certbot bu blo\u011fu otomatik olarak g\u00fcncelleyecektir. <code>ssl_certificate<\/code> ve <code>ssl_key<\/code> yollar\u0131 da Certbot taraf\u0131ndan olu\u015fturulan yollara i\u015faret edecektir. \u015eimdilik bu yollar\u0131n var olmad\u0131\u011f\u0131n\u0131 unutmay\u0131n.<\/p>\n<h3>Yap\u0131land\u0131rmay\u0131 Etkinle\u015ftirme<\/h3>\n<p>Olu\u015fturdu\u011fumuz sanal host yap\u0131land\u0131rmas\u0131n\u0131 etkinle\u015ftirmek i\u00e7in, <code>sites-available<\/code> dizininden <code>sites-enabled<\/code> dizinine bir sembolik ba\u011flant\u0131 olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo ln -s \/etc\/nginx\/sites-available\/pgadmin4 \/etc\/nginx\/sites-enabled\/<\/code><\/pre>\n<p>Varsay\u0131lan Nginx yap\u0131land\u0131rmas\u0131n\u0131 devre d\u0131\u015f\u0131 b\u0131rakal\u0131m, b\u00f6ylece \u00e7ak\u0131\u015fma olmaz:<\/p>\n<pre><code class=\"language-bash\">sudo unlink \/etc\/nginx\/sites-enabled\/default<\/code><\/pre>\n<p>Nginx yap\u0131land\u0131rma dosyas\u0131nda s\u00f6zdizimi hatas\u0131 olup olmad\u0131\u011f\u0131n\u0131 kontrol edelim:<\/p>\n<pre><code class=\"language-bash\">sudo nginx -t<\/code><\/pre>\n<p>E\u011fer <code>syntax is ok<\/code> ve <code>test is successful<\/code> mesajlar\u0131n\u0131 al\u0131rsan\u0131z, Nginx&#8217;i yeniden ba\u015flatarak yeni yap\u0131land\u0131rmay\u0131 uygulayabiliriz:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl restart nginx<\/code><\/pre>\n<h2>SSL\/TLS \u015eifrelemesi (Let&#8217;s Encrypt ile)<\/h2>\n<p>Web trafi\u011fini g\u00fcvence alt\u0131na almak i\u00e7in Let&#8217;s Encrypt arac\u0131l\u0131\u011f\u0131yla \u00fccretsiz bir SSL\/TLS sertifikas\u0131 alaca\u011f\u0131z. Certbot arac\u0131 bu s\u00fcreci otomatikle\u015ftirecektir.<\/p>\n<h3>Certbot Kurulumu<\/h3>\n<p>Certbot ve Nginx eklentisini kural\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo apt install certbot python3-certbot-nginx -y<\/code><\/pre>\n<h3>SSL Sertifikas\u0131 Alma<\/h3>\n<p>\u015eimdi Certbot&#8217;u \u00e7al\u0131\u015ft\u0131rarak alan ad\u0131n\u0131z i\u00e7in SSL sertifikas\u0131 alal\u0131m. <code>pgadmin.alanadiniz.com<\/code> yerine kendi alan ad\u0131n\u0131z\u0131 yaz\u0131n.<\/p>\n<pre><code class=\"language-bash\">sudo certbot --nginx -d pgadmin.alanadiniz.com<\/code><\/pre>\n<p>Certbot sizden baz\u0131 bilgiler isteyecek (e-posta, hizmet \u015fartlar\u0131n\u0131 kabul etme vb.). \u0130\u015flemi tamamlad\u0131\u011f\u0131n\u0131zda, Certbot Nginx yap\u0131land\u0131rman\u0131z\u0131 otomatik olarak g\u00fcncelleyecek ve SSL sertifikas\u0131n\u0131 y\u00fckleyecektir.<\/p>\n<p>Certbot&#8217;un sertifikalar\u0131 otomatik olarak yenilemek i\u00e7in bir cronjob veya Systemd zamanlay\u0131c\u0131 kurdu\u011funu do\u011frulayabilirsiniz. Yenileme i\u015flemini test etmek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">sudo certbot renew --dry-run<\/code><\/pre>\n<p>Bu komut, sertifika yenileme i\u015flemini ger\u00e7ek bir de\u011fi\u015fiklik yapmadan sim\u00fcle eder. Ba\u015far\u0131l\u0131 olursa, sertifikalar\u0131n\u0131z\u0131n s\u00fcresi doldu\u011funda otomatik olarak yenilenece\u011finden emin olabilirsiniz.<\/p>\n<h2>G\u00fcvenlik Duvar\u0131 (UFW) Yap\u0131land\u0131rmas\u0131<\/h2>\n<p>Sunucunuzu g\u00fcvende tutmak i\u00e7in bir g\u00fcvenlik duvar\u0131 (firewall) kullanmak \u00e7ok \u00f6nemlidir. Ubuntu&#8217;da UFW (Uncomplicated Firewall) bunu kolayla\u015ft\u0131r\u0131r.<\/p>\n<h3>UFW Kurulumu ve Temel Ayarlar<\/h3>\n<p>UFW genellikle Ubuntu&#8217;da \u00f6nceden y\u00fckl\u00fcd\u00fcr, ancak kurulu de\u011filse kurabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo apt install ufw -y<\/code><\/pre>\n<p>Varsay\u0131lan olarak gelen t\u00fcm ba\u011flant\u0131lar\u0131 reddedip giden t\u00fcm ba\u011flant\u0131lara izin verelim:<\/p>\n<pre><code class=\"language-bash\">sudo ufw default deny incoming\nsudo ufw default allow outgoing<\/code><\/pre>\n<h3>Gerekli Portlar\u0131n A\u00e7\u0131lmas\u0131<\/h3>\n<p>\u015eimdi SSH, HTTP (80) ve HTTPS (443) ba\u011flant\u0131lar\u0131na izin verelim:<\/p>\n<pre><code class=\"language-bash\">sudo ufw allow OpenSSH\nsudo ufw allow 'Nginx Full'<\/code><\/pre>\n<p><code>Nginx Full<\/code>, Nginx&#8217;in hem HTTP (80) hem de HTTPS (443) portlar\u0131n\u0131 kapsayan bir uygulama profilidir.<\/p>\n<p>G\u00fcvenlik duvar\u0131n\u0131 etkinle\u015ftirelim:<\/p>\n<pre><code class=\"language-bash\">sudo ufw enable<\/code><\/pre>\n<p>Devam etmek isteyip istemedi\u011finiz soruldu\u011funda <code>y<\/code> yaz\u0131p Enter tu\u015funa bas\u0131n.<\/p>\n<p>UFW durumunu kontrol ederek kurallar\u0131n do\u011fru bir \u015fekilde uyguland\u0131\u011f\u0131n\u0131 do\u011frulayabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo ufw status<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131, SSH, HTTP ve HTTPS ba\u011flant\u0131lar\u0131na izin verildi\u011fini g\u00f6stermelidir.<\/p>\n<h2>pgAdmin 4&#8217;e Eri\u015fim ve \u0130lk Yap\u0131land\u0131rma<\/h2>\n<p>T\u00fcm kurulum ve yap\u0131land\u0131rma ad\u0131mlar\u0131n\u0131 tamamlad\u0131\u011f\u0131n\u0131za g\u00f6re, pgAdmin 4 web aray\u00fcz\u00fcne eri\u015febilirsiniz.<\/p>\n<p>Web taray\u0131c\u0131n\u0131z\u0131 a\u00e7\u0131n ve <code>https:\/\/pgadmin.alanadiniz.com<\/code> adresine gidin (kendi alan ad\u0131n\u0131z\u0131 kullanarak).<br \/>\nCertbot taraf\u0131ndan sa\u011flanan SSL sertifikas\u0131 sayesinde ba\u011flant\u0131n\u0131z g\u00fcvenli olacakt\u0131r.<\/p>\n<p>pgAdmin 4 oturum a\u00e7ma ekran\u0131n\u0131 g\u00f6rmelisiniz. <code>setup-web.sh<\/code> komutuyla olu\u015fturdu\u011funuz y\u00f6netici e-posta adresi ve parolas\u0131yla giri\u015f yap\u0131n.<\/p>\n<p>Giri\u015f yapt\u0131ktan sonra, pgAdmin 4&#8217;\u00fcn ana kontrol panelini g\u00f6receksiniz. \u015eimdi PostgreSQL sunucular\u0131n\u0131z\u0131 ekleyebilirsiniz:<br \/>\n1.  Sol paneldeki &#8220;Servers&#8221; (Sunucular) \u00f6\u011fesine sa\u011f t\u0131klay\u0131n ve &#8220;Create&#8221; (Olu\u015ftur) -> &#8220;Server&#8230;&#8221; (Sunucu&#8230;) se\u00e7ene\u011fini se\u00e7in.<br \/>\n2.  &#8220;General&#8221; (Genel) sekmesinde sunucu i\u00e7in bir isim girin (\u00f6rne\u011fin, &#8220;Yerel PostgreSQL Sunucusu&#8221;).<br \/>\n3.  &#8220;Connection&#8221; (Ba\u011flant\u0131) sekmesine gidin.<br \/>\n    *   <strong>Host name\/address:<\/strong> PostgreSQL sunucunuzun IP adresi veya ana bilgisayar ad\u0131. E\u011fer pgAdmin ile ayn\u0131 sunucudaysa <code>localhost<\/code> veya <code>127.0.0.1<\/code> kullanabilirsiniz.<br \/>\n    *   <strong>Port:<\/strong> PostgreSQL&#8217;in dinledi\u011fi port (varsay\u0131lan 5432).<br \/>\n    *   <strong>Maintenance database:<\/strong> <code>postgres<\/code> veya ba\u015fka bir bak\u0131m veritaban\u0131.<br \/>\n    *   <strong>Username:<\/strong> PostgreSQL&#8217;e ba\u011flanmak i\u00e7in kullan\u0131lacak kullan\u0131c\u0131 ad\u0131 (\u00f6rne\u011fin, <code>postgres<\/code>).<br \/>\n    *   <strong>Password:<\/strong> PostgreSQL kullan\u0131c\u0131s\u0131n\u0131n parolas\u0131.<br \/>\n4.  &#8220;Save&#8221; (Kaydet) d\u00fc\u011fmesine t\u0131klay\u0131n.<\/p>\n<p>pgAdmin 4, sunucunuza ba\u011flanacak ve veritabanlar\u0131n\u0131z\u0131, tablolar\u0131n\u0131z\u0131, sorgular\u0131n\u0131z\u0131 ve daha fazlas\u0131n\u0131 y\u00f6netmenize olanak tan\u0131yacakt\u0131r.<\/p>\n<h2>Sorun Giderme ve \u0130pu\u00e7lar\u0131<\/h2>\n<p>Kurulum s\u0131ras\u0131nda veya sonras\u0131nda kar\u015f\u0131la\u015fabilece\u011finiz baz\u0131 yayg\u0131n sorunlar ve \u00e7\u00f6z\u00fcmleri:<\/p>\n<p>*   <strong>pgAdmin&#8217;e eri\u015femiyorum:<\/strong><br \/>\n    *   <strong>G\u00fcvenlik Duvar\u0131:<\/strong> UFW kurallar\u0131n\u0131z\u0131 kontrol edin (<code>sudo ufw status<\/code>). HTTP\/HTTPS portlar\u0131n\u0131n a\u00e7\u0131k oldu\u011fundan emin olun.<br \/>\n    *   <strong>Nginx:<\/strong> Nginx servisi \u00e7al\u0131\u015f\u0131yor mu? (<code>sudo systemctl status nginx<\/code>). Nginx yap\u0131land\u0131rman\u0131z do\u011fru mu? (<code>sudo nginx -t<\/code>). Nginx hata g\u00fcnl\u00fcklerini kontrol edin (<code>sudo tail -f \/var\/log\/nginx\/error.log<\/code>).<br \/>\n    *   <strong>Gunicorn\/pgAdmin:<\/strong> pgAdmin4 servisi \u00e7al\u0131\u015f\u0131yor mu? (<code>sudo systemctl status pgadmin4<\/code>). pgAdmin g\u00fcnl\u00fcklerini kontrol edin (<code>sudo tail -f \/var\/log\/pgadmin4\/pgadmin4.log<\/code>) veya Systemd g\u00fcnl\u00fcklerini (<code>sudo journalctl -u pgadmin4.service<\/code>). Gunicorn&#8217;un do\u011fru portu dinledi\u011finden emin olun.<br \/>\n    *   <strong>Alan Ad\u0131\/DNS:<\/strong> Alan ad\u0131n\u0131z\u0131n sunucunuzun IP adresine do\u011fru \u015fekilde i\u015faret etti\u011finden emin olun.<br \/>\n*   <strong>502 Bad Gateway Hatas\u0131:<\/strong> Genellikle Nginx&#8217;in Gunicorn&#8217;a ba\u011flanamad\u0131\u011f\u0131 anlam\u0131na gelir. Gunicorn servisi \u00e7al\u0131\u015f\u0131yor mu? Gunicorn&#8217;un Nginx yap\u0131land\u0131rman\u0131zdaki proxy_pass ile ayn\u0131 adresi ve portu dinledi\u011finden emin olun.<br \/>\n*   <strong>500 Internal Server Error:<\/strong> pgAdmin uygulamas\u0131n\u0131n kendisinde bir hata oldu\u011funu g\u00f6sterir. pgAdmin loglar\u0131n\u0131 kontrol edin (<code>\/var\/log\/pgadmin4\/pgadmin4.log<\/code>). Dosya izinleri veya <code>config_local.py<\/code> i\u00e7indeki hatal\u0131 yap\u0131land\u0131rmalar bu hataya neden olabilir.<br \/>\n*   <strong>Dosya \u0130zinleri:<\/strong> <code>\/var\/lib\/pgadmin4<\/code> ve <code>\/var\/log\/pgadmin4<\/code> dizinlerinin <code>pgadmin<\/code> kullan\u0131c\u0131s\u0131 taraf\u0131ndan yaz\u0131labilir oldu\u011fundan emin olun (<code>sudo chown -R pgadmin:pgadmin \/var\/lib\/pgadmin4<\/code>).<br \/>\n*   <strong><code>SECRET_KEY<\/code> ve <code>CSRF_SESSION_KEY<\/code>:<\/strong> Bu anahtarlar\u0131n <code>config_local.py<\/code> dosyas\u0131nda ayarland\u0131\u011f\u0131ndan ve g\u00fc\u00e7l\u00fc, rastgele de\u011ferler oldu\u011fundan emin olun. Eksik veya zay\u0131f anahtarlar g\u00fcvenlik sorunlar\u0131na veya uygulaman\u0131n ba\u015flamamas\u0131na neden olabilir.<\/p>\n<h2>G\u00fcvenlik Notlar\u0131<\/h2>\n<p>pgAdmin 4&#8217;\u00fc sunucu modunda \u00e7al\u0131\u015ft\u0131rmak, merkezi y\u00f6netim avantajlar\u0131 sunarken, g\u00fcvenlik konusunda dikkatli olmay\u0131 gerektirir:<\/p>\n<p>*   <strong>G\u00fc\u00e7l\u00fc Parolalar:<\/strong> pgAdmin y\u00f6netici hesab\u0131 ve PostgreSQL veritaban\u0131 kullan\u0131c\u0131lar\u0131 i\u00e7in her zaman g\u00fc\u00e7l\u00fc, karma\u015f\u0131k parolalar kullan\u0131n.<br \/>\n*   <strong>SSL\/TLS:<\/strong> Her zaman HTTPS kullanarak pgAdmin&#8217;e eri\u015fin. Let&#8217;s Encrypt ile sa\u011flad\u0131\u011f\u0131m\u0131z SSL sertifikas\u0131 bu konuda size yard\u0131mc\u0131 olacakt\u0131r.<br \/>\n*   <strong>D\u00fczenli G\u00fcncellemeler:<\/strong> Ubuntu i\u015fletim sisteminizi, pgAdmin 4&#8217;\u00fc ve di\u011fer t\u00fcm yaz\u0131l\u0131mlar\u0131 d\u00fczenli olarak g\u00fcncelleyin. Bu, bilinen g\u00fcvenlik a\u00e7\u0131klar\u0131na kar\u015f\u0131 korunman\u0131z\u0131 sa\u011flar.<br \/>\n*   <strong>Eri\u015fim K\u0131s\u0131tlamalar\u0131:<\/strong> E\u011fer m\u00fcmk\u00fcnse, pgAdmin&#8217;e sadece belirli IP adreslerinden eri\u015fime izin verin. Nginx yap\u0131land\u0131rmas\u0131nda <code>allow<\/code> ve <code>deny<\/code> y\u00f6nergelerini kullanarak veya UFW kurallar\u0131yla bunu yapabilirsiniz.<br \/>\n*   <strong>Yedeklemeler:<\/strong> pgAdmin&#8217;in y\u00f6netti\u011fi PostgreSQL veritabanlar\u0131n\u0131z\u0131n d\u00fczenli yedeklerini al\u0131n.<br \/>\n*   <strong>Log \u0130zleme:<\/strong> pgAdmin ve Nginx g\u00fcnl\u00fcklerini d\u00fczenli olarak izleyerek \u015f\u00fcpheli etkinlikleri tespit edin.<\/p>\n<h2>Sonu\u00e7<\/h2>\n<p>Bu rehberde, Ubuntu 22.04 sunucusu \u00fczerinde pgAdmin 4&#8217;\u00fc sunucu modunda ba\u015far\u0131yla kurmay\u0131 ve yap\u0131land\u0131rmay\u0131 \u00f6\u011frendiniz. Gunicorn&#8217;u WSGI sunucusu olarak kullanarak pgAdmin&#8217;i bir Systemd servisi olarak \u00e7al\u0131\u015ft\u0131rd\u0131k. Ard\u0131ndan, Nginx&#8217;i bir ters proxy olarak yap\u0131land\u0131rd\u0131k ve Let&#8217;s Encrypt ile SSL\/TLS \u015fifrelemesi ekleyerek ba\u011flant\u0131y\u0131 g\u00fcvence alt\u0131na ald\u0131k. Son olarak, UFW g\u00fcvenlik duvar\u0131n\u0131 yap\u0131land\u0131rarak sunucumuzun g\u00fcvenli\u011fini art\u0131rd\u0131k.<\/p>\n<p>Art\u0131k ekibinizdeki herkes, herhangi bir web taray\u0131c\u0131s\u0131 \u00fczerinden merkezi olarak y\u00f6netilen pgAdmin 4 \u00f6rne\u011finize g\u00fcvenli bir \u015fekilde eri\u015febilir ve PostgreSQL veritabanlar\u0131n\u0131z\u0131 etkin bir \u015fekilde y\u00f6netebilir. Bu kurulum, veritaban\u0131 y\u00f6netimi s\u00fcre\u00e7lerinizde verimlili\u011fi ve g\u00fcvenli\u011fi \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131racakt\u0131r.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Ubuntu 22.04 \u00dczerinde pgAdmin 4&#8217;\u00fc Sunucu Modunda Kurma ve Yap\u0131land\u0131rma Rehberi\nGiri\u015f\nVeritaban\u0131 y\u00f6netimi, modern yaz\u0131l\u0131m geli\u015ftirme ve veri","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1468],"tags":[],"class_list":{"0":"post-32190","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-ubuntu","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Ubuntu 22.04 \u00dczerinde pgAdmin 4&#039;\u00fc Sunucu Modunda Kurma ve Yap\u0131land\u0131rma Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/ubuntu-22-04-uzerinde-pgadmin-4u-sunucu-modunda-kurma-ve-yapilandirma-rehberi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ubuntu 22.04 \u00dczerinde pgAdmin 4&#039;\u00fc Sunucu Modunda Kurma ve Yap\u0131land\u0131rma Rehberi\" \/>\n<meta property=\"og:description\" content=\"Ubuntu 22.04 \u00dczerinde pgAdmin 4&#039;\u00fc Sunucu Modunda Kurma ve Yap\u0131land\u0131rma Rehberi Giri\u015f Veritaban\u0131 y\u00f6netimi, modern yaz\u0131l\u0131m geli\u015ftirme ve veri\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/ubuntu-22-04-uzerinde-pgadmin-4u-sunucu-modunda-kurma-ve-yapilandirma-rehberi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-18T17:41:11+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"19 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-22-04-uzerinde-pgadmin-4u-sunucu-modunda-kurma-ve-yapilandirma-rehberi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-22-04-uzerinde-pgadmin-4u-sunucu-modunda-kurma-ve-yapilandirma-rehberi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Ubuntu 22.04 \u00dczerinde pgAdmin 4&#8217;\u00fc Sunucu Modunda Kurma ve Yap\u0131land\u0131rma Rehberi\",\"datePublished\":\"2025-10-18T17:41:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-22-04-uzerinde-pgadmin-4u-sunucu-modunda-kurma-ve-yapilandirma-rehberi\/\"},\"wordCount\":2686,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Ubuntu\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/ubuntu-22-04-uzerinde-pgadmin-4u-sunucu-modunda-kurma-ve-yapilandirma-rehberi\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-22-04-uzerinde-pgadmin-4u-sunucu-modunda-kurma-ve-yapilandirma-rehberi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-22-04-uzerinde-pgadmin-4u-sunucu-modunda-kurma-ve-yapilandirma-rehberi\/\",\"name\":\"Ubuntu 22.04 \u00dczerinde pgAdmin 4'\u00fc Sunucu Modunda Kurma ve Yap\u0131land\u0131rma Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-18T17:41:11+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-22-04-uzerinde-pgadmin-4u-sunucu-modunda-kurma-ve-yapilandirma-rehberi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/ubuntu-22-04-uzerinde-pgadmin-4u-sunucu-modunda-kurma-ve-yapilandirma-rehberi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-22-04-uzerinde-pgadmin-4u-sunucu-modunda-kurma-ve-yapilandirma-rehberi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ubuntu 22.04 \u00dczerinde pgAdmin 4&#8217;\u00fc Sunucu Modunda Kurma ve Yap\u0131land\u0131rma Rehberi\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Ubuntu 22.04 \u00dczerinde pgAdmin 4'\u00fc Sunucu Modunda Kurma ve Yap\u0131land\u0131rma Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/ubuntu-22-04-uzerinde-pgadmin-4u-sunucu-modunda-kurma-ve-yapilandirma-rehberi\/","og_locale":"tr_TR","og_type":"article","og_title":"Ubuntu 22.04 \u00dczerinde pgAdmin 4'\u00fc Sunucu Modunda Kurma ve Yap\u0131land\u0131rma Rehberi","og_description":"Ubuntu 22.04 \u00dczerinde pgAdmin 4'\u00fc Sunucu Modunda Kurma ve Yap\u0131land\u0131rma Rehberi Giri\u015f Veritaban\u0131 y\u00f6netimi, modern yaz\u0131l\u0131m geli\u015ftirme ve veri","og_url":"https:\/\/fatihsoysal.com\/blog\/ubuntu-22-04-uzerinde-pgadmin-4u-sunucu-modunda-kurma-ve-yapilandirma-rehberi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-18T17:41:11+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"19 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-22-04-uzerinde-pgadmin-4u-sunucu-modunda-kurma-ve-yapilandirma-rehberi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-22-04-uzerinde-pgadmin-4u-sunucu-modunda-kurma-ve-yapilandirma-rehberi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Ubuntu 22.04 \u00dczerinde pgAdmin 4&#8217;\u00fc Sunucu Modunda Kurma ve Yap\u0131land\u0131rma Rehberi","datePublished":"2025-10-18T17:41:11+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-22-04-uzerinde-pgadmin-4u-sunucu-modunda-kurma-ve-yapilandirma-rehberi\/"},"wordCount":2686,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Ubuntu"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/ubuntu-22-04-uzerinde-pgadmin-4u-sunucu-modunda-kurma-ve-yapilandirma-rehberi\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-22-04-uzerinde-pgadmin-4u-sunucu-modunda-kurma-ve-yapilandirma-rehberi\/","url":"https:\/\/fatihsoysal.com\/blog\/ubuntu-22-04-uzerinde-pgadmin-4u-sunucu-modunda-kurma-ve-yapilandirma-rehberi\/","name":"Ubuntu 22.04 \u00dczerinde pgAdmin 4'\u00fc Sunucu Modunda Kurma ve Yap\u0131land\u0131rma Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-18T17:41:11+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-22-04-uzerinde-pgadmin-4u-sunucu-modunda-kurma-ve-yapilandirma-rehberi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/ubuntu-22-04-uzerinde-pgadmin-4u-sunucu-modunda-kurma-ve-yapilandirma-rehberi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-22-04-uzerinde-pgadmin-4u-sunucu-modunda-kurma-ve-yapilandirma-rehberi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Ubuntu 22.04 \u00dczerinde pgAdmin 4&#8217;\u00fc Sunucu Modunda Kurma ve Yap\u0131land\u0131rma Rehberi"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32190","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=32190"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32190\/revisions"}],"predecessor-version":[{"id":32191,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32190\/revisions\/32191"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=32190"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=32190"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=32190"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}