{"id":20406,"date":"2026-02-27T11:06:44","date_gmt":"2026-02-27T08:06:44","guid":{"rendered":"https:\/\/sunucun.com.tr\/blog\/python-django-projeleri-icin-sunucu-yapilandirmasi\/"},"modified":"2026-02-27T11:06:52","modified_gmt":"2026-02-27T08:06:52","slug":"python-django-projeleri-icin-sunucu-yapilandirmasi","status":"publish","type":"post","link":"https:\/\/sunucun.com.tr\/blog\/python-django-projeleri-icin-sunucu-yapilandirmasi\/","title":{"rendered":"Python Django Projeleri \u0130\u00e7in Sunucu Yap\u0131land\u0131rmas\u0131."},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 ez-toc-wrap-center counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<span class=\"ez-toc-title-toggle\"><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/sunucun.com.tr\/blog\/python-django-projeleri-icin-sunucu-yapilandirmasi\/#Django_Dagitim_Mimarisi_Temel_Bilesenler\" >Django Da\u011f\u0131t\u0131m Mimarisi: Temel Bile\u015fenler<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/sunucun.com.tr\/blog\/python-django-projeleri-icin-sunucu-yapilandirmasi\/#Web_Sunucusu_Web_Server\" >Web Sunucusu (Web Server)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/sunucun.com.tr\/blog\/python-django-projeleri-icin-sunucu-yapilandirmasi\/#Uygulama_Sunucusu_Application_Server_%E2%80%93_WSGI\" >Uygulama Sunucusu (Application Server &#8211; WSGI)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/sunucun.com.tr\/blog\/python-django-projeleri-icin-sunucu-yapilandirmasi\/#Veritabani_Database\" >Veritaban\u0131 (Database)<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/sunucun.com.tr\/blog\/python-django-projeleri-icin-sunucu-yapilandirmasi\/#Adim_Adim_Sunucu_Hazirligi_ve_Guvenlik\" >Ad\u0131m Ad\u0131m Sunucu Haz\u0131rl\u0131\u011f\u0131 ve G\u00fcvenlik<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/sunucun.com.tr\/blog\/python-django-projeleri-icin-sunucu-yapilandirmasi\/#Ilk_Sunucu_Kurulumu\" >\u0130lk Sunucu Kurulumu<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/sunucun.com.tr\/blog\/python-django-projeleri-icin-sunucu-yapilandirmasi\/#Gerekli_Yazilimlarin_Kurulmasi\" >Gerekli Yaz\u0131l\u0131mlar\u0131n Kurulmas\u0131<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/sunucun.com.tr\/blog\/python-django-projeleri-icin-sunucu-yapilandirmasi\/#Python_Django_Projeleri_Icin_Sunucu_Yapilandirmasi\" >Python Django Projeleri \u0130\u00e7in Sunucu Yap\u0131land\u0131rmas\u0131<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/sunucun.com.tr\/blog\/python-django-projeleri-icin-sunucu-yapilandirmasi\/#Proje_Dosyalarinin_Sunucuya_Aktarilmasi\" >Proje Dosyalar\u0131n\u0131n Sunucuya Aktar\u0131lmas\u0131<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/sunucun.com.tr\/blog\/python-django-projeleri-icin-sunucu-yapilandirmasi\/#Python_Sanal_Ortaminin_Virtual_Environment_Kurulmasi\" >Python Sanal Ortam\u0131n\u0131n (Virtual Environment) Kurulmas\u0131<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/sunucun.com.tr\/blog\/python-django-projeleri-icin-sunucu-yapilandirmasi\/#Gunicorn_ve_Systemd_Servisi\" >Gunicorn ve Systemd Servisi<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/sunucun.com.tr\/blog\/python-django-projeleri-icin-sunucu-yapilandirmasi\/#Nginxin_Ters_Proxy_Reverse_Proxy_Olarak_Ayarlanmasi\" >Nginx&#8217;in Ters Proxy (Reverse Proxy) Olarak Ayarlanmas\u0131<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<p>Python Django Projeleri \u0130\u00e7in Sunucu Yap\u0131land\u0131rmas\u0131. Geli\u015ftirdi\u011finiz Django projesini canl\u0131ya almak, yaz\u0131l\u0131m geli\u015ftirme s\u00fcrecinin en heyecan verici ve kritik a\u015famalar\u0131ndan biridir. Yerel makinenizde sorunsuz \u00e7al\u0131\u015fan uygulaman\u0131z\u0131n, internet \u00fczerindeki bir sunucuda da ayn\u0131 performans ve kararl\u0131l\u0131kla hizmet verebilmesi i\u00e7in do\u011fru bir yap\u0131land\u0131rma \u015fartt\u0131r. Bu s\u00fcre\u00e7, sadece kodunuzu bir sunucuya kopyalamaktan \u00e7ok daha fazlas\u0131n\u0131 i\u00e7erir; g\u00fcvenlik, performans, \u00f6l\u00e7eklenebilirlik ve bak\u0131m kolayl\u0131\u011f\u0131 gibi bir\u00e7ok fakt\u00f6r\u00fc g\u00f6z \u00f6n\u00fcnde bulundurmay\u0131 gerektirir. Profesyonel bir da\u011f\u0131t\u0131m (deployment) stratejisi, projenizin ba\u015far\u0131s\u0131 i\u00e7in temel bir yat\u0131r\u0131md\u0131r ve kullan\u0131c\u0131lar\u0131n\u0131za kesintisiz bir deneyim sunman\u0131n anahtar\u0131d\u0131r.<\/p>\n<p>Do\u011fru yap\u0131land\u0131r\u0131lm\u0131\u015f bir sunucu, Django uygulaman\u0131z\u0131n potansiyelini tam olarak ortaya \u00e7\u0131kar\u0131r. Gelen istekleri verimli bir \u015fekilde y\u00f6netir, statik dosyalar\u0131 h\u0131zla sunar, veritaban\u0131 ba\u011flant\u0131lar\u0131n\u0131 optimize eder ve olas\u0131 g\u00fcvenlik tehditlerine kar\u015f\u0131 bir kalkan g\u00f6revi g\u00f6r\u00fcr. Aksine, ba\u015ftan savma bir kurulum, projenizin yava\u015f \u00e7al\u0131\u015fmas\u0131na, s\u0131k s\u0131k \u00e7\u00f6kmesine ve siber sald\u0131r\u0131lara kar\u015f\u0131 savunmas\u0131z kalmas\u0131na neden olabilir. Bu kapsaml\u0131 rehberde, bir Django projesini canl\u0131ya almak i\u00e7in gereken sunucu yap\u0131land\u0131rmas\u0131n\u0131n t\u00fcm ad\u0131mlar\u0131n\u0131, temel bile\u015fenleri ve en iyi uygulamalar\u0131 detayl\u0131 bir \u015fekilde ele alaca\u011f\u0131z.<br \/>\n<\/p>\n<figure class=\"wp-block-image aligncenter size-medium is-resized\">\n  <img src=\"https:\/\/sunucun.com.tr\/blog\/wp-content\/uploads\/2026\/02\/text-python-django-projeleri-icin-sunucu-yapilandirmasi.png\" class=\"size-medium aligncenter\" style=\"width:100%;\" alt=\"Python Django Projeleri \u0130\u00e7in Sunucu Yap\u0131land\u0131rmas\u0131; web sunucusu, uygulama sunucusu ve veritaban\u0131 aras\u0131ndaki ili\u015fkiyi g\u00f6sterir.\" title=\"Django Sunucu Mimarisi Bile\u015fenleri Aras\u0131ndaki Ak\u0131\u015f\" loading=\"lazy\" decoding=\"async\"><figcaption>\n    Python Django Projeleri \u0130\u00e7in Sunucu Yap\u0131land\u0131rmas\u0131; web sunucusu, uygulama sunucusu ve veritaban\u0131 aras\u0131ndaki ili\u015fkiyi g\u00f6sterir.<br \/>\n  <\/figcaption><\/figure>\n<p><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Django_Dagitim_Mimarisi_Temel_Bilesenler\"><\/span>Django Da\u011f\u0131t\u0131m Mimarisi: Temel Bile\u015fenler<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Bir Django projesini production ortam\u0131nda \u00e7al\u0131\u015ft\u0131rmak i\u00e7in birka\u00e7 farkl\u0131 yaz\u0131l\u0131m katman\u0131n\u0131n uyum i\u00e7inde \u00e7al\u0131\u015fmas\u0131 gerekir. Bu katmanlar\u0131n her birinin \u00f6zel bir rol\u00fc vard\u0131r ve birlikte, uygulaman\u0131z\u0131n internete g\u00fcvenli ve verimli bir \u015fekilde sunulmas\u0131n\u0131 sa\u011flarlar. Bu mimariyi anlamak, yap\u0131land\u0131rma s\u00fcrecinin temelini olu\u015fturur.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Web_Sunucusu_Web_Server\"><\/span>Web Sunucusu (Web Server)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Kullan\u0131c\u0131lardan gelen HTTP isteklerini ilk kar\u015f\u0131layan bile\u015fendir. Ana g\u00f6revi, statik dosyalar\u0131 (CSS, JavaScript, resimler vb.) do\u011frudan sunmak ve dinamik istekleri uygulama sunucusuna y\u00f6nlendirmektir. Bu g\u00f6rev da\u011f\u0131l\u0131m\u0131, Django&#8217;nun sadece uygulama mant\u0131\u011f\u0131na odaklanmas\u0131n\u0131 sa\u011flayarak performans\u0131 art\u0131r\u0131r. En pop\u00fcler se\u00e7enekler Nginx ve Apache&#8217;dir. Nginx, y\u00fcksek e\u015fzamanl\u0131l\u0131k kapasitesi ve d\u00fc\u015f\u00fck kaynak t\u00fcketimi nedeniyle modern Django da\u011f\u0131t\u0131mlar\u0131nda genellikle tercih edilir. Reverse proxy (ters proxy) olarak yap\u0131land\u0131r\u0131larak, gelen t\u00fcm trafi\u011fi Gunicorn gibi bir uygulama sunucusuna ak\u0131ll\u0131ca y\u00f6nlendirir.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Uygulama_Sunucusu_Application_Server_%E2%80%93_WSGI\"><\/span>Uygulama Sunucusu (Application Server &#8211; WSGI)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Web sunucusu ile Django uygulaman\u0131z aras\u0131nda bir k\u00f6pr\u00fc g\u00f6revi g\u00f6r\u00fcr. Web sunucular\u0131, Python kodunu do\u011frudan nas\u0131l \u00e7al\u0131\u015ft\u0131racaklar\u0131n\u0131 bilmezler. Bu <a href=\"https:\/\/sunucun.com.tr\/iletisim\" data-internallinksmanager029f6b8e52c=\"95\" title=\"\u0130leti\u015fim bilgilerine buradan ula\u015f\u0131n\">ileti\u015fim<\/a>, <a href=\"https:\/\/tr.wikipedia.org\/wiki\/Web_Sunucusu_A%C4%9F_Ge%C3%A7idi_Aray%C3%BCz%C3%BC\" target=\"_blank\" rel=\"follow noopener\">Web Sunucusu A\u011f Ge\u00e7idi Aray\u00fcz\u00fc (WSGI)<\/a> ad\u0131 verilen bir standart arac\u0131l\u0131\u011f\u0131yla ger\u00e7ekle\u015fir. Gunicorn ve uWSGI, bu ama\u00e7la en s\u0131k kullan\u0131lan WSGI sunucular\u0131d\u0131r. Gunicorn, basit kurulumu ve sa\u011flam performans\u0131yla \u00f6ne \u00e7\u0131kar. Gelen dinamik istekleri web sunucusundan al\u0131r, bunlar\u0131 Django&#8217;nun anlayabilece\u011fi bir formata \u00e7evirir ve uygulaman\u0131z\u0131n ilgili b\u00f6l\u00fcm\u00fcn\u00fc \u00e7al\u0131\u015ft\u0131rarak yan\u0131t\u0131 olu\u015fturur.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Veritabani_Database\"><\/span>Veritaban\u0131 (Database)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Django, varsay\u0131lan olarak geli\u015ftirme ortam\u0131 i\u00e7in SQLite kullan\u0131r. Ancak production ortam\u0131 i\u00e7in PostgreSQL, MySQL veya MariaDB gibi daha g\u00fc\u00e7l\u00fc ve \u00f6l\u00e7eklenebilir veritaban\u0131 sistemleri kullanmak esast\u0131r. PostgreSQL, geli\u015fmi\u015f \u00f6zellikleri, kararl\u0131l\u0131\u011f\u0131 ve Django ile olan m\u00fckemmel uyumu sayesinde en \u00e7ok tavsiye edilen se\u00e7enektir. Veritaban\u0131, kullan\u0131c\u0131 bilgileri, uygulama verileri ve di\u011fer t\u00fcm kal\u0131c\u0131 bilgileri depolar ve y\u00f6netir.<\/p>\n<p>A\u015fa\u011f\u0131daki tablo, bu temel bile\u015fenlerin g\u00f6revlerini \u00f6zetlemektedir:<\/p>\n<table>\n<thead>\n<tr>\n<th>Bile\u015fen<\/th>\n<th>Ana G\u00f6revi<\/th>\n<th>Pop\u00fcler \u00d6rnekler<\/th>\n<th>Neden Gerekli?<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Web Sunucusu<\/strong><\/td>\n<td>\u0130stekleri kar\u015f\u0131lar, statik dosyalar\u0131 sunar, istekleri uygulama sunucusuna y\u00f6nlendirir (Reverse Proxy).<\/td>\n<td>Nginx, Apache<\/td>\n<td><a href=\"https:\/\/sunucun.com.tr\/sunucu-optimizasyonu\" data-internallinksmanager029f6b8e52c=\"139\" title=\"Sunucu performans\u0131n\u0131 optimize edin\">Performans optimizasyonu<\/a>, g\u00fcvenlik (SSL\/TLS sonland\u0131rma), <a href=\"https:\/\/sunucun.com.tr\/bulut-sunucu\" data-internallinksmanager029f6b8e52c=\"134\" title=\"Esnek ve \u00f6l\u00e7eklenebilir bulut sunucu\">y\u00fck dengeleme<\/a> ve Django&#8217;nun y\u00fck\u00fcn\u00fc hafifletme.<\/td>\n<\/tr>\n<tr>\n<td><strong>Uygulama Sunucusu (WSGI)<\/strong><\/td>\n<td>Web sunucusu ile Django uygulamas\u0131 aras\u0131nda WSGI standard\u0131na uygun bir k\u00f6pr\u00fc kurar.<\/td>\n<td>Gunicorn, uWSGI<\/td>\n<td>Python kodunu \u00e7al\u0131\u015ft\u0131rmak ve birden fazla uygulama s\u00fcrecini (worker) y\u00f6neterek e\u015fzamanl\u0131 istekleri handle etmek.<\/td>\n<\/tr>\n<tr>\n<td><strong>Veritaban\u0131 Sunucusu<\/strong><\/td>\n<td>Uygulaman\u0131n verilerini kal\u0131c\u0131 olarak depolar, y\u00f6netir ve sorgulara yan\u0131t verir.<\/td>\n<td>PostgreSQL, MySQL<\/td>\n<td>Geli\u015ftirme i\u00e7in kullan\u0131lan SQLite&#8217;\u0131n aksine, y\u00fcksek trafik alt\u0131nda veri b\u00fct\u00fcnl\u00fc\u011f\u00fc, g\u00fcvenlik ve performans sa\u011flar.<\/td>\n<\/tr>\n<tr>\n<td><strong>S\u00fcre\u00e7 Y\u00f6neticisi<\/strong><\/td>\n<td>Uygulama sunucusunun (Gunicorn) s\u00fcrekli \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar, \u00e7\u00f6kme durumunda yeniden ba\u015flat\u0131r.<\/td>\n<td>Systemd, Supervisor<\/td>\n<td>Uygulaman\u0131n kesintisiz hizmet vermesini (uptime) garanti alt\u0131na al\u0131r ve sunucu yeniden ba\u015flad\u0131\u011f\u0131nda otomatik olarak \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><span class=\"ez-toc-section\" id=\"Adim_Adim_Sunucu_Hazirligi_ve_Guvenlik\"><\/span>Ad\u0131m Ad\u0131m Sunucu Haz\u0131rl\u0131\u011f\u0131 ve G\u00fcvenlik<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Projemizi yap\u0131land\u0131rmaya ba\u015flamadan \u00f6nce, \u00fczerinde \u00e7al\u0131\u015faca\u011f\u0131m\u0131z sunucuyu haz\u0131rlamal\u0131 ve temel g\u00fcvenlik \u00f6nlemlerini almal\u0131y\u0131z. Bu ad\u0131mlar, sa\u011flam bir temel olu\u015fturmak i\u00e7in hayati \u00f6neme sahiptir. Genellikle Ubuntu veya CentOS gibi bir Linux da\u011f\u0131t\u0131m\u0131 \u00fczerinde \u00e7al\u0131\u015f\u0131l\u0131r.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Ilk_Sunucu_Kurulumu\"><\/span>\u0130lk Sunucu Kurulumu<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Bir sanal \u00f6zel sunucu (<a href=\"https:\/\/sunucun.com.tr\/vps-sunucu\" data-internallinksmanager029f6b8e52c=\"132\" title=\"Sanal sunucu se\u00e7eneklerini inceleyin\">VPS<\/a>) veya <a href=\"https:\/\/sunucun.com.tr\/bulut-sunucu\" data-internallinksmanager029f6b8e52c=\"84\" title=\"Esnek ve \u00f6l\u00e7eklenebilir bulut sunucu\">bulut sunucu<\/a> temin ettikten sonra, ilk olarak sisteme root kullan\u0131c\u0131s\u0131 ile SSH \u00fczerinden ba\u011flan\u0131l\u0131r. Yap\u0131lmas\u0131 gereken ilk i\u015flemler \u015funlard\u0131r:<\/p>\n<ol>\n<li><strong>Sistem G\u00fcncellemesi:<\/strong> T\u00fcm paketlerin en son s\u00fcr\u00fcmlerine g\u00fcncellenmesi g\u00fcvenlik ve kararl\u0131l\u0131k i\u00e7in \u00f6nemlidir.\n<pre><code>sudo apt update && sudo apt upgrade -y<\/code><\/pre>\n<\/li>\n<li><strong>Yeni Kullan\u0131c\u0131 Olu\u015fturma:<\/strong> G\u00fcvenlik nedeniyle t\u00fcm i\u015flemleri root kullan\u0131c\u0131s\u0131 ile yapmak risklidir. Projemiz i\u00e7in `sudo` yetkilerine sahip yeni bir kullan\u0131c\u0131 olu\u015fturmal\u0131y\u0131z.\n<pre><code>adduser yenikullanici<br>usermod -aG sudo yenikullanici<\/code><\/pre>\n<\/li>\n<li><strong>Temel G\u00fcvenlik Duvar\u0131 Yap\u0131land\u0131rmas\u0131:<\/strong> `UFW` (Uncomplicated Firewall), g\u00fcvenlik duvar\u0131 kurallar\u0131n\u0131 y\u00f6netmek i\u00e7in basit bir ara\u00e7t\u0131r. Sadece gerekli portlara (SSH, HTTP, HTTPS) izin vererek d\u0131\u015far\u0131dan gelebilecek yetkisiz eri\u015fimleri engelleriz.\n<pre><code>sudo ufw allow OpenSSH<br>sudo ufw allow 'Nginx Full'<br>sudo ufw enable<\/code><\/pre>\n<\/li>\n<\/ol>\n<p>Bu ad\u0131mlardan sonra sunucudan \u00e7\u0131k\u0131\u015f yap\u0131p yeni olu\u015fturdu\u011fumuz kullan\u0131c\u0131 ile tekrar ba\u011flanarak i\u015flemlere devam etmeliyiz.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Gerekli_Yazilimlarin_Kurulmasi\"><\/span>Gerekli Yaz\u0131l\u0131mlar\u0131n Kurulmas\u0131<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Django projemizin ihtiya\u00e7 duyaca\u011f\u0131 temel yaz\u0131l\u0131mlar\u0131 sunucumuza kurmam\u0131z gerekiyor.<\/p>\n<ul>\n<li><strong>Python ve Geli\u015ftirme Ara\u00e7lar\u0131:<\/strong> Django&#8217;nun \u00e7al\u0131\u015fmas\u0131 i\u00e7in Python ve ilgili k\u00fct\u00fcphanelerin derlenmesi i\u00e7in gerekli `build-essential` paketi kurulmal\u0131d\u0131r.\n<pre><code>sudo apt install python3-pip python3-dev build-essential libpq-dev python3-venv<\/code><\/pre>\n<\/li>\n<li><strong>Veritaban\u0131 Kurulumu:<\/strong> Projemizde PostgreSQL kullanaca\u011f\u0131m\u0131z\u0131 varsayarak kurulumu ger\u00e7ekle\u015ftiriyoruz.\n<pre><code>sudo apt install postgresql postgresql-contrib<\/code><\/pre>\n<\/li>\n<li><strong>Web Sunucusu Kurulumu:<\/strong> Nginx&#8217;i web sunucusu olarak kuruyoruz.\n<pre><code>sudo apt install nginx<\/code><\/pre>\n<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Python_Django_Projeleri_Icin_Sunucu_Yapilandirmasi\"><\/span>Python Django Projeleri \u0130\u00e7in Sunucu Yap\u0131land\u0131rmas\u0131<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Sunucumuz haz\u0131r oldu\u011funa g\u00f6re, art\u0131k Django projemizi ad\u0131m ad\u0131m yap\u0131land\u0131rabiliriz. Bu a\u015fama, projemizin kodunu sunucuya aktarmak, sanal ortam\u0131 kurmak, Gunicorn ve Nginx&#8217;i ayarlamaktan olu\u015fur.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Proje_Dosyalarinin_Sunucuya_Aktarilmasi\"><\/span>Proje Dosyalar\u0131n\u0131n Sunucuya Aktar\u0131lmas\u0131<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Proje dosyalar\u0131n\u0131z\u0131 yerel makinenizden sunucuya aktarmak i\u00e7in `git` kullanmak en iyi y\u00f6ntemdir. Bu, hem versiyon kontrol\u00fc sa\u011flar hem de g\u00fcncellemeleri kolayla\u015ft\u0131r\u0131r. Projenizi sunucudaki `\/var\/www\/` veya ev dizininizdeki bir klas\u00f6re klonlayabilirsiniz.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Python_Sanal_Ortaminin_Virtual_Environment_Kurulmasi\"><\/span>Python Sanal Ortam\u0131n\u0131n (Virtual Environment) Kurulmas\u0131<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Projenizin ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 sistem genelindeki Python paketlerinden izole etmek i\u00e7in bir sanal ortam (virtual environment) kullanmak zorunludur. Bu, farkl\u0131 projeler i\u00e7in farkl\u0131 paket versiyonlar\u0131 kullanman\u0131za olanak tan\u0131r ve \u00e7ak\u0131\u015fmalar\u0131 \u00f6nler.<\/p>\n<pre><code>cd \/proje\/dizini<br>python3 -m venv venv<br>source venv\/bin\/activate<\/code><\/pre>\n<p>Sanal ortam aktif hale geldikten sonra, projenizin `requirements.txt` dosyas\u0131nda listelenen t\u00fcm ba\u011f\u0131ml\u0131l\u0131klar\u0131 `pip` ile kurun. Gunicorn&#8217;u da bu sanal ortama kurmay\u0131 unutmay\u0131n.<\/p>\n<pre><code>pip install -r requirements.txt<br>pip install gunicorn<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"Gunicorn_ve_Systemd_Servisi\"><\/span>Gunicorn ve Systemd Servisi<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Gunicorn&#8217;u manuel olarak \u00e7al\u0131\u015ft\u0131rmak yerine, sunucu her yeniden ba\u015flad\u0131\u011f\u0131nda otomatik olarak ba\u015flamas\u0131 ve bir sorun oldu\u011funda yeniden \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131 i\u00e7in bir Systemd servis dosyas\u0131 olu\u015fturaca\u011f\u0131z. `\/etc\/systemd\/system\/gunicorn.service` ad\u0131nda bir dosya olu\u015fturun ve i\u00e7eri\u011fini projenize g\u00f6re d\u00fczenleyin:<\/p>\n<pre><code>[Unit]<br>Description=gunicorn daemon for myproject<br>After=network.target<br><br>[Service]<br>User=yenikullanici<br>Group=www-data<br>WorkingDirectory=\/home\/yenikullanici\/projedizini<br>ExecStart=\/home\/yenikullanici\/projedizini\/venv\/bin\/gunicorn --access-logfile - --workers 3 --bind unix:\/run\/gunicorn.sock projenin_wsgi_dosyasi.wsgi:application<br><br>[Install]<br>WantedBy=multi-user.target<\/code><\/pre>\n<p>Bu dosyay\u0131 olu\u015fturduktan sonra servisi ba\u015flat\u0131n ve etkinle\u015ftirin:<\/p>\n<pre><code>sudo systemctl start gunicorn<br>sudo systemctl enable gunicorn<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"Nginxin_Ters_Proxy_Reverse_Proxy_Olarak_Ayarlanmasi\"><\/span>Nginx&#8217;in Ters Proxy (Reverse Proxy) Olarak Ayarlanmas\u0131<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Son ad\u0131m, Nginx&#8217;i yap\u0131land\u0131rarak gelen istekleri Gunicorn&#8217;a y\u00f6nlendirmektir. Nginx ayr\u0131ca statik dosyalar\u0131 do\u011frudan sunarak Django&#8217;yu bu y\u00fckten kurtaracakt\u0131r. Bu, <a href=\"https:\/\/sunucun.com.tr\/blog\/nginx-vs-apache-hangi-web-sunucusu-daha-hizli\/\">Nginx vs Apache<\/a> kar\u015f\u0131la\u015ft\u0131rmas\u0131nda Nginx&#8217;in \u00f6ne \u00e7\u0131kt\u0131\u011f\u0131 en \u00f6nemli performans art\u0131\u015flar\u0131ndan biridir. `\/etc\/nginx\/sites-available\/projeadi` dosyas\u0131n\u0131 olu\u015fturun:<\/p>\n<pre><code>server {<br>    listen 80;<br>    server_name alanadiniz.com www.alanadiniz.com;<br><br>    location = \/favicon.ico { access_log off; log_not_found off; }<br>    location \/static\/ {<br>        root \/home\/yenikullanici\/projedizini;<br>    }<br><br>    location \/media\/ {<br>        root \/home\/yenikullanici\/projedizini;<br>    }<br><br>    location \/ {<br>        include proxy_params;<br>        proxy_pass http:\/\/unix:\/run\/gunicorn.sock;<br>    }<br>}<\/code><\/pre>\n<p>Bu yap\u0131land\u0131rma dosyas\u0131n\u0131 `sites-enabled` dizinine sembolik bir linkle ba\u011flayarak aktif hale getirin ve Nginx&#8217;i yeniden ba\u015flat\u0131n.<\/p>\n<pre><code>sudo ln -s \/etc\/nginx\/sites-available\/projeadi \/etc\/nginx\/sites-enabled<br>sudo systemctl restart nginx<\/code><\/pre>\n<p><\/p>\n<figure class=\"wp-block-image aligncenter size-medium is-resized\">\n  <img src=\"https:\/\/sunucun.com.tr\/blog\/wp-content\/uploads\/2026\/02\/text2-python-django-projeleri-icin-sunucu-yapilandirmasi.png\" class=\"size-medium aligncenter\" style=\"width:100%;\" alt=\"Python Django Projeleri \u0130\u00e7in Sunucu Yap\u0131land\u0131rmas\u0131 web sunucusu, uygulama sunucusu ve veritaban\u0131 bile\u015fenlerinin uyumlu bir \u015fekilde \u00e7al\u0131\u015fmas\u0131n\u0131 gerektirir\" title=\"Django Projesi Da\u011f\u0131t\u0131m Mimarisi Ak\u0131\u015f\u0131\" loading=\"lazy\" decoding=\"async\"><figcaption>\n    Python Django Projeleri \u0130\u00e7in Sunucu Yap\u0131land\u0131rmas\u0131 web sunucusu, uygulama sunucusu ve veritaban\u0131 bile\u015fenlerinin uyumlu bir \u015fekilde \u00e7al\u0131\u015fmas\u0131n\u0131 gerektirir<br \/>\n  <\/figcaption><\/figure>\n<p><\/p>\n<p>Bu ad\u0131mlar\u0131n tamamlanmas\u0131yla birlikte, Django projeniz art\u0131k production ortam\u0131nda, g\u00fcvenli, performansl\u0131 ve \u00f6l\u00e7eklenebilir bir mimari \u00fczerinde \u00e7al\u0131\u015fmaya haz\u0131rd\u0131r. Bu yap\u0131, projenizin b\u00fcy\u00fcmesine paralel olarak kolayca y\u00f6netilebilir ve geli\u015ftirilebilir bir temel sunar.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Python Django Projeleri \u0130\u00e7in Sunucu Yap\u0131land\u0131rmas\u0131. Geli\u015ftirdi\u011finiz Django projesini canl\u0131ya almak, yaz\u0131l\u0131m geli\u015ftirme s\u00fcrecinin en heyecan verici ve kritik a\u015famalar\u0131ndan biridir. Yerel makinenizde sorunsuz \u00e7al\u0131\u015fan uygulaman\u0131z\u0131n, internet \u00fczerindeki bir sunucuda da ayn\u0131 performans ve kararl\u0131l\u0131kla hizmet verebilmesi i\u00e7in do\u011fru bir yap\u0131land\u0131rma \u015fartt\u0131r. Bu s\u00fcre\u00e7, sadece kodunuzu bir sunucuya kopyalamaktan \u00e7ok daha fazlas\u0131n\u0131 i\u00e7erir; g\u00fcvenlik, performans,&hellip;<\/p>\n","protected":false},"author":1,"featured_media":20403,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[1520],"tags":[],"class_list":["post-20406","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-linux"],"_links":{"self":[{"href":"https:\/\/sunucun.com.tr\/blog\/wp-json\/wp\/v2\/posts\/20406","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sunucun.com.tr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sunucun.com.tr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sunucun.com.tr\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sunucun.com.tr\/blog\/wp-json\/wp\/v2\/comments?post=20406"}],"version-history":[{"count":1,"href":"https:\/\/sunucun.com.tr\/blog\/wp-json\/wp\/v2\/posts\/20406\/revisions"}],"predecessor-version":[{"id":20407,"href":"https:\/\/sunucun.com.tr\/blog\/wp-json\/wp\/v2\/posts\/20406\/revisions\/20407"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sunucun.com.tr\/blog\/wp-json\/wp\/v2\/media\/20403"}],"wp:attachment":[{"href":"https:\/\/sunucun.com.tr\/blog\/wp-json\/wp\/v2\/media?parent=20406"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sunucun.com.tr\/blog\/wp-json\/wp\/v2\/categories?post=20406"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sunucun.com.tr\/blog\/wp-json\/wp\/v2\/tags?post=20406"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}