{"id":36037,"date":"2025-12-07T04:40:41","date_gmt":"2025-12-07T01:40:41","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=36037"},"modified":"2025-12-07T04:40:41","modified_gmt":"2025-12-07T01:40:41","slug":"centos-7-uzerinde-django-uygulamalarinizla-postgresql-kullanimi-detayli-bir-kilavuz","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/centos-7-uzerinde-django-uygulamalarinizla-postgresql-kullanimi-detayli-bir-kilavuz\/","title":{"rendered":"CentOS 7 \u00dczerinde Django Uygulamalar\u0131n\u0131zla PostgreSQL Kullan\u0131m\u0131: Detayl\u0131 Bir K\u0131lavuz"},"content":{"rendered":"<p><body><\/p>\n<h2>CentOS 7 \u00dczerinde Django Uygulamalar\u0131n\u0131zla PostgreSQL Kullan\u0131m\u0131: Detayl\u0131 Bir K\u0131lavuz<\/h2>\n<p>Django, modern web geli\u015ftirmenin en pop\u00fcler ve g\u00fc\u00e7l\u00fc Python tabanl\u0131 framework&#8217;lerinden biridir. Sa\u011flam yap\u0131s\u0131, h\u0131zl\u0131 geli\u015ftirme yetenekleri ve &#8220;pil dahil&#8221; felsefesiyle \u00f6ne \u00e7\u0131kar. Veritaban\u0131 taraf\u0131nda ise, Django varsay\u0131lan olarak SQLite kullan\u0131r. Ancak, \u00fcretim ortamlar\u0131nda veya daha karma\u015f\u0131k projelerde, daha g\u00fc\u00e7l\u00fc, \u00f6l\u00e7eklenebilir ve \u00f6zellik a\u00e7\u0131s\u0131ndan zengin bir veritaban\u0131 y\u00f6netim sistemi (DBMS) tercih etmek ka\u00e7\u0131n\u0131lmaz hale gelir. \u0130\u015fte bu noktada PostgreSQL devreye girer. PostgreSQL, a\u00e7\u0131k kaynakl\u0131, ili\u015fkisel bir veritaban\u0131 sistemi olup, g\u00fcvenilirli\u011fi, veri b\u00fct\u00fcnl\u00fc\u011f\u00fc, g\u00fc\u00e7l\u00fc \u00f6zellik seti ve performans\u0131 ile bilinir. CentOS 7 ise, kurumsal d\u00fczeyde istikrar\u0131 ve g\u00fcvenli\u011fi ile tan\u0131nan, geni\u015f \u00e7apta kullan\u0131lan bir Linux da\u011f\u0131t\u0131m\u0131d\u0131r. Bu makalede, CentOS 7 sunucunuzda PostgreSQL&#8217;i nas\u0131l kuraca\u011f\u0131n\u0131z\u0131, yap\u0131land\u0131raca\u011f\u0131n\u0131z\u0131 ve Django uygulaman\u0131zla sorunsuz bir \u015fekilde nas\u0131l entegre edece\u011finizi ad\u0131m ad\u0131m ele alaca\u011f\u0131z.<\/p>\n<h3>Giri\u015f: Django, PostgreSQL ve CentOS 7 Neden Bir Arada?<\/h3>\n<p>Django, web uygulamalar\u0131 geli\u015ftirmek i\u00e7in y\u00fcksek seviyeli bir Python web framework&#8217;\u00fcd\u00fcr. H\u0131zl\u0131 geli\u015ftirme, temiz ve pratik tasar\u0131m, ve geni\u015f topluluk deste\u011fi sayesinde bir\u00e7ok geli\u015ftiricinin ilk tercihi olmu\u015ftur. Django&#8217;nun ORM (Object-Relational Mapper) sistemi, Python kodunuzla veritaban\u0131 aras\u0131nda k\u00f6pr\u00fc kurarak, SQL sorgular\u0131 yazma ihtiyac\u0131n\u0131 b\u00fcy\u00fck \u00f6l\u00e7\u00fcde azalt\u0131r.<\/p>\n<p>PostgreSQL, a\u00e7\u0131k kaynak d\u00fcnyas\u0131n\u0131n en geli\u015fmi\u015f ve \u00f6zellikli ili\u015fkisel veritaban\u0131 y\u00f6netim sistemlerinden biridir. G\u00fc\u00e7l\u00fc ACID (Atomicity, Consistency, Isolation, Durability) garantileri, geni\u015fletilebilirli\u011fi, JSONB gibi geli\u015fmi\u015f veri tipleri deste\u011fi ve karma\u015f\u0131k sorgular\u0131 i\u015fleyebilme yetene\u011fi ile \u00f6ne \u00e7\u0131kar. \u00d6zellikle b\u00fcy\u00fck veri setleri, y\u00fcksek e\u015fzamanl\u0131l\u0131k gerektiren uygulamalar ve veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fcn kritik oldu\u011fu projeler i\u00e7in ideal bir se\u00e7imdir. Django&#8217;nun ORM&#8217;i, PostgreSQL&#8217;in sundu\u011fu bir\u00e7ok geli\u015fmi\u015f \u00f6zelli\u011fi (\u00f6rne\u011fin, tam metin arama, co\u011frafi veri tipleri) do\u011frudan kullanman\u0131za olanak tan\u0131r.<\/p>\n<p>CentOS 7 ise, Red Hat Enterprise Linux (RHEL) tabanl\u0131, kararl\u0131 ve g\u00fcvenilir bir sunucu i\u015fletim sistemidir. Kurumsal ortamlarda yayg\u0131n olarak kullan\u0131l\u0131r ve uzun s\u00fcreli destek sunar. G\u00fcvenlik, performans ve y\u00f6netim kolayl\u0131\u011f\u0131 a\u00e7\u0131s\u0131ndan iyi bir denge sunar. Django ve PostgreSQL gibi kritik uygulamalar\u0131 bar\u0131nd\u0131rmak i\u00e7in sa\u011flam bir temel sa\u011flar.<\/p>\n<p>Bu \u00fc\u00e7 teknolojinin birle\u015fimi, g\u00fc\u00e7l\u00fc, \u00f6l\u00e7eklenebilir ve g\u00fcvenli web uygulamalar\u0131 geli\u015ftirmek i\u00e7in ideal bir ekosistem sunar. CentOS 7&#8217;nin sa\u011flam altyap\u0131s\u0131 \u00fczerinde PostgreSQL&#8217;in geli\u015fmi\u015f veritaban\u0131 yeteneklerini kullanarak, Django uygulaman\u0131z\u0131n performans\u0131n\u0131 ve g\u00fcvenilirli\u011fini en \u00fcst d\u00fczeye \u00e7\u0131karabilirsiniz.<\/p>\n<h3>\u00d6n Gereksinimler<\/h3>\n<p>Bu k\u0131lavuzu takip etmeden \u00f6nce a\u015fa\u011f\u0131daki \u00f6n gereksinimlere sahip oldu\u011funuzdan emin olun:<\/p>\n<p>*   <strong>CentOS 7 Sunucusu:<\/strong> SSH eri\u015fimi olan, g\u00fcncel bir CentOS 7 sunucusu.<br \/>\n*   <strong>Sudo Yetkileri:<\/strong> Sunucuda <code>sudo<\/code> yetkilerine sahip bir kullan\u0131c\u0131 hesab\u0131.<br \/>\n*   <strong>Temel Linux Bilgisi:<\/strong> Komut sat\u0131r\u0131 kullan\u0131m\u0131 ve dosya d\u00fczenleme konular\u0131nda temel bilgi.<br \/>\n*   <strong>Python ve Pip:<\/strong> Python 3 ve pip&#8217;in sunucuda kurulu olmas\u0131. Genellikle CentOS 7&#8217;de Python 2.7 varsay\u0131lan olarak gelir. Python 3&#8217;\u00fc y\u00fcklemek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">sudo yum install python3 python3-pip<\/code><\/pre>\n<p>    veya Software Collections (SCL) kullanarak daha yeni bir Python s\u00fcr\u00fcm\u00fc:<\/p>\n<pre><code class=\"language-bash\">sudo yum install centos-release-scl\n    sudo yum install rh-python38\n    scl enable rh-python38 bash<\/code><\/pre>\n<p>    Bu k\u0131lavuzda Python 3&#8217;\u00fcn kurulu oldu\u011funu varsayaca\u011f\u0131z.<\/p>\n<h3>CentOS 7 \u00dczerine PostgreSQL Kurulumu<\/h3>\n<p>PostgreSQL&#8217;i CentOS 7 \u00fczerine kurmak i\u00e7in birka\u00e7 ad\u0131m gereklidir. Varsay\u0131lan CentOS depolar\u0131 genellikle eski PostgreSQL s\u00fcr\u00fcmlerini i\u00e7erir. Daha yeni bir s\u00fcr\u00fcm istiyorsan\u0131z, PostgreSQL&#8217;in kendi resmi YUM deposunu kullanmak daha iyi bir yakla\u015f\u0131md\u0131r. Ancak, bu k\u0131lavuzda varsay\u0131lan depolardaki s\u00fcr\u00fcm\u00fc kullanarak temel kurulumu g\u00f6sterece\u011fiz, bu da bir\u00e7ok kullan\u0131m durumu i\u00e7in yeterlidir.<\/p>\n<h4>EPEL Deposunu Etkinle\u015ftirme (\u0130ste\u011fe Ba\u011fl\u0131 ama \u00d6nerilir)<\/h4>\n<p>Baz\u0131 paketler veya ba\u011f\u0131ml\u0131l\u0131klar i\u00e7in EPEL (Extra Packages for Enterprise Linux) deposu gerekli olabilir. Bu depoyu etkinle\u015ftirmek iyi bir uygulamad\u0131r.<\/p>\n<pre><code class=\"language-bash\">sudo yum install epel-release<\/code><\/pre>\n<h4>PostgreSQL Paketlerini Y\u00fckleme<\/h4>\n<p>CentOS 7 depolar\u0131nda bulunan PostgreSQL sunucu ve katk\u0131 paketlerini y\u00fckleyelim:<\/p>\n<pre><code class=\"language-bash\">sudo yum install postgresql-server postgresql-contrib<\/code><\/pre>\n<p>Bu komut, PostgreSQL sunucu yaz\u0131l\u0131m\u0131n\u0131 ve baz\u0131 yararl\u0131 ek ara\u00e7lar\u0131 (\u00f6rne\u011fin <code>pg_dump<\/code>, <code>psql<\/code>) y\u00fckleyecektir. Y\u00fckleme tamamland\u0131\u011f\u0131nda, veritaban\u0131 k\u00fcmesini ba\u015flatman\u0131z gerekir.<\/p>\n<h4>Veritaban\u0131n\u0131 Ba\u015flatma<\/h4>\n<p>PostgreSQL&#8217;i kullanmaya ba\u015flamadan \u00f6nce, bir veri dizini olu\u015fturup veritaban\u0131 k\u00fcmesini ba\u015flatman\u0131z gerekir. Bu i\u015flem, PostgreSQL&#8217;in tablolar\u0131n\u0131 ve di\u011fer nesnelerini depolayaca\u011f\u0131 dosyalar\u0131 olu\u015fturur.<\/p>\n<pre><code class=\"language-bash\">sudo postgresql-setup initdb<\/code><\/pre>\n<p>Bu komut, <code>\/var\/lib\/pgsql\/data<\/code> dizininde yeni bir PostgreSQL veri k\u00fcmesi olu\u015fturacakt\u0131r.<\/p>\n<h4>PostgreSQL Servisini Ba\u015flatma ve Etkinle\u015ftirme<\/h4>\n<p>Veritaban\u0131 ba\u015flat\u0131ld\u0131ktan sonra, PostgreSQL servisini ba\u015flatabilir ve sunucu her yeniden ba\u015flat\u0131ld\u0131\u011f\u0131nda otomatik olarak ba\u015flamas\u0131 i\u00e7in etkinle\u015ftirebilirsiniz.<\/p>\n<pre><code class=\"language-bash\">sudo systemctl start postgresql\nsudo systemctl enable postgresql<\/code><\/pre>\n<h4>PostgreSQL Durumunu Kontrol Etme<\/h4>\n<p>Servisin ba\u015far\u0131yla \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 systemctl status postgresql<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131da <code>active (running)<\/code> ibaresini g\u00f6rmelisiniz.<\/p>\n<h3>PostgreSQL Kullan\u0131c\u0131s\u0131 ve Veritaban\u0131 Olu\u015fturma<\/h3>\n<p>G\u00fcvenlik ve izolasyon a\u00e7\u0131s\u0131ndan, Django uygulaman\u0131z i\u00e7in \u00f6zel bir veritaban\u0131 ve bu veritaban\u0131na eri\u015fim yetkisi olan \u00f6zel bir PostgreSQL kullan\u0131c\u0131s\u0131 olu\u015fturmak en iyi uygulamad\u0131r. Varsay\u0131lan olarak, PostgreSQL bir <code>postgres<\/code> s\u00fcper kullan\u0131c\u0131s\u0131 olu\u015fturur.<\/p>\n<h4>PostgreSQL Kabu\u011funa Eri\u015fim<\/h4>\n<p><code>postgres<\/code> kullan\u0131c\u0131s\u0131 olarak PostgreSQL kabu\u011funa (psql) eri\u015fmek i\u00e7in a\u015fa\u011f\u0131daki komutu kullan\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo -i -u postgres psql<\/code><\/pre>\n<p>Bu komut sizi <code>psql<\/code> komut istemcisine g\u00f6t\u00fcrecektir.<\/p>\n<h4>Yeni Bir Kullan\u0131c\u0131 Olu\u015fturma<\/h4>\n<p>Django uygulaman\u0131z\u0131n kullanaca\u011f\u0131 yeni bir veritaban\u0131 kullan\u0131c\u0131s\u0131 olu\u015ftural\u0131m. Kullan\u0131c\u0131 ad\u0131n\u0131 ve \u015fifresini kendi tercihinize g\u00f6re belirleyin. G\u00fc\u00e7l\u00fc bir \u015fifre se\u00e7ti\u011finizden emin olun.<\/p>\n<pre><code class=\"language-sql\">CREATE USER django_user WITH PASSWORD 'cok_guclu_sifre';<\/code><\/pre>\n<p><code>cok_guclu_sifre<\/code> yerine kendi \u015fifrenizi yazmay\u0131 unutmay\u0131n.<\/p>\n<h4>Yeni Bir Veritaban\u0131 Olu\u015fturma<\/h4>\n<p>\u015eimdi Django uygulaman\u0131z i\u00e7in yeni bir veritaban\u0131 olu\u015ftural\u0131m ve sahibi olarak az \u00f6nce olu\u015fturdu\u011fumuz <code>django_user<\/code> kullan\u0131c\u0131s\u0131n\u0131 atayal\u0131m.<\/p>\n<pre><code class=\"language-sql\">CREATE DATABASE django_db OWNER django_user;<\/code><\/pre>\n<p>Bu komut, <code>django_db<\/code> ad\u0131nda yeni bir veritaban\u0131 olu\u015fturur ve bu veritaban\u0131n\u0131n t\u00fcm yetkilerini <code>django_user<\/code>&#8216;a verir.<\/p>\n<h4>Yetkileri Kontrol Etme (\u0130ste\u011fe Ba\u011fl\u0131)<\/h4>\n<p>E\u011fer isterseniz, olu\u015fturdu\u011funuz kullan\u0131c\u0131ya veritaban\u0131 \u00fczerinde a\u00e7\u0131k\u00e7a t\u00fcm yetkileri verebilirsiniz, ancak <code>OWNER<\/code> olarak atand\u0131\u011f\u0131nda bu genellikle zaten sa\u011flan\u0131r.<\/p>\n<pre><code class=\"language-sql\">GRANT ALL PRIVILEGES ON DATABASE django_db TO django_user;<\/code><\/pre>\n<h4>PostgreSQL Kabu\u011fundan \u00c7\u0131k\u0131\u015f<\/h4>\n<p>\u0130\u015flemleriniz bitti\u011finde, <code>psql<\/code> kabu\u011fundan \u00e7\u0131kmak i\u00e7in <code>\\q<\/code> yaz\u0131p Enter tu\u015funa bas\u0131n:<\/p>\n<pre><code class=\"language-sql\">\\q<\/code><\/pre>\n<h3>PostgreSQL Uzaktan Ba\u011flant\u0131 Ayarlar\u0131 (\u0130ste\u011fe Ba\u011fl\u0131 ama Gerekliyse)<\/h3>\n<p>E\u011fer Django uygulaman\u0131z ve PostgreSQL veritaban\u0131n\u0131z ayn\u0131 sunucuda \u00e7al\u0131\u015f\u0131yorsa, uzaktan ba\u011flant\u0131 ayarlar\u0131na genellikle ihtiyac\u0131n\u0131z olmaz. Ancak, Django uygulaman\u0131z farkl\u0131 bir sunucuda \u00e7al\u0131\u015f\u0131yorsa veya veritaban\u0131n\u0131za ba\u015fka bir makineden eri\u015fmeniz gerekiyorsa, PostgreSQL&#8217;i uzaktan ba\u011flant\u0131lara izin verecek \u015fekilde yap\u0131land\u0131rman\u0131z gerekir. <strong>G\u00fcvenlik nedeniyle, bu ad\u0131mlar\u0131 yaln\u0131zca ger\u00e7ekten ihtiyac\u0131n\u0131z varsa ve gerekli g\u00fcvenlik \u00f6nlemlerini (g\u00fc\u00e7l\u00fc \u015fifreler, firewall kurallar\u0131) ald\u0131\u011f\u0131n\u0131zdan emin olarak uygulay\u0131n.<\/strong><\/p>\n<h4><code>postgresql.conf<\/code> Dosyas\u0131n\u0131 D\u00fczenleme<\/h4>\n<p>Bu dosya, PostgreSQL sunucusunun genel yap\u0131land\u0131rma ayarlar\u0131n\u0131 i\u00e7erir. Uzaktan ba\u011flant\u0131lara izin vermek i\u00e7in <code>listen_addresses<\/code> ayar\u0131n\u0131 de\u011fi\u015ftirmeniz gerekir.<\/p>\n<pre><code class=\"language-bash\">sudo vi \/var\/lib\/pgsql\/data\/postgresql.conf<\/code><\/pre>\n<p><code>listen_addresses<\/code> sat\u0131r\u0131n\u0131 bulun (genellikle yorum sat\u0131r\u0131 olarak <code>#listen_addresses = 'localhost'<\/code> \u015feklinde bulunur) ve a\u015fa\u011f\u0131daki gibi de\u011fi\u015ftirin:<\/p>\n<pre><code class=\"language-\">listen_addresses = '*'<\/code><\/pre>\n<p>Bu ayar, PostgreSQL&#8217;in t\u00fcm a\u011f aray\u00fczlerindeki ba\u011flant\u0131lar\u0131 dinlemesini sa\u011flar. Daha g\u00fcvenli bir yakla\u015f\u0131m, yaln\u0131zca belirli IP adreslerinden gelen ba\u011flant\u0131lara izin vermektir (\u00f6rne\u011fin, <code>listen_addresses = 'localhost,192.168.1.100'<\/code>).<\/p>\n<h4><code>pg_hba.conf<\/code> Dosyas\u0131n\u0131 D\u00fczenleme<\/h4>\n<p><code>pg_hba.conf<\/code> (host-based authentication) dosyas\u0131, hangi kullan\u0131c\u0131lar\u0131n hangi veritabanlar\u0131na hangi IP adreslerinden hangi kimlik do\u011frulama y\u00f6ntemleriyle ba\u011flanabilece\u011fini tan\u0131mlar.<\/p>\n<pre><code class=\"language-bash\">sudo vi \/var\/lib\/pgsql\/data\/pg_hba.conf<\/code><\/pre>\n<p>Dosyan\u0131n sonuna a\u015fa\u011f\u0131daki sat\u0131r\u0131 ekleyin:<\/p>\n<pre><code class=\"language-\"># TYPE  DATABASE        USER            ADDRESS                 METHOD\nhost    django_db       django_user     0.0.0.0\/0               md5<\/code><\/pre>\n<p>*   <code>TYPE<\/code>: <code>host<\/code> (TCP\/IP \u00fczerinden ba\u011flant\u0131)<br \/>\n*   <code>DATABASE<\/code>: <code>django_db<\/code> (ba\u011flan\u0131lacak veritaban\u0131)<br \/>\n*   <code>USER<\/code>: <code>django_user<\/code> (ba\u011flanacak kullan\u0131c\u0131)<br \/>\n*   <code>ADDRESS<\/code>: <code>0.0.0.0\/0<\/code> (t\u00fcm IP adreslerinden gelen ba\u011flant\u0131lara izin ver. <strong>Bu, g\u00fcvenlik a\u00e7\u0131s\u0131ndan risklidir.<\/strong> Ger\u00e7ek bir \u00fcretim ortam\u0131nda, Django uygulaman\u0131z\u0131n \u00e7al\u0131\u015ft\u0131\u011f\u0131 sunucunun belirli IP adresini veya IP aral\u0131\u011f\u0131n\u0131 (\u00f6rne\u011fin, <code>192.168.1.0\/24<\/code>) belirtmelisiniz.)<br \/>\n*   <code>METHOD<\/code>: <code>md5<\/code> (\u015fifre tabanl\u0131 kimlik do\u011frulama)<\/p>\n<p>De\u011fi\u015fiklikleri kaydedip dosyay\u0131 kapat\u0131n.<\/p>\n<h4>PostgreSQL Servisini Yeniden Ba\u015flatma<\/h4>\n<p>Yap\u0131land\u0131rma dosyalar\u0131nda yapt\u0131\u011f\u0131n\u0131z de\u011fi\u015fikliklerin etkili olmas\u0131 i\u00e7in PostgreSQL servisini yeniden ba\u015flatman\u0131z gerekir:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl restart postgresql<\/code><\/pre>\n<h4>Firewall Ayarlar\u0131<\/h4>\n<p>CentOS 7&#8217;de varsay\u0131lan olarak <code>firewalld<\/code> etkindir. PostgreSQL&#8217;in varsay\u0131lan portu olan 5432&#8217;ye d\u0131\u015far\u0131dan eri\u015fime izin vermek i\u00e7in firewall&#8217;da bir kural olu\u015fturman\u0131z gerekir.<\/p>\n<pre><code class=\"language-bash\">sudo firewall-cmd --permanent --add-service=postgresql\nsudo firewall-cmd --reload<\/code><\/pre>\n<p>E\u011fer <code>postgresql<\/code> servisi tan\u0131ml\u0131 de\u011filse veya portu do\u011frudan belirtmek isterseniz:<\/p>\n<pre><code class=\"language-bash\">sudo firewall-cmd --permanent --add-port=5432\/tcp\nsudo firewall-cmd --reload<\/code><\/pre>\n<p>Bu ad\u0131mlar\u0131 tamamlad\u0131ktan sonra, PostgreSQL sunucunuz uzaktan ba\u011flant\u0131lara izin verecek \u015fekilde yap\u0131land\u0131r\u0131lm\u0131\u015f olacakt\u0131r.<\/p>\n<h3>Django Uygulaman\u0131z\u0131 PostgreSQL&#8217;e Ba\u011flama<\/h3>\n<p>\u015eimdi s\u0131ra Django uygulaman\u0131z\u0131 PostgreSQL veritaban\u0131na ba\u011flamaya geldi.<\/p>\n<h4>Python Sanal Ortam\u0131 Olu\u015fturma ve Etkinle\u015ftirme<\/h4>\n<p>Her zaman oldu\u011fu gibi, Django projeniz i\u00e7in izole bir Python sanal ortam\u0131 kullanmak en iyi uygulamad\u0131r.<\/p>\n<pre><code class=\"language-bash\"># Proje dizininize gidin veya yeni bir dizin olu\u015fturun\nmkdir my_django_project\ncd my_django_project\n\n<h2>Sanal ortam olu\u015fturma<\/h2>\npython3 -m venv venv\n\n<h2>Sanal ortam\u0131 etkinle\u015ftirme<\/h2>\nsource venv\/bin\/activate<\/code><\/pre>\n<h4>Gerekli Python Paketlerini Y\u00fckleme<\/h4>\n<p>Sanal ortam etkinle\u015ftirildikten sonra, Django ve PostgreSQL ile ileti\u015fim kurmak i\u00e7in <code>psycopg2-binary<\/code> paketini y\u00fcklemeniz gerekir. <code>psycopg2-binary<\/code>, <code>psycopg2<\/code>&#8216;nin \u00f6nceden derlenmi\u015f bir s\u00fcr\u00fcm\u00fcd\u00fcr ve derleyici ba\u011f\u0131ml\u0131l\u0131klar\u0131 olmadan kolayca kurulabilir.<\/p>\n<pre><code class=\"language-bash\">pip install Django psycopg2-binary<\/code><\/pre>\n<h4>Django Projesi Olu\u015fturma (Varsa Atla)<\/h4>\n<p>E\u011fer zaten bir Django projeniz varsa bu ad\u0131m\u0131 atlay\u0131n. Yeni bir proje olu\u015fturmak i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">django-admin startproject myproject .<\/code><\/pre>\n<p>Bu komut, mevcut dizinde <code>myproject<\/code> ad\u0131nda bir Django projesi olu\u015fturacakt\u0131r.<\/p>\n<h4><code>settings.py<\/code> Dosyas\u0131n\u0131 Yap\u0131land\u0131rma<\/h4>\n<p>Django projenizin <code>settings.py<\/code> dosyas\u0131n\u0131 a\u00e7\u0131n ve <code>DATABASES<\/code> ayar\u0131n\u0131 PostgreSQL veritaban\u0131n\u0131za ba\u011flanacak \u015fekilde g\u00fcncelleyin.<\/p>\n<pre><code class=\"language-bash\">vi myproject\/settings.py<\/code><\/pre>\n<p><code>DATABASES<\/code> b\u00f6l\u00fcm\u00fcn\u00fc a\u015fa\u011f\u0131daki gibi d\u00fczenleyin:<\/p>\n<pre><code class=\"language-python\">DATABASES = {\n    'default': {\n        'ENGINE': 'django.db.backends.postgresql',\n        'NAME': 'django_db',          # Olu\u015fturdu\u011funuz veritaban\u0131 ad\u0131\n        'USER': 'django_user',         # Olu\u015fturdu\u011funuz kullan\u0131c\u0131 ad\u0131\n        'PASSWORD': 'cok_guclu_sifre', # Kullan\u0131c\u0131n\u0131n \u015fifresi\n        'HOST': 'localhost',           # Veritaban\u0131 sunucusunun IP adresi veya hostname\n                                       # Ayn\u0131 sunucudaysa 'localhost' veya '127.0.0.1'\n                                       # Uzak sunucudaysa o sunucunun IP adresi\n        'PORT': '5432',                # PostgreSQL'in varsay\u0131lan portu\n    }\n}<\/code><\/pre>\n<p><code>NAME<\/code>, <code>USER<\/code>, <code>PASSWORD<\/code>, <code>HOST<\/code> ve <code>PORT<\/code> de\u011ferlerini kendi yap\u0131land\u0131rman\u0131za g\u00f6re g\u00fcncelledi\u011finizden emin olun. \u00d6zellikle <code>HOST<\/code> de\u011feri, PostgreSQL sunucunuzun konumuna g\u00f6re de\u011fi\u015fecektir.<\/p>\n<h4>Veritaban\u0131 Ba\u011flant\u0131s\u0131n\u0131 Test Etme<\/h4>\n<p><code>settings.py<\/code> dosyas\u0131n\u0131 yap\u0131land\u0131rd\u0131ktan sonra, Django&#8217;nun veritaban\u0131na ba\u011flan\u0131p ba\u011flanamad\u0131\u011f\u0131n\u0131 ve modelleri senkronize edip edemedi\u011fini test edebilirsiniz.<\/p>\n<p>\u00d6nce, Django&#8217;nun veritaban\u0131 ayarlar\u0131n\u0131z\u0131 kontrol etmesini sa\u011flay\u0131n:<\/p>\n<pre><code class=\"language-bash\">python manage.py check<\/code><\/pre>\n<p>Herhangi bir hata g\u00f6rm\u00fcyorsan\u0131z, ba\u011flant\u0131 ba\u015far\u0131l\u0131 demektir. \u015eimdi Django&#8217;nun ba\u015flang\u0131\u00e7taki veritaban\u0131 tablolar\u0131n\u0131 olu\u015fturmak i\u00e7in migrasyonlar\u0131 \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">python manage.py makemigrations\npython manage.py migrate<\/code><\/pre>\n<p><code>migrate<\/code> komutu, Django&#8217;nun dahili tablolar\u0131n\u0131 (kullan\u0131c\u0131lar, oturumlar vb.) ve varsa kendi uygulamalar\u0131n\u0131z\u0131n modelleri i\u00e7in tablolar\u0131 PostgreSQL veritaban\u0131n\u0131zda olu\u015fturacakt\u0131r. Herhangi bir hata almazsan\u0131z, Django uygulaman\u0131z ba\u015far\u0131yla PostgreSQL&#8217;e ba\u011flanm\u0131\u015f demektir.<\/p>\n<h4>S\u00fcper Kullan\u0131c\u0131 Olu\u015fturma<\/h4>\n<p>Django y\u00f6netim panelini kullanabilmek i\u00e7in bir s\u00fcper kullan\u0131c\u0131 olu\u015fturun:<\/p>\n<pre><code class=\"language-bash\">python manage.py createsuperuser<\/code><\/pre>\n<p>Komut istemlerini takip ederek kullan\u0131c\u0131 ad\u0131, e-posta ve \u015fifre belirleyin.<\/p>\n<h4>Django Uygulamas\u0131n\u0131 \u00c7al\u0131\u015ft\u0131rma<\/h4>\n<p>Son olarak, Django geli\u015ftirme sunucusunu \u00e7al\u0131\u015ft\u0131rarak uygulaman\u0131z\u0131n d\u00fczg\u00fcn \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 do\u011frulay\u0131n:<\/p>\n<pre><code class=\"language-bash\">python manage.py runserver 0.0.0.0:8000<\/code><\/pre>\n<p>E\u011fer firewall&#8217;\u0131n\u0131z a\u00e7\u0131ksa, sunucunuzun IP adresini ve 8000 portunu kullanarak web taray\u0131c\u0131n\u0131zdan uygulaman\u0131za eri\u015febilirsiniz (\u00f6rn. <code>http:\/\/sunucu_ip_adresi:8000\/admin\/<\/code>). S\u00fcper kullan\u0131c\u0131 bilgilerinizle giri\u015f yaparak Django y\u00f6netim panelini kontrol edebilirsiniz.<\/p>\n<h3>Geli\u015fmi\u015f Konular ve En \u0130yi Uygulamalar<\/h3>\n<p>Django uygulaman\u0131z\u0131 PostgreSQL ile ba\u015far\u0131yla entegre ettikten sonra, \u00fcretim ortamlar\u0131 i\u00e7in veya daha iyi performans ve g\u00fcvenilirlik sa\u011flamak ad\u0131na baz\u0131 geli\u015fmi\u015f konular\u0131 ve en iyi uygulamalar\u0131 g\u00f6z \u00f6n\u00fcnde bulundurman\u0131z \u00f6nemlidir.<\/p>\n<h4>G\u00fcvenlik \u0130pu\u00e7lar\u0131<\/h4>\n<p>*   <strong>G\u00fc\u00e7l\u00fc \u015eifreler:<\/strong> Veritaban\u0131 kullan\u0131c\u0131lar\u0131n\u0131z i\u00e7in her zaman g\u00fc\u00e7l\u00fc, karma\u015f\u0131k \u015fifreler kullan\u0131n.<br \/>\n*   <strong>Uzaktan Eri\u015fimi K\u0131s\u0131tlama:<\/strong> <code>pg_hba.conf<\/code> ve <code>postgresql.conf<\/code> dosyalar\u0131nda <code>0.0.0.0\/0<\/code> yerine, uygulaman\u0131z\u0131n \u00e7al\u0131\u015ft\u0131\u011f\u0131 sunucunun belirli IP adreslerini veya g\u00fcvenli a\u011f aral\u0131klar\u0131n\u0131 belirtin.<br \/>\n*   <strong>SSL\/TLS Kullan\u0131m\u0131:<\/strong> Veritaban\u0131 ba\u011flant\u0131lar\u0131n\u0131 \u015fifrelemek i\u00e7in SSL\/TLS kullan\u0131n. Django <code>settings.py<\/code> i\u00e7inde <code>OPTIONS={'sslmode': 'require'}<\/code> gibi ayarlar ekleyerek bunu zorunlu k\u0131labilirsiniz.<br \/>\n*   <strong>Ayr\u0131cal\u0131klar\u0131n En Az\u0131 Prensibi:<\/strong> Django uygulaman\u0131z\u0131n veritaban\u0131 kullan\u0131c\u0131s\u0131na yaln\u0131zca ihtiya\u00e7 duydu\u011fu minimum yetkileri verin. S\u00fcper kullan\u0131c\u0131 yetkilerini asla uygulama kullan\u0131c\u0131s\u0131na vermeyin.<br \/>\n*   <strong>SELinux:<\/strong> CentOS 7&#8217;de SELinux varsay\u0131lan olarak etkindir. PostgreSQL veya Django uygulaman\u0131z\u0131n dosya eri\u015fiminde sorunlar ya\u015f\u0131yorsan\u0131z, SELinux politikalar\u0131n\u0131 kontrol etmeniz veya uygun kurallar\u0131 eklemeniz gerekebilir. Ge\u00e7ici olarak kapatmak yerine (ki bu g\u00fcvenlik riski ta\u015f\u0131r), <code>semanage<\/code> veya <code>audit2allow<\/code> gibi ara\u00e7larla do\u011fru politikalar\u0131 olu\u015fturun.<\/p>\n<h4>Performans Optimizasyonu<\/h4>\n<p>*   <strong>\u0130ndeksleme:<\/strong> S\u0131k\u00e7a sorgulanan s\u00fctunlara (\u00f6zellikle <code>WHERE<\/code> ve <code>ORDER BY<\/code> clause&#8217;lar\u0131nda kullan\u0131lanlara) indeksler ekleyerek sorgu performans\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131rabilirsiniz. Django&#8217;da <code>db_index=True<\/code> veya <code>indexes<\/code> meta se\u00e7ene\u011fini kullanarak indeksler olu\u015fturabilirsiniz.<br \/>\n*   <strong>Sorgu Optimizasyonu:<\/strong> N+1 sorgu sorunlar\u0131ndan ka\u00e7\u0131nmak i\u00e7in <code>select_related()<\/code> ve <code>prefetch_related()<\/code> gibi Django ORM \u00f6zelliklerini kullan\u0131n. Karma\u015f\u0131k sorgular\u0131 optimize etmek i\u00e7in <code>EXPLAIN ANALYZE<\/code> komutuyla sorgu planlar\u0131n\u0131 inceleyin.<br \/>\n*   <strong>Ba\u011flant\u0131 Havuzlama (Connection Pooling):<\/strong> Y\u00fcksek trafikli uygulamalarda, her istek i\u00e7in yeni bir veritaban\u0131 ba\u011flant\u0131s\u0131 a\u00e7mak yerine, PgBouncer gibi bir ba\u011flant\u0131 havuzlama arac\u0131 kullanmak performans\u0131 art\u0131rabilir ve veritaban\u0131 \u00fczerindeki y\u00fck\u00fc azaltabilir.<br \/>\n*   <strong>Veritaban\u0131 Bak\u0131m\u0131:<\/strong> PostgreSQL&#8217;de d\u00fczenli <code>VACUUM<\/code> ve <code>ANALYZE<\/code> i\u015flemleri, \u00f6l\u00fc tuple&#8217;lar\u0131 temizleyerek ve sorgu planlay\u0131c\u0131s\u0131n\u0131 g\u00fcncelleyerek performans\u0131 art\u0131r\u0131r. Bu i\u015flemleri otomatikle\u015ftirmek i\u00e7in <code>autovacuum<\/code> ayarlar\u0131n\u0131 kontrol edin.<\/p>\n<h4>Yedekleme ve Geri Y\u00fckleme<\/h4>\n<p>Veri kayb\u0131n\u0131 \u00f6nlemek i\u00e7in d\u00fczenli yedeklemeler kritik \u00f6neme sahiptir.<\/p>\n<p>*   <strong><code>pg_dump<\/code>:<\/strong> PostgreSQL&#8217;in yerle\u015fik <code>pg_dump<\/code> arac\u0131, veritaban\u0131n\u0131z\u0131n yede\u011fini almak i\u00e7in kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-bash\">pg_dump -U django_user -h localhost django_db > django_db_yedek.sql<\/code><\/pre>\n<p>*   <strong><code>pg_restore<\/code>:<\/strong> <code>pg_dump<\/code> ile al\u0131nan yedekleri geri y\u00fcklemek i\u00e7in <code>pg_restore<\/code> kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-bash\">psql -U django_user -h localhost -d django_db < django_db_yedek.sql<\/code><\/pre>\n<p>*   <strong>Otomatik Yedekleme \u00c7\u00f6z\u00fcmleri:<\/strong> Cron i\u015fleri veya \u00f6zel betikler kullanarak d\u00fczenli ve otomatik yedeklemeler olu\u015fturmay\u0131 planlay\u0131n. Yedekleri farkl\u0131 bir depolama konumuna (uzak sunucu, bulut depolama) ta\u015f\u0131may\u0131 unutmay\u0131n.<\/p>\n<h4>Da\u011f\u0131t\u0131m ve \u00d6l\u00e7eklenebilirlik<\/h4>\n<p>*   <strong>Gunicorn\/Nginx ile Da\u011f\u0131t\u0131m:<\/strong> Geli\u015ftirme sunucusu (<code>runserver<\/code>) \u00fcretim i\u00e7in uygun de\u011fildir. Django uygulaman\u0131z\u0131 Gunicorn gibi bir WSGI sunucusu ve Nginx gibi bir ters proxy\/web sunucusu ile da\u011f\u0131t\u0131n. Nginx, statik dosyalar\u0131 sunar, trafi\u011fi y\u00f6netir ve SSL sonland\u0131rmas\u0131 yapar.<br \/>\n*   <strong>Veritaban\u0131 Replikasyonu:<\/strong> Y\u00fcksek kullan\u0131labilirlik ve okuma performans\u0131 i\u00e7in PostgreSQL replikasyonunu (\u00f6rne\u011fin, ak\u0131\u015f replikasyonu) kullanmay\u0131 d\u00fc\u015f\u00fcnebilirsiniz. Bu, birincil veritaban\u0131 sunucusunun ba\u015far\u0131s\u0131z olmas\u0131 durumunda ikincil bir sunucunun devreye girmesini sa\u011flar.<\/p>\n<h3>Sorun Giderme<\/h3>\n<p>Kurulum veya yap\u0131land\u0131rma s\u0131ras\u0131nda kar\u015f\u0131la\u015fabilece\u011finiz baz\u0131 yayg\u0131n sorunlar ve \u00e7\u00f6z\u00fcmleri:<\/p>\n<p>*   <strong><code>psycopg2<\/code> Kurulum Hatalar\u0131:<\/strong> <code>psycopg2-binary<\/code> yerine <code>psycopg2<\/code> kurmaya \u00e7al\u0131\u015f\u0131rken derleyici ba\u011f\u0131ml\u0131l\u0131klar\u0131 (\u00f6rne\u011fin <code>pg_config<\/code> bulunamad\u0131) nedeniyle hatalar alabilirsiniz. <code>postgresql-devel<\/code> paketini y\u00fckleyerek bu ba\u011f\u0131ml\u0131l\u0131klar\u0131 \u00e7\u00f6zebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo yum install postgresql-devel<\/code><\/pre>\n<p>    Ancak <code>psycopg2-binary<\/code> genellikle bu sorunlar\u0131 a\u015far.<br \/>\n*   <strong>Ba\u011flant\u0131 Hatalar\u0131:<\/strong><br \/>\n    *   <strong><code>FATAL: password authentication failed for user \"django_user\"<\/code>:<\/strong> <code>settings.py<\/code> dosyas\u0131ndaki kullan\u0131c\u0131 ad\u0131 veya \u015fifrenin do\u011fru oldu\u011fundan emin olun.<br \/>\n    *   <strong><code>FATAL: Peer authentication failed for user \"django_user\"<\/code>:<\/strong> <code>pg_hba.conf<\/code> dosyas\u0131ndaki kimlik do\u011frulama y\u00f6ntemini kontrol edin. <code>md5<\/code> yerine <code>peer<\/code> veya <code>ident<\/code> kullan\u0131l\u0131yorsa, bu hatay\u0131 al\u0131rs\u0131n\u0131z.<br \/>\n    *   <strong><code>could not connect to server: Connection refused<\/code>:<\/strong><br \/>\n        *   PostgreSQL servisi \u00e7al\u0131\u015fm\u0131yor olabilir (<code>sudo systemctl status postgresql<\/code> ile kontrol edin).<br \/>\n        *   Firewall, 5432 portuna eri\u015fimi engelliyor olabilir (<code>sudo firewall-cmd --list-all<\/code> ile kontrol edin ve gerekirse kural ekleyin).<br \/>\n        <em>   <code>postgresql.conf<\/code> dosyas\u0131ndaki <code>listen_addresses<\/code> ayar\u0131 yanl\u0131\u015f olabilir (uzak ba\u011flant\u0131lar i\u00e7in <code>'<\/em>'<\/code> veya do\u011fru IP adresi olmal\u0131).<br \/>\n*   <strong>Veritaban\u0131 Bulunamad\u0131\/Kullan\u0131c\u0131 Yetkisi Yok Hatalar\u0131:<\/strong> <code>settings.py<\/code> dosyas\u0131ndaki <code>NAME<\/code> ve <code>USER<\/code> de\u011ferlerinin PostgreSQL'de olu\u015fturdu\u011funuz veritaban\u0131 ve kullan\u0131c\u0131 ile tam olarak e\u015fle\u015fti\u011finden emin olun. Kullan\u0131c\u0131n\u0131n veritaban\u0131 \u00fczerinde gerekli yetkilere sahip olup olmad\u0131\u011f\u0131n\u0131 <code>psql<\/code> kabu\u011fundan kontrol edin.<br \/>\n*   <strong>CentOS 7'de SELinux Etkile\u015fimi:<\/strong> E\u011fer uygulaman\u0131z veya PostgreSQL bir dosyaya veya dizine eri\u015firken \"Permission denied\" hatalar\u0131 al\u0131yorsa ve her \u015fey do\u011fru g\u00f6r\u00fcn\u00fcyorsa, SELinux etkin olabilir. <code>sudo getenforce<\/code> ile durumunu kontrol edin. <code>setenforce 0<\/code> ile ge\u00e7ici olarak kapat\u0131p sorunun \u00e7\u00f6z\u00fcl\u00fcp \u00e7\u00f6z\u00fclmedi\u011fini test edebilirsiniz. Ancak kal\u0131c\u0131 \u00e7\u00f6z\u00fcm i\u00e7in SELinux politikalar\u0131n\u0131 do\u011fru \u015fekilde yap\u0131land\u0131rman\u0131z \u00f6nerilir. \u00d6rne\u011fin, Django uygulaman\u0131z\u0131n statik dosyalar\u0131 veya medya dosyalar\u0131n\u0131 sunarken sorun ya\u015farsan\u0131z, <code>chcon<\/code> veya <code>semanage<\/code> komutlar\u0131n\u0131 kullanman\u0131z gerekebilir.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Bu kapsaml\u0131 k\u0131lavuzda, CentOS 7 sunucunuzda PostgreSQL'i s\u0131f\u0131rdan kurmay\u0131, Django uygulaman\u0131z i\u00e7in \u00f6zel bir kullan\u0131c\u0131 ve veritaban\u0131 olu\u015fturmay\u0131, uzak ba\u011flant\u0131lar\u0131 yap\u0131land\u0131rmay\u0131 ve Django projenizi bu veritaban\u0131na ba\u011flamay\u0131 ad\u0131m ad\u0131m \u00f6\u011frendiniz. Ayr\u0131ca, \u00fcretim ortamlar\u0131nda dikkate alman\u0131z gereken g\u00fcvenlik, performans optimizasyonu, yedekleme ve sorun giderme gibi \u00f6nemli konulara da de\u011findik.<\/p>\n<p>Django ve PostgreSQL kombinasyonu, modern web uygulamalar\u0131 geli\u015ftirmek i\u00e7in son derece g\u00fc\u00e7l\u00fc ve esnek bir platform sunar. CentOS 7'nin sa\u011flam ve g\u00fcvenilir altyap\u0131s\u0131 \u00fczerinde bu iki teknolojiyi bir araya getirerek, y\u00fcksek performansl\u0131, \u00f6l\u00e7eklenebilir ve veri b\u00fct\u00fcnl\u00fc\u011f\u00fcne sahip uygulamalar geli\u015ftirebilirsiniz. Unutmay\u0131n ki, her \u00fcretim ortam\u0131 kendine \u00f6zg\u00fc gereksinimlere sahiptir; bu k\u0131lavuzdaki bilgileri kendi projenizin \u00f6zel ihtiya\u00e7lar\u0131na g\u00f6re uyarlamaktan \u00e7ekinmeyin. G\u00fcvenlik ve performans en iyi uygulamalar\u0131n\u0131 s\u00fcrekli g\u00f6z \u00f6n\u00fcnde bulundurarak, uygulaman\u0131z\u0131n sorunsuz ve verimli bir \u015fekilde \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flayabilirsiniz.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"CentOS 7 \u00dczerinde Django Uygulamalar\u0131n\u0131zla PostgreSQL Kullan\u0131m\u0131: Detayl\u0131 Bir K\u0131lavuz\nDjango, modern web geli\u015ftirmenin en pop\u00fcler ve g\u00fc\u00e7l\u00fc","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":[241],"tags":[],"class_list":{"0":"post-36037","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-linux","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>CentOS 7 \u00dczerinde Django Uygulamalar\u0131n\u0131zla PostgreSQL Kullan\u0131m\u0131: Detayl\u0131 Bir K\u0131lavuz - 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\/centos-7-uzerinde-django-uygulamalarinizla-postgresql-kullanimi-detayli-bir-kilavuz\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"CentOS 7 \u00dczerinde Django Uygulamalar\u0131n\u0131zla PostgreSQL Kullan\u0131m\u0131: Detayl\u0131 Bir K\u0131lavuz\" \/>\n<meta property=\"og:description\" content=\"CentOS 7 \u00dczerinde Django Uygulamalar\u0131n\u0131zla PostgreSQL Kullan\u0131m\u0131: Detayl\u0131 Bir K\u0131lavuz Django, modern web geli\u015ftirmenin en pop\u00fcler ve g\u00fc\u00e7l\u00fc\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/centos-7-uzerinde-django-uygulamalarinizla-postgresql-kullanimi-detayli-bir-kilavuz\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-07T01:40:41+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=\"16 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/centos-7-uzerinde-django-uygulamalarinizla-postgresql-kullanimi-detayli-bir-kilavuz\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/centos-7-uzerinde-django-uygulamalarinizla-postgresql-kullanimi-detayli-bir-kilavuz\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"CentOS 7 \u00dczerinde Django Uygulamalar\u0131n\u0131zla PostgreSQL Kullan\u0131m\u0131: Detayl\u0131 Bir K\u0131lavuz\",\"datePublished\":\"2025-12-07T01:40:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/centos-7-uzerinde-django-uygulamalarinizla-postgresql-kullanimi-detayli-bir-kilavuz\/\"},\"wordCount\":2799,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Linux\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/centos-7-uzerinde-django-uygulamalarinizla-postgresql-kullanimi-detayli-bir-kilavuz\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/centos-7-uzerinde-django-uygulamalarinizla-postgresql-kullanimi-detayli-bir-kilavuz\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/centos-7-uzerinde-django-uygulamalarinizla-postgresql-kullanimi-detayli-bir-kilavuz\/\",\"name\":\"CentOS 7 \u00dczerinde Django Uygulamalar\u0131n\u0131zla PostgreSQL Kullan\u0131m\u0131: Detayl\u0131 Bir K\u0131lavuz - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-12-07T01:40:41+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/centos-7-uzerinde-django-uygulamalarinizla-postgresql-kullanimi-detayli-bir-kilavuz\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/centos-7-uzerinde-django-uygulamalarinizla-postgresql-kullanimi-detayli-bir-kilavuz\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/centos-7-uzerinde-django-uygulamalarinizla-postgresql-kullanimi-detayli-bir-kilavuz\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"CentOS 7 \u00dczerinde Django Uygulamalar\u0131n\u0131zla PostgreSQL Kullan\u0131m\u0131: Detayl\u0131 Bir K\u0131lavuz\"}]},{\"@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":"CentOS 7 \u00dczerinde Django Uygulamalar\u0131n\u0131zla PostgreSQL Kullan\u0131m\u0131: Detayl\u0131 Bir K\u0131lavuz - 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\/centos-7-uzerinde-django-uygulamalarinizla-postgresql-kullanimi-detayli-bir-kilavuz\/","og_locale":"tr_TR","og_type":"article","og_title":"CentOS 7 \u00dczerinde Django Uygulamalar\u0131n\u0131zla PostgreSQL Kullan\u0131m\u0131: Detayl\u0131 Bir K\u0131lavuz","og_description":"CentOS 7 \u00dczerinde Django Uygulamalar\u0131n\u0131zla PostgreSQL Kullan\u0131m\u0131: Detayl\u0131 Bir K\u0131lavuz Django, modern web geli\u015ftirmenin en pop\u00fcler ve g\u00fc\u00e7l\u00fc","og_url":"https:\/\/fatihsoysal.com\/blog\/centos-7-uzerinde-django-uygulamalarinizla-postgresql-kullanimi-detayli-bir-kilavuz\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-12-07T01:40:41+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"16 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/centos-7-uzerinde-django-uygulamalarinizla-postgresql-kullanimi-detayli-bir-kilavuz\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/centos-7-uzerinde-django-uygulamalarinizla-postgresql-kullanimi-detayli-bir-kilavuz\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"CentOS 7 \u00dczerinde Django Uygulamalar\u0131n\u0131zla PostgreSQL Kullan\u0131m\u0131: Detayl\u0131 Bir K\u0131lavuz","datePublished":"2025-12-07T01:40:41+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/centos-7-uzerinde-django-uygulamalarinizla-postgresql-kullanimi-detayli-bir-kilavuz\/"},"wordCount":2799,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Linux"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/centos-7-uzerinde-django-uygulamalarinizla-postgresql-kullanimi-detayli-bir-kilavuz\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/centos-7-uzerinde-django-uygulamalarinizla-postgresql-kullanimi-detayli-bir-kilavuz\/","url":"https:\/\/fatihsoysal.com\/blog\/centos-7-uzerinde-django-uygulamalarinizla-postgresql-kullanimi-detayli-bir-kilavuz\/","name":"CentOS 7 \u00dczerinde Django Uygulamalar\u0131n\u0131zla PostgreSQL Kullan\u0131m\u0131: Detayl\u0131 Bir K\u0131lavuz - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-12-07T01:40:41+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/centos-7-uzerinde-django-uygulamalarinizla-postgresql-kullanimi-detayli-bir-kilavuz\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/centos-7-uzerinde-django-uygulamalarinizla-postgresql-kullanimi-detayli-bir-kilavuz\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/centos-7-uzerinde-django-uygulamalarinizla-postgresql-kullanimi-detayli-bir-kilavuz\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"CentOS 7 \u00dczerinde Django Uygulamalar\u0131n\u0131zla PostgreSQL Kullan\u0131m\u0131: Detayl\u0131 Bir K\u0131lavuz"}]},{"@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\/36037","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=36037"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/36037\/revisions"}],"predecessor-version":[{"id":36038,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/36037\/revisions\/36038"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=36037"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=36037"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=36037"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}