{"id":37388,"date":"2026-01-02T17:40:46","date_gmt":"2026-01-02T14:40:46","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=37388"},"modified":"2026-01-02T17:40:46","modified_gmt":"2026-01-02T14:40:46","slug":"django-uygulamanizda-postgresqli-ubuntu-14-04-uzerinde-kullanma-rehberi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/django-uygulamanizda-postgresqli-ubuntu-14-04-uzerinde-kullanma-rehberi\/","title":{"rendered":"Django Uygulaman\u0131zda PostgreSQL&#8217;i Ubuntu 14.04 \u00dczerinde Kullanma Rehberi"},"content":{"rendered":"<h2>Django Uygulaman\u0131zda PostgreSQL&#8217;i Ubuntu 14.04 \u00dczerinde Kullanma Rehberi<\/h2>\n<p><body><\/p>\n<h2>Giri\u015f<\/h2>\n<p>Modern web uygulamalar\u0131n\u0131n bel kemi\u011fini olu\u015fturan veritabanlar\u0131, uygulaman\u0131n performans\u0131, \u00f6l\u00e7eklenebilirli\u011fi ve g\u00fcvenilirli\u011fi a\u00e7\u0131s\u0131ndan kritik \u00f6neme sahiptir. Django gibi g\u00fc\u00e7l\u00fc bir web \u00e7at\u0131s\u0131 ile \u00e7al\u0131\u015f\u0131rken, do\u011fru veritaban\u0131 se\u00e7imi projenizin gelece\u011fini do\u011frudan etkiler. Bu teknik makalede, a\u00e7\u0131k kaynak d\u00fcnyas\u0131n\u0131n en g\u00fc\u00e7l\u00fc ve geli\u015fmi\u015f ili\u015fkisel veritaban\u0131 sistemlerinden biri olan PostgreSQL&#8217;i, Django uygulamalar\u0131n\u0131zla birlikte Ubuntu 14.04 i\u015fletim sistemi \u00fczerinde nas\u0131l kullanaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m inceleyece\u011fiz.<\/p>\n<p>Ubuntu 14.04, her ne kadar g\u00fcncel bir i\u015fletim sistemi olmasa da, bir\u00e7ok \u00fcretim ortam\u0131nda hala kullan\u0131lmakta veya eski sistemlerin incelenmesi gerekmektedir. Bu rehber, belirli bir versiyon \u00fczerinde \u00e7al\u0131\u015fmas\u0131 gereken veya bu versiyonu kullanan geli\u015ftiriciler ve sistem y\u00f6neticileri i\u00e7in \u00f6zel olarak haz\u0131rlanm\u0131\u015ft\u0131r. PostgreSQL, ACID (Atomicity, Consistency, Isolation, Durability) prensiplerine tam uyumu, geli\u015fmi\u015f veri tipleri, indeksleme se\u00e7enekleri, g\u00fc\u00e7l\u00fc SQL deste\u011fi ve geni\u015fletilebilirlik \u00f6zellikleri sayesinde b\u00fcy\u00fck \u00f6l\u00e7ekli ve karma\u015f\u0131k Django projeleri i\u00e7in ideal bir se\u00e7imdir. MySQL&#8217;e k\u0131yasla daha zengin \u00f6zellik setine sahip olmas\u0131 ve veri b\u00fct\u00fcnl\u00fc\u011f\u00fcne daha fazla odaklanmas\u0131, \u00f6zellikle finans, e-ticaret ve veri yo\u011fun uygulamalarda tercih edilmesinin ba\u015fl\u0131ca nedenlerindendir.<\/p>\n<p>Bu makalenin amac\u0131, Django projenizi Ubuntu 14.04 \u00fczerinde PostgreSQL ile entegre etmek i\u00e7in gerekli olan t\u00fcm ad\u0131mlar\u0131, kurulumdan yap\u0131land\u0131rmaya, test etmeden s\u0131k kar\u015f\u0131la\u015f\u0131lan sorunlara kadar detayl\u0131 bir \u015fekilde a\u00e7\u0131klamakt\u0131r. Rehberin sonunda, Django uygulaman\u0131z\u0131n PostgreSQL ile sorunsuz bir \u015fekilde \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olacaks\u0131n\u0131z.<\/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<h3>Ubuntu 14.04 Sunucusu<\/h3>\n<p>*   SSH eri\u015fimi olan veya do\u011frudan konsol eri\u015fimi sa\u011flayabilece\u011finiz bir Ubuntu 14.04 sunucusu veya sanal makine. Bu sunucu \u00fczerinde <code>sudo<\/code> yetkilerine sahip bir kullan\u0131c\u0131 hesab\u0131n\u0131z olmal\u0131d\u0131r.<\/p>\n<h3>Temel Terminal Bilgisi<\/h3>\n<p>*   Linux komut sat\u0131r\u0131 (terminal) kullan\u0131m\u0131 hakk\u0131nda temel bilgi. Komutlar\u0131 \u00e7al\u0131\u015ft\u0131rma, dosya d\u00fczenleme (<code>nano<\/code> veya <code>vim<\/code> gibi edit\u00f6rlerle) gibi i\u015flemler hakk\u0131nda bilgi sahibi olman\u0131z beklenir.<\/p>\n<h3>Python ve Django<\/h3>\n<p>*   Sunucunuzda Python 2.7 (Ubuntu 14.04&#8217;\u00fcn varsay\u0131lan\u0131) veya Python 3.x kurulu olmal\u0131d\u0131r. Django&#8217;nun g\u00fcncel versiyonlar\u0131 Python 3 gerektirdi\u011finden, bu rehberde Python 3&#8217;\u00fc hedefleyece\u011fiz.<br \/>\n*   Django framework&#8217;\u00fcn\u00fcn kurulu ve bir Django projenizin haz\u0131r olmas\u0131. E\u011fer bir projeniz yoksa, rehberin ilerleyen ad\u0131mlar\u0131nda basit bir proje olu\u015fturma ad\u0131mlar\u0131n\u0131 da g\u00f6sterece\u011fiz.<br \/>\n*   Python sanal ortam\u0131 (virtualenv) kullan\u0131m\u0131 \u015fiddetle tavsiye edilir. Bu, proje ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131z\u0131 sistem genelindeki Python paketlerinden izole etmenizi sa\u011flar.<\/p>\n<h2>PostgreSQL Kurulumu<\/h2>\n<p>PostgreSQL&#8217;i Ubuntu 14.04 sisteminize kurmak olduk\u00e7a basittir. Ubuntu&#8217;nun paket y\u00f6neticisi <code>apt-get<\/code> ile gerekli paketleri kolayca y\u00fckleyebiliriz.<\/p>\n<h3>Sistem G\u00fcncelleme<\/h3>\n<p>Kuruluma ba\u015flamadan \u00f6nce, sisteminizdeki paket listelerini g\u00fcncellemek ve mevcut paketleri y\u00fckseltmek iyi bir uygulamad\u0131r. Bu, en g\u00fcncel ve kararl\u0131 paket versiyonlar\u0131n\u0131 alman\u0131z\u0131 sa\u011flar.<\/p>\n<pre><code class=\"language-bash\">sudo apt-get update\nsudo apt-get upgrade<\/code><\/pre>\n<p>Bu komutlar, sisteminizin paket indeksini g\u00fcnceller ve ard\u0131ndan kurulu t\u00fcm paketleri varsa daha yeni versiyonlar\u0131na y\u00fckseltir.<\/p>\n<h3>PostgreSQL Paketlerini Kurma<\/h3>\n<p>PostgreSQL sunucusunu ve gerekli istemci ara\u00e7lar\u0131n\u0131 kurmak i\u00e7in a\u015fa\u011f\u0131daki komutu kullan\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo apt-get install postgresql postgresql-contrib libpq-dev python-dev<\/code><\/pre>\n<p>*   <code>postgresql<\/code>: PostgreSQL sunucu paketini i\u00e7erir.<br \/>\n*   <code>postgresql-contrib<\/code>: PostgreSQL i\u00e7in ek mod\u00fcller ve yard\u0131mc\u0131 programlar i\u00e7erir (\u00f6rne\u011fin, <code>pg_stat_statements<\/code> gibi).<br \/>\n*   <code>libpq-dev<\/code>: PostgreSQL C k\u00fct\u00fcphanesinin geli\u015ftirme dosyalar\u0131n\u0131 i\u00e7erir. Bu paket, <code>psycopg2<\/code> gibi Python PostgreSQL ba\u011fda\u015ft\u0131r\u0131c\u0131s\u0131n\u0131n derlenmesi i\u00e7in gereklidir.<br \/>\n*   <code>python-dev<\/code>: Python ba\u015fl\u0131k dosyalar\u0131n\u0131 ve statik k\u00fct\u00fcphanelerini i\u00e7erir. Bu da Python paketlerinin C uzant\u0131lar\u0131n\u0131 derlemesi i\u00e7in gereklidir. \u00d6zellikle Python 2.7 kullan\u0131yorsan\u0131z \u00f6nemlidir. Python 3 kullan\u0131yorsan\u0131z, bunun yerine <code>python3-dev<\/code> kurman\u0131z gerekebilir:<\/p>\n<pre><code class=\"language-bash\">sudo apt-get install postgresql postgresql-contrib libpq-dev python3-dev<\/code><\/pre>\n<p>    Bu rehberde Python 3&#8217;\u00fc varsayarak ilerleyece\u011fiz, bu nedenle <code>python3-dev<\/code> kurulumunu \u00f6neririz.<\/p>\n<p>Kurulum tamamland\u0131\u011f\u0131nda, PostgreSQL servisi otomatik olarak ba\u015flat\u0131l\u0131r ve sistem ba\u015flang\u0131c\u0131nda \u00e7al\u0131\u015facak \u015fekilde ayarlan\u0131r.<\/p>\n<h3>PostgreSQL Servis Durumu Kontrol\u00fc<\/h3>\n<p>PostgreSQL servisinin d\u00fczg\u00fcn \u00e7al\u0131\u015f\u0131p \u00e7al\u0131\u015fmad\u0131\u011f\u0131n\u0131 kontrol etmek i\u00e7in a\u015fa\u011f\u0131daki komutu kullanabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo service postgresql status<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131da &#8220;running&#8221; (\u00e7al\u0131\u015f\u0131yor) ibaresini g\u00f6rmelisiniz. E\u011fer \u00e7al\u0131\u015fm\u0131yorsa, a\u015fa\u011f\u0131daki komutla ba\u015flatabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo service postgresql start<\/code><\/pre>\n<h2>PostgreSQL Kullan\u0131c\u0131s\u0131 ve Veritaban\u0131 Olu\u015fturma<\/h2>\n<p>G\u00fcvenlik ve iyi uygulama a\u00e7\u0131s\u0131ndan, Django uygulaman\u0131z i\u00e7in PostgreSQL&#8217;de \u00f6zel bir kullan\u0131c\u0131 ve veritaban\u0131 olu\u015fturmak \u00f6nemlidir. Varsay\u0131lan olarak, PostgreSQL bir <code>postgres<\/code> kullan\u0131c\u0131s\u0131 olu\u015fturur ve bu kullan\u0131c\u0131, sistemin <code>postgres<\/code> kullan\u0131c\u0131s\u0131yla ili\u015fkilidir. Bu kullan\u0131c\u0131 ile veritaban\u0131 i\u015flemlerini ger\u00e7ekle\u015ftirebiliriz.<\/p>\n<h3><code>psql<\/code> Konsoluna Eri\u015fim<\/h3>\n<p><code>postgres<\/code> sistem kullan\u0131c\u0131s\u0131na ge\u00e7i\u015f yaparak <code>psql<\/code> komut sat\u0131r\u0131 arac\u0131na eri\u015febiliriz:<\/p>\n<pre><code class=\"language-bash\">sudo -i -u postgres\npsql<\/code><\/pre>\n<p>Bu komut sizi PostgreSQL komut istemine (<code>postgres=#<\/code>) g\u00f6t\u00fcrecektir. Art\u0131k veritaban\u0131 i\u015flemleri yapmaya haz\u0131rs\u0131n\u0131z.<\/p>\n<h3>Yeni Kullan\u0131c\u0131 Olu\u015fturma<\/h3>\n<p>Django uygulamam\u0131z\u0131n veritaban\u0131na ba\u011flanmak i\u00e7in kullanaca\u011f\u0131 bir PostgreSQL kullan\u0131c\u0131s\u0131 olu\u015ftural\u0131m. Kullan\u0131c\u0131 ad\u0131n\u0131 <code>mydjangouser<\/code> ve \u015fifresini <code>mypassword<\/code> olarak belirleyelim (ger\u00e7ek projelerinizde daha g\u00fc\u00e7l\u00fc bir \u015fifre kullanmay\u0131 unutmay\u0131n).<\/p>\n<pre><code class=\"language-sql\">CREATE USER mydjangouser WITH PASSWORD 'mypassword';<\/code><\/pre>\n<p>Bu komut, <code>mydjangouser<\/code> ad\u0131nda yeni bir veritaban\u0131 kullan\u0131c\u0131s\u0131 olu\u015fturur ve ona <code>mypassword<\/code> \u015fifresini atar.<\/p>\n<h3>Yeni Veritaban\u0131 Olu\u015fturma<\/h3>\n<p>\u015eimdi de Django uygulamam\u0131z\u0131n kullanaca\u011f\u0131 veritaban\u0131n\u0131 olu\u015ftural\u0131m. Veritaban\u0131 ad\u0131n\u0131 <code>mydjangodb<\/code> olarak belirleyelim.<\/p>\n<pre><code class=\"language-sql\">CREATE DATABASE mydjangodb;<\/code><\/pre>\n<h3>Veritaban\u0131 Sahibini Ayarlama ve Yetkilendirme<\/h3>\n<p>Olu\u015fturdu\u011fumuz veritaban\u0131n\u0131n sahibini <code>mydjangouser<\/code> olarak ayarlamam\u0131z ve bu kullan\u0131c\u0131ya veritaban\u0131 \u00fczerinde t\u00fcm yetkileri vermemiz gerekir.<\/p>\n<pre><code class=\"language-sql\">ALTER DATABASE mydjangodb OWNER TO mydjangouser;\nGRANT ALL PRIVILEGES ON DATABASE mydjangodb TO mydjangouser;<\/code><\/pre>\n<p>Bu komutlar, <code>mydjangodb<\/code> veritaban\u0131n\u0131n sahipli\u011fini <code>mydjangouser<\/code>&#8216;a devreder ve bu kullan\u0131c\u0131ya veritaban\u0131 \u00fczerinde tam kontrol yetkisi verir.<\/p>\n<p>Yetkilendirme ad\u0131mlar\u0131n\u0131 tamamlad\u0131ktan sonra <code>psql<\/code> konsolundan \u00e7\u0131kmak i\u00e7in <code>\\q<\/code> yaz\u0131p Enter tu\u015funa bas\u0131n. Ard\u0131ndan <code>exit<\/code> yazarak <code>postgres<\/code> sistem kullan\u0131c\u0131s\u0131ndan kendi kullan\u0131c\u0131n\u0131za geri d\u00f6nebilirsiniz.<\/p>\n<h2>Django Projenizi Haz\u0131rlama<\/h2>\n<p>PostgreSQL veritaban\u0131 ve kullan\u0131c\u0131s\u0131 haz\u0131r oldu\u011funa g\u00f6re, Django projemizi bu veritaban\u0131n\u0131 kullanacak \u015fekilde yap\u0131land\u0131rmam\u0131z gerekiyor.<\/p>\n<h3>Django Projesi Olu\u015fturma (E\u011fer Yoksa)<\/h3>\n<p>E\u011fer hen\u00fcz bir Django projeniz yoksa, a\u015fa\u011f\u0131daki ad\u0131mlar\u0131 izleyerek basit bir proje olu\u015fturabilirsiniz. \u00d6ncelikle bir sanal ortam olu\u015ftural\u0131m ve etkinle\u015ftirelim:<\/p>\n<pre><code class=\"language-bash\">mkdir myproject\ncd myproject\npython3 -m venv venv\nsource venv\/bin\/activate<\/code><\/pre>\n<p>Sanal ortam etkinle\u015ftirildikten sonra Django&#8217;yu kural\u0131m ve yeni bir proje ba\u015flatal\u0131m:<\/p>\n<pre><code class=\"language-bash\">pip install django\ndjango-admin startproject myproject .<\/code><\/pre>\n<p>Bu komutlar, <code>myproject<\/code> ad\u0131nda bir Django projesi olu\u015fturur ve mevcut dizine yerle\u015ftirir.<\/p>\n<h3><code>psycopg2<\/code> Kurulumu<\/h3>\n<p>Django&#8217;nun PostgreSQL ile ileti\u015fim kurabilmesi i\u00e7in bir veritaban\u0131 ba\u011fda\u015ft\u0131r\u0131c\u0131s\u0131na ihtiyac\u0131 vard\u0131r. Python i\u00e7in en pop\u00fcler PostgreSQL ba\u011fda\u015ft\u0131r\u0131c\u0131s\u0131 <code>psycopg2<\/code>&#8216;dir. Sanal ortam\u0131n\u0131z aktifken bu paketi kurun:<\/p>\n<pre><code class=\"language-bash\">pip install psycopg2-binary<\/code><\/pre>\n<p><code>psycopg2-binary<\/code> versiyonu, derleme gerektirmeyen \u00f6nceden derlenmi\u015f ikili dosyalar i\u00e7erir, bu da kurulumu genellikle daha kolay hale getirir. E\u011fer derleme sorunlar\u0131 ya\u015farsan\u0131z veya daha spesifik bir kurulum gerekiyorsa <code>psycopg2<\/code> paketini deneyebilirsiniz, ancak bu durumda <code>libpq-dev<\/code> ve <code>python3-dev<\/code> paketlerinin do\u011fru \u015fekilde kurulu oldu\u011fundan emin olman\u0131z gerekir.<\/p>\n<h3><code>settings.py<\/code> Dosyas\u0131n\u0131 Yap\u0131land\u0131rma<\/h3>\n<p>Django projenizin k\u00f6k dizininde bulunan <code>myproject\/settings.py<\/code> dosyas\u0131n\u0131 a\u00e7\u0131n. Bu dosya, Django projenizin t\u00fcm ayarlar\u0131n\u0131 i\u00e7erir. <code>DATABASES<\/code> b\u00f6l\u00fcm\u00fcn\u00fc bulun ve a\u015fa\u011f\u0131daki gibi d\u00fczenleyin:<\/p>\n<pre><code class=\"language-python\"># myproject\/settings.py\n\nDATABASES = {\n    'default': {\n        'ENGINE': 'django.db.backends.postgresql_psycopg2',\n        'NAME': 'mydjangodb',\n        'USER': 'mydjangouser',\n        'PASSWORD': 'mypassword',\n        'HOST': 'localhost',  # Veya veritaban\u0131 sunucusunun IP adresi\n        'PORT': '',           # PostgreSQL'in varsay\u0131lan portu (5432)\n    }\n}<\/code><\/pre>\n<p>A\u00e7\u0131klamalar:<br \/>\n*   <code>ENGINE<\/code>: Kullan\u0131lacak veritaban\u0131 ba\u011fda\u015ft\u0131r\u0131c\u0131s\u0131n\u0131 belirtir. PostgreSQL i\u00e7in <code>django.db.backends.postgresql_psycopg2<\/code> kullanmal\u0131s\u0131n\u0131z.<br \/>\n*   <code>NAME<\/code>: Daha \u00f6nce olu\u015fturdu\u011funuz PostgreSQL veritaban\u0131n\u0131n ad\u0131d\u0131r (<code>mydjangodb<\/code>).<br \/>\n*   <code>USER<\/code>: Veritaban\u0131na ba\u011flanmak i\u00e7in kullan\u0131lacak PostgreSQL kullan\u0131c\u0131s\u0131n\u0131n ad\u0131d\u0131r (<code>mydjangouser<\/code>).<br \/>\n*   <code>PASSWORD<\/code>: Belirtilen kullan\u0131c\u0131n\u0131n \u015fifresidir (<code>mypassword<\/code>).<br \/>\n*   <code>HOST<\/code>: Veritaban\u0131 sunucusunun adresidir. E\u011fer veritaban\u0131 ve Django uygulamas\u0131 ayn\u0131 sunucuda \u00e7al\u0131\u015f\u0131yorsa <code>localhost<\/code> kullan\u0131n. Uzak bir sunucudaysa o sunucunun IP adresini veya alan ad\u0131n\u0131 girin.<br \/>\n*   <code>PORT<\/code>: PostgreSQL&#8217;in dinledi\u011fi port numaras\u0131d\u0131r. Varsay\u0131lan olarak 5432&#8217;dir. Bo\u015f b\u0131rak\u0131ld\u0131\u011f\u0131nda Django varsay\u0131lan portu kullan\u0131r.<\/p>\n<p><strong>\u00d6nemli G\u00fcvenlik Notu:<\/strong> Ger\u00e7ek bir \u00fcretim ortam\u0131nda, veritaban\u0131 \u015fifresini <code>settings.py<\/code> dosyas\u0131na do\u011frudan yazmak yerine, ortam de\u011fi\u015fkenleri veya ba\u015fka bir g\u00fcvenli yap\u0131land\u0131rma y\u00f6ntemi kullanarak saklaman\u0131z \u015fiddetle tavsiye edilir.<\/p>\n<h2>Veritaban\u0131 Migrasyonlar\u0131 ve S\u00fcper Kullan\u0131c\u0131 Olu\u015fturma<\/h2>\n<p>Django projeniz art\u0131k PostgreSQL ile konu\u015fmaya haz\u0131r oldu\u011funa g\u00f6re, veritaban\u0131 \u015femas\u0131n\u0131 olu\u015fturmak ve Django&#8217;nun dahili uygulamalar\u0131 i\u00e7in tablolar\u0131 ayarlamak \u00fczere migrasyonlar\u0131 \u00e7al\u0131\u015ft\u0131rmam\u0131z gerekiyor.<\/p>\n<p>Django projenizin k\u00f6k dizininde oldu\u011funuzdan ve sanal ortam\u0131n\u0131z\u0131n aktif oldu\u011fundan emin olun.<\/p>\n<h3>Migrasyonlar\u0131 Olu\u015fturma<\/h3>\n<p>\u00d6ncelikle, Django&#8217;nun kurulu uygulamalar\u0131 i\u00e7in (ve kendi uygulamalar\u0131n\u0131z i\u00e7in) model de\u011fi\u015fikliklerini veritaban\u0131 migrasyonlar\u0131na d\u00f6n\u00fc\u015ft\u00fcrelim:<\/p>\n<pre><code class=\"language-bash\">python manage.py makemigrations<\/code><\/pre>\n<p>Bu komut, Django&#8217;nun dahili uygulamalar\u0131 (auth, admin, sessions vb.) i\u00e7in gerekli olan migrasyon dosyalar\u0131n\u0131 olu\u015fturacakt\u0131r. E\u011fer kendi uygulamalar\u0131n\u0131z varsa ve modeller tan\u0131mlad\u0131ysan\u0131z, onlar i\u00e7in de migrasyon dosyalar\u0131 olu\u015fturulacakt\u0131r.<\/p>\n<h3>Migrasyonlar\u0131 Uygulama<\/h3>\n<p>\u015eimdi bu migrasyon dosyalar\u0131n\u0131 PostgreSQL veritaban\u0131n\u0131za uygulayarak gerekli tablolar\u0131 olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-bash\">python manage.py migrate<\/code><\/pre>\n<p>Bu komut, Django&#8217;nun t\u00fcm migrasyonlar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131r\u0131r ve PostgreSQL veritaban\u0131n\u0131zda tablolar\u0131, indeksleri ve di\u011fer veritaban\u0131 objelerini olu\u015fturur. \u0130\u015flem tamamland\u0131\u011f\u0131nda, veritaban\u0131n\u0131z Django projenizle uyumlu hale gelmi\u015f olacakt\u0131r.<\/p>\n<h3>S\u00fcper Kullan\u0131c\u0131 Olu\u015fturma<\/h3>\n<p>Django&#8217;nun admin paneline eri\u015fmek i\u00e7in bir s\u00fcper kullan\u0131c\u0131 olu\u015fturman\u0131z gerekir:<\/p>\n<pre><code class=\"language-bash\">python manage.py createsuperuser<\/code><\/pre>\n<p>Bu komut sizden bir kullan\u0131c\u0131 ad\u0131, e-posta adresi ve \u015fifre isteyecektir. Bu bilgilerle Django admin paneline giri\u015f yapabilirsiniz.<\/p>\n<h2>Django Uygulaman\u0131z\u0131 Test Etme<\/h2>\n<p>T\u00fcm kurulum ve yap\u0131land\u0131rma ad\u0131mlar\u0131 tamamland\u0131ktan sonra, Django uygulaman\u0131z\u0131n PostgreSQL ile do\u011fru \u015fekilde \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 do\u011frulamam\u0131z gerekiyor.<\/p>\n<h3>Geli\u015ftirme Sunucusunu Ba\u015flatma<\/h3>\n<p>Django&#8217;nun geli\u015ftirme sunucusunu ba\u015flatarak uygulaman\u0131za web taray\u0131c\u0131n\u0131zdan eri\u015fin:<\/p>\n<pre><code class=\"language-bash\">python manage.py runserver 0.0.0.0:8000<\/code><\/pre>\n<p><code>0.0.0.0:8000<\/code> kullanmak, uygulaman\u0131z\u0131n sunucunun t\u00fcm IP adreslerinden 8000 numaral\u0131 port \u00fczerinden eri\u015filebilir olmas\u0131n\u0131 sa\u011flar. E\u011fer bir sanal makine veya uzak sunucu kullan\u0131yorsan\u0131z, taray\u0131c\u0131n\u0131zdan sunucunuzun IP adresi ve 8000 portu ile eri\u015febilirsiniz (\u00f6rn: <code>http:\/\/SERVER_IP_ADDRESS:8000<\/code>).<\/p>\n<h3>Django Admin Paneli Kontrol\u00fc<\/h3>\n<p>Taray\u0131c\u0131n\u0131zda <code>http:\/\/SERVER_IP_ADDRESS:8000\/admin\/<\/code> adresine gidin. Olu\u015fturdu\u011funuz s\u00fcper kullan\u0131c\u0131 bilgileriyle giri\u015f yapmay\u0131 deneyin. Ba\u015far\u0131l\u0131 bir \u015fekilde giri\u015f yapabiliyorsan\u0131z ve admin panelini g\u00f6rebiliyorsan\u0131z, Django uygulaman\u0131z PostgreSQL veritaban\u0131yla ba\u015far\u0131l\u0131 bir \u015fekilde ileti\u015fim kuruyor demektir. Admin panelinde kullan\u0131c\u0131lar, gruplar ve di\u011fer Django objelerini g\u00f6rebilmelisiniz.<\/p>\n<h3>Basit Bir Model ve Veri Giri\u015fi Testi<\/h3>\n<p>Daha kapsaml\u0131 bir test i\u00e7in, Django projenize yeni bir uygulama ekleyip basit bir model tan\u0131mlayabilir ve bu model \u00fczerinden veri giri\u015fi yapmay\u0131 deneyebilirsiniz.<\/p>\n<p>\u00d6rne\u011fin, <code>blog<\/code> ad\u0131nda yeni bir uygulama olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-bash\">python manage.py startapp blog<\/code><\/pre>\n<p><code>myproject\/settings.py<\/code> dosyan\u0131za <code>blog<\/code> uygulamas\u0131n\u0131 ekleyin:<\/p>\n<pre><code class=\"language-python\"># myproject\/settings.py\nINSTALLED_APPS = [\n    # ... di\u011fer uygulamalar ...\n    'blog',\n]<\/code><\/pre>\n<p><code>blog\/models.py<\/code> dosyas\u0131n\u0131 d\u00fczenleyerek basit bir <code>Post<\/code> modeli tan\u0131mlay\u0131n:<\/p>\n<pre><code class=\"language-python\"># blog\/models.py\nfrom django.db import models\n\nclass Post(models.Model):\n    title = models.CharField(max_length=200)\n    content = models.TextField()\n    created_at = models.DateTimeField(auto_now_add=True)\n\n    def __str__(self):\n        return self.title<\/code><\/pre>\n<p>Modeli tan\u0131mlad\u0131ktan sonra migrasyonlar\u0131 olu\u015fturun ve uygulay\u0131n:<\/p>\n<pre><code class=\"language-bash\">python manage.py makemigrations blog\npython manage.py migrate<\/code><\/pre>\n<p>\u015eimdi bu modeli Django admin paneline kaydedin (<code>blog\/admin.py<\/code>):<\/p>\n<pre><code class=\"language-python\"># blog\/admin.py\nfrom django.contrib import admin\nfrom .models import Post\n\nadmin.site.register(Post)<\/code><\/pre>\n<p>Geli\u015ftirme sunucusunu tekrar ba\u015flat\u0131n (<code>python manage.py runserver<\/code>). <code>http:\/\/SERVER_IP_ADDRESS:8000\/admin\/<\/code> adresine gidin ve &#8220;Blog&#8221; uygulamas\u0131 alt\u0131nda &#8220;Posts&#8221; b\u00f6l\u00fcm\u00fcn\u00fc g\u00f6receksiniz. Buradan yeni bir Post eklemeyi deneyin. Veriyi ba\u015far\u0131l\u0131 bir \u015fekilde kaydedip listeleyebiliyorsan\u0131z, uygulaman\u0131z PostgreSQL ile tam entegre \u00e7al\u0131\u015f\u0131yor demektir.<\/p>\n<h2>Ek G\u00fcvenlik ve Performans \u0130pu\u00e7lar\u0131 (Ubuntu 14.04 i\u00e7in)<\/h2>\n<p>Ubuntu 14.04 eski bir s\u00fcr\u00fcm olmas\u0131na ra\u011fmen, PostgreSQL kurulumunuzu daha g\u00fcvenli ve performansl\u0131 hale getirmek i\u00e7in baz\u0131 temel ad\u0131mlar atabilirsiniz.<\/p>\n<h3><code>pg_hba.conf<\/code> Ayarlar\u0131 (G\u00fcvenlik)<\/h3>\n<p><code>pg_hba.conf<\/code> dosyas\u0131, PostgreSQL&#8217;e kimlerin, hangi y\u00f6ntemle ve hangi veritabanlar\u0131na ba\u011flanabilece\u011fini kontrol eden ana g\u00fcvenlik yap\u0131land\u0131rma dosyas\u0131d\u0131r. Varsay\u0131lan olarak, Ubuntu 14.04&#8217;te <code>local<\/code> ba\u011flant\u0131lar i\u00e7in <code>peer<\/code> kimlik do\u011frulamas\u0131 kullan\u0131l\u0131r, bu da sistem kullan\u0131c\u0131 ad\u0131yla ayn\u0131 veritaban\u0131 kullan\u0131c\u0131 ad\u0131n\u0131n e\u015fle\u015fmesini gerektirir. Uzak ba\u011flant\u0131lar i\u00e7in ise genellikle <code>md5<\/code> veya <code>trust<\/code> kullan\u0131l\u0131r.<\/p>\n<p>Bu dosyay\u0131 d\u00fczenlemek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/postgresql\/9.3\/main\/pg_hba.conf<\/code><\/pre>\n<p>(PostgreSQL versiyonu 9.3 veya sisteminizdeki kurulu versiyona g\u00f6re de\u011fi\u015febilir.)<\/p>\n<p>Dosyan\u0131n i\u00e7inde, <code>local<\/code> ba\u011flant\u0131lar i\u00e7in varsay\u0131lan olarak a\u015fa\u011f\u0131daki gibi bir sat\u0131r g\u00f6rebilirsiniz:<\/p>\n<pre><code class=\"language-\"># \"local\" is for Unix domain socket connections only\nlocal   all             all                                     peer<\/code><\/pre>\n<p>E\u011fer Django uygulaman\u0131z ve PostgreSQL ayn\u0131 sunucuda \u00e7al\u0131\u015f\u0131yorsa ve <code>localhost<\/code> \u00fczerinden TCP\/IP ba\u011flant\u0131s\u0131 kuruyorsan\u0131z, a\u015fa\u011f\u0131daki gibi bir sat\u0131r eklemeniz gerekebilir (veya mevcut <code>host<\/code> sat\u0131r\u0131n\u0131 d\u00fczenlemeniz):<\/p>\n<pre><code class=\"language-\"># IPv4 local connections:\nhost    all             all             127.0.0.1\/32            md5<\/code><\/pre>\n<p>Bu sat\u0131r, <code>localhost<\/code> (127.0.0.1) \u00fczerinden gelen t\u00fcm kullan\u0131c\u0131lardan t\u00fcm veritabanlar\u0131na <code>md5<\/code> \u015fifre do\u011frulamas\u0131 ile ba\u011flanmas\u0131na izin verir. Bu, Django&#8217;nun <code>settings.py<\/code> dosyas\u0131nda belirtti\u011finiz kullan\u0131c\u0131 ad\u0131 ve \u015fifre ile ba\u011flanabilmesi i\u00e7in gereklidir.<\/p>\n<p>De\u011fi\u015fiklikleri kaydettikten sonra PostgreSQL servisini yeniden ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo service postgresql restart<\/code><\/pre>\n<h3>Firewall (UFW) Ayarlar\u0131<\/h3>\n<p>Sunucunuzda bir g\u00fcvenlik duvar\u0131 (firewall) etkinle\u015ftirmek, yetkisiz eri\u015fimi engellemek i\u00e7in kritik \u00f6neme sahiptir. Ubuntu&#8217;da varsay\u0131lan olarak UFW (Uncomplicated Firewall) bulunur.<\/p>\n<p>E\u011fer sunucunuzun sadece belirli IP adreslerinden veya sadece kendi i\u00e7inden PostgreSQL&#8217;e eri\u015fmesini istiyorsan\u0131z, UFW kurallar\u0131n\u0131 buna g\u00f6re ayarlamal\u0131s\u0131n\u0131z.<\/p>\n<p>PostgreSQL varsay\u0131lan olarak 5432 portunu kullan\u0131r.<\/p>\n<pre><code class=\"language-bash\">sudo ufw enable                       # UFW'yi etkinle\u015ftir (e\u011fer etkin de\u011filse)\nsudo ufw allow ssh                    # SSH eri\u015fimine izin ver (kendinizi kilitlemeyin!)\nsudo ufw allow 5432\/tcp               # T\u00fcm IP'lerden 5432 portuna TCP eri\u015fimine izin ver (dikkatli olun)<\/code><\/pre>\n<p>Daha g\u00fcvenli bir yakla\u015f\u0131m, sadece belirli bir IP adresinden PostgreSQL portuna eri\u015fime izin vermektir:<\/p>\n<pre><code class=\"language-bash\">sudo ufw allow from 192.168.1.100 to any port 5432 proto tcp<\/code><\/pre>\n<p>Bu komut, sadece <code>192.168.1.100<\/code> IP adresinden 5432 portuna gelen ba\u011flant\u0131lara izin verir. E\u011fer Django uygulaman\u0131z ve PostgreSQL ayn\u0131 sunucudaysa ve <code>localhost<\/code> \u00fczerinden ba\u011flan\u0131yorsan\u0131z, 5432 portunu d\u0131\u015far\u0131ya a\u00e7man\u0131za gerek kalmaz.<\/p>\n<h3>PostgreSQL Performans Ayarlar\u0131<\/h3>\n<p>PostgreSQL&#8217;in varsay\u0131lan ayarlar\u0131 genellikle k\u00fc\u00e7\u00fck sistemler i\u00e7in uygundur. Ancak, sunucunuzun kaynaklar\u0131na (RAM, CPU) ve uygulaman\u0131z\u0131n i\u015f y\u00fck\u00fcne g\u00f6re baz\u0131 parametreleri ayarlayarak performans\u0131 art\u0131rabilirsiniz. <code>postgresql.conf<\/code> dosyas\u0131 bu ayarlar\u0131 i\u00e7erir:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/postgresql\/9.3\/main\/postgresql.conf<\/code><\/pre>\n<p>Baz\u0131 \u00f6nemli parametreler:<\/p>\n<p>*   <code>shared_buffers<\/code>: PostgreSQL&#8217;in payla\u015f\u0131lan bellek alan\u0131n\u0131n boyutu. Genellikle sistem RAM&#8217;inin %25&#8217;i olarak ayarlan\u0131r. (\u00f6rn: <code>shared_buffers = 256MB<\/code>)<br \/>\n*   <code>work_mem<\/code>: Her bir sorgu i\u015flemi i\u00e7in ge\u00e7ici disk tabanl\u0131 s\u0131ralama ve hash tablolar\u0131 i\u00e7in ayr\u0131lan bellek miktar\u0131. Karma\u015f\u0131k sorgular i\u00e7in art\u0131r\u0131labilir. (\u00f6rn: <code>work_mem = 4MB<\/code>)<br \/>\n*   <code>maintenance_work_mem<\/code>: <code>VACUUM<\/code>, <code>CREATE INDEX<\/code> gibi bak\u0131m i\u015flemleri i\u00e7in ayr\u0131lan bellek. (\u00f6rn: <code>maintenance_work_mem = 64MB<\/code>)<br \/>\n*   <code>wal_buffers<\/code>: WAL (Write-Ahead Log) i\u00e7in kullan\u0131lan bellek. K\u00fc\u00e7\u00fck bir de\u011fer genellikle yeterlidir. (\u00f6rn: <code>wal_buffers = 16MB<\/code>)<br \/>\n*   <code>max_connections<\/code>: Veritaban\u0131na ayn\u0131 anda ba\u011flanabilecek maksimum istemci say\u0131s\u0131. (\u00f6rn: <code>max_connections = 100<\/code>)<\/p>\n<p>Bu ayarlar\u0131 de\u011fi\u015ftirdikten sonra PostgreSQL servisini yeniden ba\u015flatman\u0131z gerekir:<\/p>\n<pre><code class=\"language-bash\">sudo service postgresql restart<\/code><\/pre>\n<p>Bu ayarlar\u0131n optimize edilmesi, sunucunuzun kaynaklar\u0131n\u0131 daha verimli kullanmas\u0131n\u0131 sa\u011flayarak Django uygulaman\u0131z\u0131n veritaban\u0131 performans\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131rabilir. Ancak, bu ayarlar sunucunun donan\u0131m \u00f6zelliklerine ve uygulaman\u0131n kullan\u0131m senaryosuna g\u00f6re dikkatlice yap\u0131lmal\u0131d\u0131r.<\/p>\n<h2>S\u0131k Kar\u015f\u0131la\u015f\u0131lan Sorunlar ve \u00c7\u00f6z\u00fcmleri<\/h2>\n<p>Kurulum ve yap\u0131land\u0131rma s\u0131ras\u0131nda veya sonras\u0131nda baz\u0131 sorunlarla kar\u015f\u0131la\u015fabilirsiniz. \u0130\u015fte s\u0131k kar\u015f\u0131la\u015f\u0131lan baz\u0131 sorunlar ve olas\u0131 \u00e7\u00f6z\u00fcmleri:<\/p>\n<h3><code>psycopg2<\/code> Kurulum Hatalar\u0131<\/h3>\n<p>E\u011fer <code>pip install psycopg2<\/code> komutunu \u00e7al\u0131\u015ft\u0131r\u0131rken derleme hatalar\u0131 al\u0131yorsan\u0131z, bunun nedeni genellikle gerekli geli\u015ftirme k\u00fct\u00fcphanelerinin eksik olmas\u0131d\u0131r.<\/p>\n<p><strong>Hata Mesaj\u0131 \u00d6rne\u011fi:<\/strong><br \/>\n<code>Error: pg_config executable not found.<\/code><br \/>\n<code>Error: You need to install postgresql-server-dev-X.Y for building a psycopg2 module, where X.Y is the PostgreSQL version.<\/code><\/p>\n<p><strong>\u00c7\u00f6z\u00fcm:<\/strong><br \/>\nYukar\u0131da bahsetti\u011fimiz <code>libpq-dev<\/code> ve <code>python3-dev<\/code> (veya <code>python-dev<\/code> Python 2 i\u00e7in) paketlerinin kurulu oldu\u011fundan emin olun:<\/p>\n<pre><code class=\"language-bash\">sudo apt-get install libpq-dev python3-dev<\/code><\/pre>\n<p>Ard\u0131ndan, sanal ortam\u0131n\u0131zda <code>pip install psycopg2-binary<\/code> komutunu tekrar deneyin. <code>psycopg2-binary<\/code> genellikle derleme sorunlar\u0131n\u0131 \u00f6nler.<\/p>\n<h3>Yetkilendirme Hatalar\u0131 (<code>FATAL: Peer authentication failed for user \"...\"<\/code>)<\/h3>\n<p>Bu hata genellikle PostgreSQL&#8217;in <code>pg_hba.conf<\/code> dosyas\u0131ndaki kimlik do\u011frulama ayarlar\u0131yla ilgilidir. Django uygulaman\u0131z\u0131n belirtti\u011fi kullan\u0131c\u0131 ad\u0131 ve \u015fifre ile veritaban\u0131na ba\u011flanmas\u0131na izin verilmedi\u011fi anlam\u0131na gelir.<\/p>\n<p><strong>Hata Mesaj\u0131 \u00d6rne\u011fi:<\/strong><br \/>\n<code>psycopg2.OperationalError: FATAL:  Peer authentication failed for user \"mydjangouser\"<\/code><br \/>\n<code>psycopg2.OperationalError: FATAL:  password authentication failed for user \"mydjangouser\"<\/code><\/p>\n<p><strong>\u00c7\u00f6z\u00fcm:<\/strong><br \/>\n1.  <strong><code>pg_hba.conf<\/code> Dosyas\u0131n\u0131 Kontrol Edin:<\/strong><br \/>\n    <code>sudo nano \/etc\/postgresql\/9.3\/main\/pg_hba.conf<\/code> dosyas\u0131n\u0131 a\u00e7\u0131n.<br \/>\n    E\u011fer Django ve PostgreSQL ayn\u0131 sunucudaysa ve <code>localhost<\/code> \u00fczerinden ba\u011flan\u0131yorsan\u0131z, <code>127.0.0.1<\/code> i\u00e7in <code>md5<\/code> kimlik do\u011frulamas\u0131n\u0131 etkinle\u015ftirmeniz gerekir. A\u015fa\u011f\u0131daki sat\u0131r\u0131n oldu\u011fundan veya ekledi\u011finizden emin olun:<\/p>\n<pre><code class=\"language-\">host    all             all             127.0.0.1\/32            md5<\/code><\/pre>\n<p>    <code>local<\/code> ba\u011flant\u0131lar i\u00e7in de <code>peer<\/code> yerine <code>md5<\/code> kullanabilirsiniz, ancak <code>localhost<\/code> \u00fczerinden TCP\/IP ba\u011flant\u0131s\u0131 kuruyorsan\u0131z <code>host<\/code> sat\u0131r\u0131 daha \u00f6nemlidir.<br \/>\n    De\u011fi\u015fikliklerden sonra PostgreSQL servisini yeniden ba\u015flat\u0131n: <code>sudo service postgresql restart<\/code><\/p>\n<p>2.  <strong>Kullan\u0131c\u0131 \u015eifresini Kontrol Edin:<\/strong><br \/>\n    PostgreSQL kullan\u0131c\u0131s\u0131n\u0131n \u015fifresinin do\u011fru oldu\u011fundan emin olun. <code>psql<\/code> konsoluna girerek \u015fifreyi de\u011fi\u015ftirebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo -i -u postgres\n    psql\n    ALTER USER mydjangouser WITH PASSWORD 'yeni_sifre';\n    \\q\n    exit<\/code><\/pre>\n<p>    Ard\u0131ndan <code>settings.py<\/code> dosyas\u0131ndaki \u015fifreyi g\u00fcncelleyin.<\/p>\n<h3>Veritaban\u0131 Ba\u011flant\u0131 Hatalar\u0131 (<code>could not connect to server: Connection refused<\/code>)<\/h3>\n<p>Bu hata, Django uygulamas\u0131n\u0131n PostgreSQL sunucusuna hi\u00e7 ba\u011flanamad\u0131\u011f\u0131 anlam\u0131na gelir.<\/p>\n<p><strong>Hata Mesaj\u0131 \u00d6rne\u011fi:<\/strong><br \/>\n<code>psycopg2.OperationalError: could not connect to server: Connection refused<\/code><br \/>\n<code>Is the server running on host \"localhost\" (127.0.0.1) and accepting TCP\/IP connections on port 5432?<\/code><\/p>\n<p><strong>\u00c7\u00f6z\u00fcm:<\/strong><br \/>\n1.  <strong>PostgreSQL Servisinin \u00c7al\u0131\u015ft\u0131\u011f\u0131ndan Emin Olun:<\/strong><\/p>\n<pre><code class=\"language-bash\">sudo service postgresql status<\/code><\/pre>\n<p>    E\u011fer \u00e7al\u0131\u015fm\u0131yorsa ba\u015flat\u0131n: <code>sudo service postgresql start<\/code><\/p>\n<p>2.  <strong><code>postgresql.conf<\/code> Dosyas\u0131n\u0131 Kontrol Edin:<\/strong><br \/>\n    <code>sudo nano \/etc\/postgresql\/9.3\/main\/postgresql.conf<\/code> dosyas\u0131n\u0131 a\u00e7\u0131n.<br \/>\n    <code>listen_addresses<\/code> parametresinin do\u011fru ayarland\u0131\u011f\u0131ndan emin olun. E\u011fer <code>localhost<\/code> \u00fczerinden ba\u011flan\u0131yorsan\u0131z, <code>listen_addresses = 'localhost'<\/code> veya <code>listen_addresses = '*'<\/code> olmal\u0131d\u0131r. Y\u0131ld\u0131z i\u015fareti, PostgreSQL&#8217;in t\u00fcm a\u011f aray\u00fczlerinde dinlemesini sa\u011flar.<br \/>\n    De\u011fi\u015fikliklerden sonra PostgreSQL servisini yeniden ba\u015flat\u0131n.<\/p>\n<p>3.  <strong>Firewall Ayarlar\u0131n\u0131 Kontrol Edin:<\/strong><br \/>\n    E\u011fer UFW veya ba\u015fka bir g\u00fcvenlik duvar\u0131 kullan\u0131yorsan\u0131z, 5432 portunun a\u00e7\u0131k oldu\u011fundan emin olun.<br \/>\n    <code>sudo ufw status<\/code> komutuyla mevcut kurallar\u0131 kontrol edebilirsiniz. Gerekirse <code>sudo ufw allow 5432\/tcp<\/code> komutuyla portu a\u00e7\u0131n.<\/p>\n<h2>Sonu\u00e7<\/h2>\n<p>Bu kapsaml\u0131 rehberde, Django uygulaman\u0131z\u0131 Ubuntu 14.04 \u00fczerinde PostgreSQL veritaban\u0131 ile nas\u0131l entegre edece\u011finizi ad\u0131m ad\u0131m \u00f6\u011frendiniz. PostgreSQL&#8217;in kurulumundan, \u00f6zel kullan\u0131c\u0131 ve veritaban\u0131 olu\u015fturmaya, Django projenizin <code>settings.py<\/code> dosyas\u0131n\u0131 yap\u0131land\u0131rmaktan, migrasyonlar\u0131 \u00e7al\u0131\u015ft\u0131rmaya ve uygulaman\u0131z\u0131 test etmeye kadar t\u00fcm s\u00fcre\u00e7leri ele ald\u0131k. Ayr\u0131ca, g\u00fcvenlik ve performans ipu\u00e7lar\u0131 ile s\u0131k kar\u015f\u0131la\u015f\u0131lan sorunlara y\u00f6nelik \u00e7\u00f6z\u00fcmler sunarak olas\u0131 engelleri a\u015fman\u0131za yard\u0131mc\u0131 olmay\u0131 ama\u00e7lad\u0131k.<\/p>\n<p>PostgreSQL, Django ile birlikte kullan\u0131ld\u0131\u011f\u0131nda, uygulaman\u0131za sa\u011flam bir veritaban\u0131 altyap\u0131s\u0131 sa\u011flar. Veri b\u00fct\u00fcnl\u00fc\u011f\u00fcne verdi\u011fi \u00f6nem, geli\u015fmi\u015f \u00f6zellikleri ve topluluk deste\u011fi sayesinde, k\u00fc\u00e7\u00fck projelerden b\u00fcy\u00fck \u00f6l\u00e7ekli kurumsal uygulamalara kadar her t\u00fcrl\u00fc ihtiyac\u0131n\u0131z\u0131 kar\u015f\u0131layabilir. Ubuntu 14.04 gibi belirli bir i\u015fletim sistemi versiyonunda bile, bu ad\u0131mlar\u0131 takip ederek g\u00fcvenilir ve performansl\u0131 bir Django-PostgreSQL entegrasyonu kurabilirsiniz.<\/p>\n<p>Unutmay\u0131n ki, \u00fcretim ortamlar\u0131nda g\u00fcvenlik ve performans ayarlar\u0131 daha derinlemesine incelenmeli ve s\u00fcrekli olarak optimize edilmelidir. Veritaban\u0131 yedeklemesi, izleme ve daha geli\u015fmi\u015f performans ayarlar\u0131 gibi konular, uygulaman\u0131z\u0131n uzun vadeli sa\u011fl\u0131\u011f\u0131 i\u00e7in kritik \u00f6neme sahiptir. Bu rehber, ba\u015flang\u0131\u00e7 i\u00e7in sa\u011flam bir temel olu\u015fturmaktad\u0131r ve buradan hareketle projenizi daha da geli\u015ftirebilirsiniz.<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Django Uygulaman\u0131zda PostgreSQL&#8217;i Ubuntu 14.04 \u00dczerinde Kullanma Rehberi\nGiri\u015f\nModern web uygulamalar\u0131n\u0131n bel kemi\u011fini olu\u015fturan veritabanl","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-37388","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>Django Uygulaman\u0131zda PostgreSQL&#039;i Ubuntu 14.04 \u00dczerinde Kullanma 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\/django-uygulamanizda-postgresqli-ubuntu-14-04-uzerinde-kullanma-rehberi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Django Uygulaman\u0131zda PostgreSQL&#039;i Ubuntu 14.04 \u00dczerinde Kullanma Rehberi\" \/>\n<meta property=\"og:description\" content=\"Django Uygulaman\u0131zda PostgreSQL&#039;i Ubuntu 14.04 \u00dczerinde Kullanma Rehberi  Giri\u015f Modern web uygulamalar\u0131n\u0131n bel kemi\u011fini olu\u015fturan veritabanl\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/django-uygulamanizda-postgresqli-ubuntu-14-04-uzerinde-kullanma-rehberi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-02T14:40:46+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=\"18 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/django-uygulamanizda-postgresqli-ubuntu-14-04-uzerinde-kullanma-rehberi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/django-uygulamanizda-postgresqli-ubuntu-14-04-uzerinde-kullanma-rehberi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Django Uygulaman\u0131zda PostgreSQL&#8217;i Ubuntu 14.04 \u00dczerinde Kullanma Rehberi\",\"datePublished\":\"2026-01-02T14:40:46+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/django-uygulamanizda-postgresqli-ubuntu-14-04-uzerinde-kullanma-rehberi\/\"},\"wordCount\":2986,\"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\/django-uygulamanizda-postgresqli-ubuntu-14-04-uzerinde-kullanma-rehberi\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/django-uygulamanizda-postgresqli-ubuntu-14-04-uzerinde-kullanma-rehberi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/django-uygulamanizda-postgresqli-ubuntu-14-04-uzerinde-kullanma-rehberi\/\",\"name\":\"Django Uygulaman\u0131zda PostgreSQL'i Ubuntu 14.04 \u00dczerinde Kullanma Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-01-02T14:40:46+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/django-uygulamanizda-postgresqli-ubuntu-14-04-uzerinde-kullanma-rehberi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/django-uygulamanizda-postgresqli-ubuntu-14-04-uzerinde-kullanma-rehberi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/django-uygulamanizda-postgresqli-ubuntu-14-04-uzerinde-kullanma-rehberi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Django Uygulaman\u0131zda PostgreSQL&#8217;i Ubuntu 14.04 \u00dczerinde Kullanma 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":"Django Uygulaman\u0131zda PostgreSQL'i Ubuntu 14.04 \u00dczerinde Kullanma 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\/django-uygulamanizda-postgresqli-ubuntu-14-04-uzerinde-kullanma-rehberi\/","og_locale":"tr_TR","og_type":"article","og_title":"Django Uygulaman\u0131zda PostgreSQL'i Ubuntu 14.04 \u00dczerinde Kullanma Rehberi","og_description":"Django Uygulaman\u0131zda PostgreSQL'i Ubuntu 14.04 \u00dczerinde Kullanma Rehberi  Giri\u015f Modern web uygulamalar\u0131n\u0131n bel kemi\u011fini olu\u015fturan veritabanl","og_url":"https:\/\/fatihsoysal.com\/blog\/django-uygulamanizda-postgresqli-ubuntu-14-04-uzerinde-kullanma-rehberi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-01-02T14:40:46+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"18 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/django-uygulamanizda-postgresqli-ubuntu-14-04-uzerinde-kullanma-rehberi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/django-uygulamanizda-postgresqli-ubuntu-14-04-uzerinde-kullanma-rehberi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Django Uygulaman\u0131zda PostgreSQL&#8217;i Ubuntu 14.04 \u00dczerinde Kullanma Rehberi","datePublished":"2026-01-02T14:40:46+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/django-uygulamanizda-postgresqli-ubuntu-14-04-uzerinde-kullanma-rehberi\/"},"wordCount":2986,"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\/django-uygulamanizda-postgresqli-ubuntu-14-04-uzerinde-kullanma-rehberi\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/django-uygulamanizda-postgresqli-ubuntu-14-04-uzerinde-kullanma-rehberi\/","url":"https:\/\/fatihsoysal.com\/blog\/django-uygulamanizda-postgresqli-ubuntu-14-04-uzerinde-kullanma-rehberi\/","name":"Django Uygulaman\u0131zda PostgreSQL'i Ubuntu 14.04 \u00dczerinde Kullanma Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-01-02T14:40:46+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/django-uygulamanizda-postgresqli-ubuntu-14-04-uzerinde-kullanma-rehberi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/django-uygulamanizda-postgresqli-ubuntu-14-04-uzerinde-kullanma-rehberi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/django-uygulamanizda-postgresqli-ubuntu-14-04-uzerinde-kullanma-rehberi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Django Uygulaman\u0131zda PostgreSQL&#8217;i Ubuntu 14.04 \u00dczerinde Kullanma 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\/37388","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=37388"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37388\/revisions"}],"predecessor-version":[{"id":37389,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37388\/revisions\/37389"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=37388"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=37388"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=37388"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}