{"id":40501,"date":"2026-02-27T11:40:45","date_gmt":"2026-02-27T08:40:45","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=40501"},"modified":"2026-02-27T11:40:45","modified_gmt":"2026-02-27T08:40:45","slug":"django-uygulamasini-mod_wsgi-apache-ve-virtualenv-ile-debian-vps-uzerinde-calistirmak","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/django-uygulamasini-mod_wsgi-apache-ve-virtualenv-ile-debian-vps-uzerinde-calistirmak\/","title":{"rendered":"Django Uygulamas\u0131n\u0131 mod_wsgi, Apache ve virtualenv ile Debian VPS \u00dczerinde \u00c7al\u0131\u015ft\u0131rmak"},"content":{"rendered":"<p><body><\/p>\n<h2>Django Uygulamas\u0131n\u0131 mod_wsgi, Apache ve virtualenv ile Debian VPS \u00dczerinde \u00c7al\u0131\u015ft\u0131rmak<\/h2>\n<p>Web uygulamalar\u0131n\u0131 \u00fcretim ortam\u0131nda \u00e7al\u0131\u015ft\u0131rmak, geli\u015ftirme ortam\u0131ndan farkl\u0131 zorluklar bar\u0131nd\u0131r\u0131r. Performans, g\u00fcvenlik, \u00f6l\u00e7eklenebilirlik ve kararl\u0131l\u0131k gibi fakt\u00f6rler devreye girer. Django gibi g\u00fc\u00e7l\u00fc bir web \u00e7at\u0131s\u0131n\u0131, Apache gibi k\u00f6kl\u00fc ve kararl\u0131 bir web sunucusuyla, mod_wsgi mod\u00fcl\u00fc arac\u0131l\u0131\u011f\u0131yla entegre etmek, bu zorluklar\u0131n \u00fcstesinden gelmek i\u00e7in s\u0131k\u00e7a tercih edilen bir \u00e7\u00f6z\u00fcmd\u00fcr. \u00dcstelik, projenin ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 izole etmek ve sistem Python&#8217;unu temiz tutmak i\u00e7in virtualenv kullanmak, modern geli\u015ftirme pratiklerinin olmazsa olmaz\u0131d\u0131r. Bu makale, Debian tabanl\u0131 bir VPS \u00fczerinde Django uygulaman\u0131z\u0131 mod_wsgi ve Apache ikilisiyle, virtualenv kullanarak nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 ve yap\u0131land\u0131raca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m a\u00e7\u0131klamaktad\u0131r.<\/p>\n<h3>Neden Bu Kombinasyon?<\/h3>\n<p>Django, Python tabanl\u0131 web geli\u015ftirmeyi h\u0131zland\u0131ran y\u00fcksek seviyeli bir \u00e7er\u00e7evedir. Apache ise y\u00fcksek performans, kararl\u0131l\u0131k ve zengin \u00f6zellik setine sahip, d\u00fcnyan\u0131n en yayg\u0131n kullan\u0131lan web sunucular\u0131ndan biridir. mod_wsgi, Apache&#8217;nin Python tabanl\u0131 WSGI (Web Server Gateway Interface) uygulamalar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rmas\u0131na olanak tan\u0131yan bir Apache mod\u00fcl\u00fcd\u00fcr. Bu \u00fc\u00e7l\u00fcn\u00fcn birle\u015fimi, Django uygulaman\u0131z i\u00e7in g\u00fcvenilir, \u00f6l\u00e7eklenebilir ve y\u00f6netilebilir bir \u00fcretim ortam\u0131 sunar. virtualenv ise projenizin Python ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 sistem genelindeki Python kurulumundan izole ederek, farkl\u0131 projelerin farkl\u0131 ba\u011f\u0131ml\u0131l\u0131k versiyonlar\u0131yla \u00e7ak\u0131\u015fmas\u0131n\u0131 engeller ve da\u011f\u0131t\u0131m\u0131 kolayla\u015ft\u0131r\u0131r.<\/p>\n<h3>Makalenin Amac\u0131<\/h3>\n<p>Bu makalenin amac\u0131, Debian VPS \u00fczerinde s\u0131f\u0131rdan ba\u015flayarak bir Django uygulamas\u0131n\u0131 Apache, mod_wsgi ve virtualenv kullanarak ba\u015far\u0131l\u0131 bir \u015fekilde da\u011f\u0131tmak i\u00e7in gereken t\u00fcm ad\u0131mlar\u0131, komutlar\u0131 ve yap\u0131land\u0131rma \u00f6rneklerini sa\u011flamakt\u0131r. Ad\u0131mlar, sistem g\u00fcncellemesinden Apache yap\u0131land\u0131rmas\u0131na, veritaban\u0131 kurulumundan statik dosya y\u00f6netimine kadar geni\u015f bir yelpazeyi kapsayacakt\u0131r.<\/p>\n<h2>\u00d6n Gereksinimler<\/h2>\n<p>Kuruluma ba\u015flamadan \u00f6nce a\u015fa\u011f\u0131daki \u00f6n gereksinimleri kar\u015f\u0131lad\u0131\u011f\u0131n\u0131zdan emin olun:<\/p>\n<h3>Debian VPS Eri\u015fimi<\/h3>\n<p>Bir Debian tabanl\u0131 (\u00f6rne\u011fin Debian 11 veya 12) Sanal \u00d6zel Sunucuya (VPS) sahip olmal\u0131s\u0131n\u0131z. SSH arac\u0131l\u0131\u011f\u0131yla sunucuya eri\u015fiminiz ve root kullan\u0131c\u0131s\u0131 olarak veya sudo yetkilerine sahip bir kullan\u0131c\u0131 olarak komut \u00e7al\u0131\u015ft\u0131rma yetkiniz olmal\u0131d\u0131r.<\/p>\n<h3>Temel Linux Komut Bilgisi<\/h3>\n<p>Linux komut sat\u0131r\u0131 (terminal) ile temel d\u00fczeyde bilgi sahibi olman\u0131z beklenmektedir. Dosya sisteminde gezinme, dosya olu\u015fturma\/d\u00fczenleme, paket y\u00fckleme gibi temel i\u015flemleri yapabilmelisiniz.<\/p>\n<h3>Haz\u0131r Bir Django Projesi<\/h3>\n<p>Da\u011f\u0131t\u0131m\u0131 yap\u0131lacak bir Django projeniz olmal\u0131d\u0131r. Bu, mevcut bir projeniz olabilece\u011fi gibi, test ama\u00e7l\u0131 basit bir Django projesi de olabilir. Projenizin bir <code>requirements.txt<\/code> dosyas\u0131 olmas\u0131, ba\u011f\u0131ml\u0131l\u0131klar\u0131 kolayca kurman\u0131z\u0131 sa\u011flayacakt\u0131r.<\/p>\n<h2>Sistem G\u00fcncelleme ve Gerekli Paketlerin Kurulumu<\/h2>\n<p>Herhangi bir kuruluma ba\u015flamadan \u00f6nce sisteminizi g\u00fcncel tutmak iyi bir uygulamad\u0131r. Ard\u0131ndan, Apache, Python geli\u015ftirme ara\u00e7lar\u0131 ve mod_wsgi gibi temel bile\u015fenleri kuraca\u011f\u0131z.<\/p>\n<h3>Sistem G\u00fcncelleme<\/h3>\n<p>Sunucunuzdaki paket listelerini g\u00fcncelleyin ve mevcut paketleri y\u00fckseltin:<\/p>\n<pre><code class=\"language-bash\">sudo apt update\nsudo apt upgrade -y\n<\/code><\/pre>\n<h3>Apache2 Kurulumu<\/h3>\n<p>Apache web sunucusunu kurun:<\/p>\n<pre><code class=\"language-bash\">sudo apt install apache2 -y\n<\/code><\/pre>\n<p>Kurulumdan sonra Apache&#8217;nin \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 kontrol edebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl status apache2\n<\/code><\/pre>\n<p>Taray\u0131c\u0131n\u0131zdan sunucunuzun IP adresine giderek &#8220;Apache2 Debian Default Page&#8221; sayfas\u0131n\u0131 g\u00f6rmelisiniz.<\/p>\n<h3>Python Geli\u015ftirme Ara\u00e7lar\u0131 ve virtualenv<\/h3>\n<p>Python virtualenv ortam\u0131 olu\u015fturmak i\u00e7in gerekli olan <code>python3-venv<\/code> paketini ve baz\u0131 Python paketlerini derlemek i\u00e7in ihtiya\u00e7 duyulan geli\u015ftirme ara\u00e7lar\u0131n\u0131 kurun:<\/p>\n<pre><code class=\"language-bash\">sudo apt install python3-venv python3-dev build-essential -y\n<\/code><\/pre>\n<h3>mod_wsgi Kurulumu<\/h3>\n<p>Apache&#8217;nin Python WSGI uygulamalar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rmas\u0131n\u0131 sa\u011flayan <code>mod_wsgi<\/code> mod\u00fcl\u00fcn\u00fc kurun. Debian&#8217;da bu genellikle <code>libapache2-mod-wsgi-py3<\/code> paketi arac\u0131l\u0131\u011f\u0131yla sa\u011flan\u0131r:<\/p>\n<pre><code class=\"language-bash\">sudo apt install libapache2-mod-wsgi-py3 -y\n<\/code><\/pre>\n<p>Bu paket, mod\u00fcl\u00fc otomatik olarak etkinle\u015ftirir. Etkinle\u015ftirilip etkinle\u015ftirilmedi\u011fini kontrol etmek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">sudo a2enmod wsgi\nsudo systemctl restart apache2\n<\/code><\/pre>\n<p>Zaten etkinse, komut size bunu bildirecektir.<\/p>\n<h3>PostgreSQL \u0130stemci K\u00fct\u00fcphaneleri (\u0130ste\u011fe Ba\u011fl\u0131)<\/h3>\n<p>E\u011fer projeniz PostgreSQL veritaban\u0131 kullan\u0131yorsa, Python&#8217;\u0131n PostgreSQL ile etkile\u015fim kurmas\u0131n\u0131 sa\u011flayan <code>psycopg2<\/code> k\u00fct\u00fcphanesini derlemek i\u00e7in gerekli olan istemci k\u00fct\u00fcphanelerini kurman\u0131z gerekir:<\/p>\n<pre><code class=\"language-bash\">sudo apt install libpq-dev -y\n<\/code><\/pre>\n<h2>Python virtualenv Ortam\u0131n\u0131n Olu\u015fturulmas\u0131 ve Django Projesinin Haz\u0131rlanmas\u0131<\/h2>\n<p>\u015eimdi projenizi bar\u0131nd\u0131raca\u011f\u0131n\u0131z dizini olu\u015fturacak ve bir virtualenv ortam\u0131 kuracaks\u0131n\u0131z.<\/p>\n<h3>Proje Dizini Olu\u015fturma<\/h3>\n<p>Web projeleri i\u00e7in genellikle <code>\/var\/www\/<\/code> dizini kullan\u0131l\u0131r. Projeniz i\u00e7in bir dizin olu\u015fturun ve gerekli izinleri ayarlay\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo mkdir -p \/var\/www\/myproject\nsudo chown -R $USER:$USER \/var\/www\/myproject\ncd \/var\/www\/myproject\n<\/code><\/pre>\n<p><code>myproject<\/code> yerine kendi proje ad\u0131n\u0131z\u0131 kullan\u0131n. <code>$USER<\/code>, o anki SSH kullan\u0131c\u0131n\u0131z\u0131 temsil eder.<\/p>\n<h3>virtualenv Olu\u015fturma ve Etkinle\u015ftirme<\/h3>\n<p>Olu\u015fturdu\u011funuz proje dizini i\u00e7inde bir virtualenv ortam\u0131 olu\u015fturun:<\/p>\n<pre><code class=\"language-bash\">python3 -m venv venv\n<\/code><\/pre>\n<p>virtualenv&#8217;i etkinle\u015ftirin:<\/p>\n<pre><code class=\"language-bash\">source venv\/bin\/activate\n<\/code><\/pre>\n<p>Komut isteminizin ba\u015f\u0131nda <code>(venv)<\/code> ibaresini g\u00f6rmelisiniz. Bu, virtualenv&#8217;in etkin oldu\u011funu g\u00f6sterir.<\/p>\n<h3>Django Projesini Sunucuya Aktarma<\/h3>\n<p>Django projenizi sunucuya aktarman\u0131n birka\u00e7 yolu vard\u0131r:<\/p>\n<ol>\n<li><strong>Git ile Klonlama:<\/strong> E\u011fer projeniz bir Git deposundaysa, bu en kolay yoldur.<\/li>\n<pre><code class=\"language-bash\">(venv) git clone <repo_url> .\n<\/code><\/pre>\n<li><strong>SCP ile Kopyalama:<\/strong> Yerel makinenizden sunucuya kopyalayabilirsiniz.<\/li>\n<pre><code class=\"language-bash\"># Yerel makinenizde\nscp -r \/path\/to\/your\/local\/project\/ user@your_vps_ip:\/var\/www\/myproject\/\n<\/code><\/pre>\n<\/ol>\n<p>Proje dosyalar\u0131n\u0131z\u0131n <code>\/var\/www\/myproject\/<\/code> dizini alt\u0131nda oldu\u011fundan emin olun. \u00d6rne\u011fin, <code>manage.py<\/code> dosyas\u0131n\u0131n <code>\/var\/www\/myproject\/manage.py<\/code> yolunda olmas\u0131 beklenir.<\/p>\n<h3>Gerekli Python Paketlerinin Kurulumu<\/h3>\n<p>Projenizin ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 <code>requirements.txt<\/code> dosyas\u0131ndan y\u00fckleyin:<\/p>\n<pre><code class=\"language-bash\">(venv) pip install -r requirements.txt\n<\/code><\/pre>\n<p>E\u011fer <code>requirements.txt<\/code> dosyan\u0131z yoksa, Django ve veritaban\u0131 s\u00fcr\u00fcc\u00fcs\u00fc gibi temel paketleri manuel olarak kurun:<\/p>\n<pre><code class=\"language-bash\">(venv) pip install Django psycopg2-binary # veya mysqlclient, vb.\n<\/code><\/pre>\n<p>Kurulum tamamland\u0131ktan sonra virtualenv&#8217;den \u00e7\u0131kabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">(venv) deactivate\n<\/code><\/pre>\n<h2>Apache ve mod_wsgi Yap\u0131land\u0131rmas\u0131<\/h2>\n<p>\u015eimdi Apache&#8217;ye Django uygulaman\u0131z\u0131 nas\u0131l sunaca\u011f\u0131n\u0131 \u00f6\u011fretece\u011fiz. Bunun i\u00e7in yeni bir Virtual Host yap\u0131land\u0131rma dosyas\u0131 olu\u015fturaca\u011f\u0131z.<\/p>\n<h3>Apache Site Yap\u0131land\u0131rma Dosyas\u0131 Olu\u015fturma<\/h3>\n<p>Apache&#8217;nin site yap\u0131land\u0131rma dosyalar\u0131 genellikle <code>\/etc\/apache2\/sites-available\/<\/code> dizininde bulunur. Projeniz i\u00e7in yeni bir dosya olu\u015fturun:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/apache2\/sites-available\/myproject.conf\n<\/code><\/pre>\n<p>Dosyan\u0131n i\u00e7ine a\u015fa\u011f\u0131daki i\u00e7eri\u011fi yap\u0131\u015ft\u0131r\u0131n. Kendi proje ad\u0131n\u0131za, domain ad\u0131n\u0131za ve dizin yollar\u0131n\u0131za g\u00f6re d\u00fczenlemeler yapmay\u0131 unutmay\u0131n:<\/p>\n<pre><code class=\"language-apache\"><VirtualHost *:80>\n    ServerAdmin webmaster@localhost\n    ServerName your_domain.com\n    ServerAlias www.your_domain.com\n\n    DocumentRoot \/var\/www\/myproject\/\n\n    ErrorLog ${APACHE_LOG_DIR}\/myproject_error.log\n    CustomLog ${APACHE_LOG_DIR}\/myproject_access.log combined\n\n    # WSGI yap\u0131land\u0131rmas\u0131\n    WSGIDaemonProcess myproject python-home=\/var\/www\/myproject\/venv python-path=\/var\/www\/myproject\n    WSGIProcessGroup myproject\n    WSGIScriptAlias \/ \/var\/www\/myproject\/myproject\/wsgi.py\n\n    <Directory \/var\/www\/myproject\/myproject>\n        &Require all granted\n    <\/Directory>\n\n    # Statik dosyalar i\u00e7in Alias\n    Alias \/static \/var\/www\/myproject\/static\n    <Directory \/var\/www\/myproject\/static>\n        Require all granted\n    <\/Directory>\n\n    # Medya dosyalar\u0131 i\u00e7in Alias (e\u011fer kullan\u0131yorsan\u0131z)\n    Alias \/media \/var\/www\/myproject\/media\n    <Directory \/var\/www\/myproject\/media>\n        Require all granted\n    <\/Directory>\n\n<\/VirtualHost>\n<\/code><\/pre>\n<p><strong>A\u00e7\u0131klamalar:<\/strong><\/p>\n<ul>\n<li><code>ServerName<\/code> ve <code>ServerAlias<\/code>: Alan ad\u0131n\u0131z\u0131 (domain) veya sunucunuzun IP adresini buraya yaz\u0131n.<\/li>\n<li><code>WSGIDaemonProcess myproject python-home=\/var\/www\/myproject\/venv python-path=\/var\/www\/myproject<\/code>:\n<ul>\n<li><code>myproject<\/code>: WSGI s\u00fcre\u00e7 grubunun ad\u0131d\u0131r.<\/li>\n<li><code>python-home<\/code>: virtualenv&#8217;inizin yolunu belirtir. Bu, mod_wsgi&#8217;nin projenizin ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 do\u011fru ortamdan y\u00fcklemesini sa\u011flar.<\/li>\n<li><code>python-path<\/code>: Django projenizin k\u00f6k dizinini belirtir. Bu, Django&#8217;nun <code>settings.py<\/code> ve di\u011fer mod\u00fclleri bulabilmesini sa\u011flar.<\/li>\n<\/ul>\n<\/li>\n<li><code>WSGIProcessGroup myproject<\/code>: Bu sanal host i\u00e7in hangi WSGI s\u00fcre\u00e7 grubunun kullan\u0131laca\u011f\u0131n\u0131 belirtir.<\/li>\n<li><code>WSGIScriptAlias \/ \/var\/www\/myproject\/myproject\/wsgi.py<\/code>: T\u00fcm gelen istekleri (<code>\/<\/code>) Django projenizin <code>wsgi.py<\/code> dosyas\u0131na y\u00f6nlendirir. \u0130lk <code>myproject<\/code>, projenizin ana dizini, ikinci <code>myproject<\/code> ise Django projenizin i\u00e7indeki ana uygulama dizinidir (<code>settings.py<\/code> ve <code>wsgi.py<\/code>&#8216;nin bulundu\u011fu yer). Kendi proje yap\u0131n\u0131za g\u00f6re bu yolu ayarlay\u0131n.<\/li>\n<li><code><Directory><\/code> bloklar\u0131: Apache&#8217;nin belirli dizinlere eri\u015fim izinlerini ayarlar.<\/li>\n<li><code>Alias \/static<\/code> ve <code>Alias \/media<\/code>: Django&#8217;nun <code>collectstatic<\/code> komutuyla toplad\u0131\u011f\u0131 statik dosyalar\u0131 ve kullan\u0131c\u0131 taraf\u0131ndan y\u00fcklenen medya dosyalar\u0131n\u0131 Apache&#8217;nin do\u011frudan sunmas\u0131n\u0131 sa\u011flar. Bu, Django&#8217;nun bu t\u00fcr dosyalar\u0131 sunma y\u00fck\u00fcn\u00fc hafifletir.<\/li>\n<\/ul>\n<h3>Siteyi Etkinle\u015ftirme ve Apache&#8217;yi Yeniden Ba\u015flatma<\/h3>\n<p>Yeni yap\u0131land\u0131rma dosyan\u0131z\u0131 etkinle\u015ftirin ve Apache&#8217;yi yeniden ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo a2ensite myproject.conf\nsudo apache2ctl configtest # Yap\u0131land\u0131rma hatas\u0131 olup olmad\u0131\u011f\u0131n\u0131 kontrol edin\nsudo systemctl restart apache2\n<\/code><\/pre>\n<p><code>apache2ctl configtest<\/code> komutu, yap\u0131land\u0131rma dosyan\u0131zda herhangi bir hata olup olmad\u0131\u011f\u0131n\u0131 kontrol etmek i\u00e7in \u00e7ok \u00f6nemlidir. E\u011fer &#8220;Syntax OK&#8221; \u00e7\u0131kt\u0131s\u0131n\u0131 al\u0131rsan\u0131z, yap\u0131land\u0131rman\u0131zda bir sorun yok demektir.<\/p>\n<h2>Django Projesinin Ayarlanmas\u0131 (settings.py, wsgi.py)<\/h2>\n<p>Django projenizin \u00fcretim ortam\u0131na uygun \u015fekilde yap\u0131land\u0131r\u0131lmas\u0131 gerekmektedir.<\/p>\n<h3>settings.py Dosyas\u0131<\/h3>\n<p>Projenizin <code>settings.py<\/code> dosyas\u0131nda a\u015fa\u011f\u0131daki de\u011fi\u015fiklikleri yap\u0131n:<\/p>\n<pre><code class=\"language-python\"># myproject\/settings.py\n\n<h2>G\u00dcVENL\u0130K \u0130\u00c7\u0130N DEBUG=False YAPIN!<\/h2>\nDEBUG = False\n\n<h2>Uygulaman\u0131z\u0131n eri\u015filebilir olaca\u011f\u0131 host isimlerini buraya ekleyin<\/h2>\nALLOWED_HOSTS = ['your_domain.com', 'www.your_domain.com', 'your_vps_ip_address']\n\n<h2>Statik ve Medya Dosyalar\u0131<\/h2>\nimport os\nBASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))\n\nSTATIC_URL = '\/static\/'\nSTATIC_ROOT = os.path.join(BASE_DIR, 'static') # collectstatic buraya toplar\n\nMEDIA_URL = '\/media\/'\nMEDIA_ROOT = os.path.join(BASE_DIR, 'media') # Kullan\u0131c\u0131 y\u00fcklemeleri buraya gider\n\n<h2>SECRET_KEY'i gizli tutun. \u00dcretimde asla do\u011frudan buraya yazmay\u0131n!<\/h2>\n<h2>Ortam de\u011fi\u015fkeni olarak veya ba\u015fka bir g\u00fcvenli y\u00f6ntemle y\u00fckleyin.<\/h2>\n<h2>\u00d6rnek: SECRET_KEY = os.environ.get('DJANGO_SECRET_KEY', 'default-insecure-key')<\/h2>\n<\/code><\/pre>\n<p><strong>\u00d6nemli:<\/strong> <code>DEBUG = False<\/code> ayar\u0131n\u0131 \u00fcretim ortam\u0131nda kesinlikle bu \u015fekilde b\u0131rak\u0131n. Hata ay\u0131klama bilgileri hassas veriler i\u00e7erebilir. <code>SECRET_KEY<\/code>&#8216;i do\u011frudan dosyaya yazmak yerine, ortam de\u011fi\u015fkenleri (\u00f6rne\u011fin <code>\/etc\/apache2\/envvars<\/code> veya <code>.env<\/code> dosyas\u0131 ile) arac\u0131l\u0131\u011f\u0131yla y\u00fcklemeniz \u00f6nerilir.<\/p>\n<h3>wsgi.py Dosyas\u0131<\/h3>\n<p>Django projenizin <code>wsgi.py<\/code> dosyas\u0131 genellikle a\u015fa\u011f\u0131daki gibi g\u00f6r\u00fcn\u00fcr. Mod_wsgi&#8217;nin projenizi do\u011fru \u015fekilde bulabilmesi i\u00e7in bazen <code>sys.path<\/code>&#8216;e proje k\u00f6k dizinini eklemek gerekebilir, ancak <code>python-path<\/code> parametresi ile bu genellikle gereksizdir. Yine de, sorun ya\u015farsan\u0131z a\u015fa\u011f\u0131daki gibi d\u00fczenleyebilirsiniz:<\/p>\n<pre><code class=\"language-python\"># myproject\/myproject\/wsgi.py\n\nimport os\nimport sys\n\nfrom django.core.wsgi import get_wsgi_application\n\n<h2>Projenizin k\u00f6k dizinini sys.path'e ekleyin<\/h2>\n<h2>Bu, wsgi.py dosyas\u0131n\u0131n bulundu\u011fu dizinin bir \u00fcst dizini olmal\u0131d\u0131r<\/h2>\n<h2>E\u011fer Apache yap\u0131land\u0131rman\u0131zdaki python-path do\u011fru ise bu sat\u0131r gereksiz olabilir<\/h2>\n<h2>sys.path.append('\/var\/www\/myproject') # Kendi proje yolunuza g\u00f6re d\u00fczenleyin<\/h2>\n\nos.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')\n\napplication = get_wsgi_application()\n<\/code><\/pre>\n<h2>Veritaban\u0131 Yap\u0131land\u0131rmas\u0131<\/h2>\n<p>\u00c7o\u011fu Django projesi bir veritaban\u0131na ihtiya\u00e7 duyar. Bu b\u00f6l\u00fcmde PostgreSQL kurulumunu ele alaca\u011f\u0131z, ancak ad\u0131mlar di\u011fer veritabanlar\u0131 (MySQL\/MariaDB) i\u00e7in de benzerdir.<\/p>\n<h3>PostgreSQL Kurulumu<\/h3>\n<pre><code class=\"language-bash\">sudo apt install postgresql postgresql-contrib -y\n<\/code><\/pre>\n<p>PostgreSQL varsay\u0131lan olarak <code>postgres<\/code> ad\u0131nda bir kullan\u0131c\u0131 olu\u015fturur. Bu kullan\u0131c\u0131 ile veritaban\u0131 i\u015flemleri yapabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo -u postgres psql\n<\/code><\/pre>\n<p>PSQL istemcisinde, projeniz i\u00e7in bir veritaban\u0131 ve kullan\u0131c\u0131 olu\u015fturun:<\/p>\n<pre><code class=\"language-sql\">CREATE DATABASE myprojectdb;\nCREATE USER myprojectuser WITH PASSWORD 'your_secure_password';\nALTER ROLE myprojectuser SET client_encoding TO 'utf8';\nALTER ROLE myprojectuser SET default_transaction_isolation TO 'read committed';\nALTER ROLE myprojectuser SET timezone TO 'UTC';\nGRANT ALL PRIVILEGES ON DATABASE myprojectdb TO myprojectuser;\n\\q\n<\/code><\/pre>\n<p><code>myprojectdb<\/code>, <code>myprojectuser<\/code> ve <code>your_secure_password<\/code> de\u011ferlerini kendi tercihlerinizle de\u011fi\u015ftirin.<\/p>\n<h3>Django settings.py&#8217;de Veritaban\u0131 Ayarlar\u0131<\/h3>\n<p><code>settings.py<\/code> dosyan\u0131zda veritaban\u0131 ayarlar\u0131n\u0131z\u0131 g\u00fcncelleyin:<\/p>\n<pre><code class=\"language-python\"># myproject\/settings.py\n\nDATABASES = {\n    'default': {\n        'ENGINE': 'django.db.backends.postgresql_psycopg2',\n        'NAME': 'myprojectdb',\n        'USER': 'myprojectuser',\n        'PASSWORD': 'your_secure_password',\n        'HOST': 'localhost',\n        'PORT': '',\n    }\n}\n<\/code><\/pre>\n<h3>Veritaban\u0131 G\u00f6\u00e7leri ve S\u00fcper Kullan\u0131c\u0131 Olu\u015fturma<\/h3>\n<p>virtualenv&#8217;inizi tekrar etkinle\u015ftirerek veritaban\u0131 g\u00f6\u00e7lerini \u00e7al\u0131\u015ft\u0131r\u0131n ve bir s\u00fcper kullan\u0131c\u0131 olu\u015fturun:<\/p>\n<pre><code class=\"language-bash\">cd \/var\/www\/myproject\nsource venv\/bin\/activate\npython manage.py migrate\npython manage.py collectstatic --noinput # Statik dosyalar\u0131 topla\npython manage.py createsuperuser\ndeactivate\n<\/code><\/pre>\n<h2>Statik ve Medya Dosyalar\u0131n\u0131n Y\u00f6netimi<\/h2>\n<p>Django, \u00fcretim ortam\u0131nda statik ve medya dosyalar\u0131n\u0131 do\u011frudan sunmaz. Bu g\u00f6rev i\u00e7in Apache gibi bir web sunucusu kullan\u0131l\u0131r.<\/p>\n<h3>Statik Dosyalar\u0131n Toplanmas\u0131<\/h3>\n<p><code>python manage.py collectstatic<\/code> komutu, projenizdeki t\u00fcm statik dosyalar\u0131 (Django admin, uygulamalar\u0131n\u0131z\u0131n statik dosyalar\u0131 vb.) <code>STATIC_ROOT<\/code> ayar\u0131nda belirtti\u011finiz dizine toplar. Bu dizin i\u00e7in Apache yap\u0131land\u0131rman\u0131zda <code>Alias<\/code> tan\u0131mlad\u0131k.<\/p>\n<pre><code class=\"language-bash\">cd \/var\/www\/myproject\nsource venv\/bin\/activate\npython manage.py collectstatic --noinput # --noinput, onay istemeden toplar\ndeactivate\n<\/code><\/pre>\n<h3>Dizin \u0130zinleri<\/h3>\n<p>Apache&#8217;nin statik ve medya dosyalar\u0131na eri\u015febilmesi i\u00e7in do\u011fru dosya ve dizin izinlerine sahip oldu\u011fundan emin olun. Apache genellikle <code>www-data<\/code> kullan\u0131c\u0131s\u0131 alt\u0131nda \u00e7al\u0131\u015f\u0131r.<\/p>\n<pre><code class=\"language-bash\">sudo chown -R www-data:www-data \/var\/www\/myproject\/static\nsudo chown -R www-data:www-data \/var\/www\/myproject\/media # Medya dosyalar\u0131 i\u00e7in\nsudo chmod -R 755 \/var\/www\/myproject\/static\nsudo chmod -R 755 \/var\/www\/myproject\/media\n<\/code><\/pre>\n<p>E\u011fer Apache&#8217;nin medya dosyalar\u0131n\u0131 yazmas\u0131 gerekiyorsa (kullan\u0131c\u0131 y\u00fcklemeleri gibi), <code>media<\/code> dizinine yazma izni de vermeniz gerekebilir:<\/p>\n<pre><code class=\"language-bash\">sudo chmod -R 775 \/var\/www\/myproject\/media\n<\/code><\/pre>\n<p>Bu izinleri verirken dikkatli olun ve sadece ger\u00e7ekten gerekli olan dizinlere yazma izni verin.<\/p>\n<h2>G\u00fcvenlik \u0130pu\u00e7lar\u0131<\/h2>\n<p>\u00dcretim ortam\u0131nda Django uygulaman\u0131z\u0131n g\u00fcvenli\u011fini sa\u011flamak kritik \u00f6neme sahiptir.<\/p>\n<h3>DEBUG = False ve ALLOWED_HOSTS<\/h3>\n<p><code>settings.py<\/code> dosyas\u0131nda <code>DEBUG = False<\/code> olarak ayarland\u0131\u011f\u0131ndan ve <code>ALLOWED_HOSTS<\/code> listesinin yaln\u0131zca uygulaman\u0131z\u0131n eri\u015filebilir olmas\u0131n\u0131 istedi\u011finiz alan adlar\u0131n\u0131 i\u00e7erdi\u011finden emin olun.<\/p>\n<h3>SECRET_KEY&#8217;in Gizlenmesi<\/h3>\n<p><code>SECRET_KEY<\/code>, Django&#8217;nun g\u00fcvenlik mekanizmalar\u0131n\u0131n temelidir. Bu anahtar\u0131 asla do\u011frudan <code>settings.py<\/code> dosyas\u0131nda b\u0131rakmay\u0131n. Ortam de\u011fi\u015fkenleri, bir <code>.env<\/code> dosyas\u0131 (python-dotenv ile okunur) veya Apache&#8217;nin <code>SetEnv<\/code> y\u00f6nergesi gibi y\u00f6ntemlerle y\u00fckleyin.<\/p>\n<p>Apache <code>SetEnv<\/code> \u00f6rne\u011fi (<code>myproject.conf<\/code> i\u00e7ine):<\/p>\n<pre><code class=\"language-apache\">SetEnv DJANGO_SECRET_KEY \"your_very_long_and_secret_key\"\n<\/code><\/pre>\n<p>Ve <code>settings.py<\/code> i\u00e7inde:<\/p>\n<pre><code class=\"language-python\">import os\nSECRET_KEY = os.environ.get('DJANGO_SECRET_KEY')\nif not SECRET_KEY:\n    raise ImproperlyConfigured(\"DJANGO_SECRET_KEY environment variable not set.\")\n<\/code><\/pre>\n<h3>SSL\/TLS (HTTPS) Kullan\u0131m\u0131<\/h3>\n<p>T\u00fcm \u00fcretim uygulamalar\u0131 HTTPS kullanmal\u0131d\u0131r. Let&#8217;s Encrypt ve Certbot, \u00fccretsiz SSL sertifikalar\u0131 alman\u0131z\u0131 ve otomatik olarak yap\u0131land\u0131rman\u0131z\u0131 sa\u011flar:<\/p>\n<pre><code class=\"language-bash\">sudo apt install certbot python3-certbot-apache -y\nsudo certbot --apache -d your_domain.com -d www.your_domain.com\n<\/code><\/pre>\n<p>Bu komutlar, sertifikay\u0131 alacak ve Apache yap\u0131land\u0131rman\u0131z\u0131 otomatik olarak g\u00fcncelleyecektir.<\/p>\n<h3>G\u00fcvenlik Duvar\u0131 (UFW)<\/h3>\n<p>Sadece gerekli portlar\u0131 (80 ve 443) a\u00e7\u0131k tutmak i\u00e7in bir g\u00fcvenlik duvar\u0131 kullan\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo ufw allow 'Apache Full'\nsudo ufw enable\n<\/code><\/pre>\n<h2>Sorun Giderme (Yayg\u0131n Hatalar)<\/h2>\n<p>Kurulum s\u0131ras\u0131nda veya sonras\u0131nda kar\u015f\u0131la\u015fabilece\u011finiz yayg\u0131n sorunlar ve \u00e7\u00f6z\u00fcmleri:<\/p>\n<h3>Apache Hata G\u00fcnl\u00fckleri<\/h3>\n<p>En \u00f6nemli sorun giderme arac\u0131 Apache hata g\u00fcnl\u00fckleridir. T\u00fcm hatalar buraya yaz\u0131l\u0131r:<\/p>\n<pre><code class=\"language-bash\">sudo tail -f \/var\/log\/apache2\/myproject_error.log\nsudo tail -f \/var\/log\/apache2\/error.log\n<\/code><\/pre>\n<p>Bu g\u00fcnl\u00fckleri izleyerek, Python traceback&#8217;lerini veya Apache ile ilgili yap\u0131land\u0131rma hatalar\u0131n\u0131 g\u00f6rebilirsiniz.<\/p>\n<h3>Dizin\/Dosya \u0130zinleri<\/h3>\n<p><code>Permission denied<\/code> hatalar\u0131 genellikle yanl\u0131\u015f dosya veya dizin izinlerinden kaynaklan\u0131r. Apache&#8217;nin <code>www-data<\/code> kullan\u0131c\u0131s\u0131 alt\u0131nda \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 unutmay\u0131n ve bu kullan\u0131c\u0131n\u0131n projenizin t\u00fcm dosyalar\u0131na ve virtualenv&#8217;e okuma eri\u015fimi oldu\u011fundan emin olun.<\/p>\n<pre><code class=\"language-bash\">sudo chown -R www-data:www-data \/var\/www\/myproject\nsudo chmod -R 755 \/var\/www\/myproject\n<\/code><\/pre>\n<p>Ancak, <code>wsgi.py<\/code> dosyas\u0131n\u0131n ve t\u00fcm Python dosyalar\u0131n\u0131n \u00e7al\u0131\u015ft\u0131r\u0131labilir olmas\u0131 gerekmez, sadece okunabilir olmas\u0131 yeterlidir.<\/p>\n<h3>virtualenv Aktivasyonu ve Paketlerin Y\u00fcklenmesi<\/h3>\n<p>mod_wsgi&#8217;nin do\u011fru virtualenv&#8217;i kulland\u0131\u011f\u0131ndan emin olun. <code>WSGIDaemonProcess<\/code> i\u00e7indeki <code>python-home<\/code> parametresini iki kez kontrol edin. E\u011fer projeniz \u00e7al\u0131\u015fm\u0131yorsa ve Python ba\u011f\u0131ml\u0131l\u0131klar\u0131 eksik diyorsa, virtualenv&#8217;i etkinle\u015ftirip <code>pip freeze<\/code> komutunu \u00e7al\u0131\u015ft\u0131rarak y\u00fckl\u00fc paketleri kontrol edin.<\/p>\n<h3>WSGIDaemonProcess ve WSGIProcessGroup Hatalar\u0131<\/h3>\n<p>Bu parametrelerin Apache yap\u0131land\u0131rman\u0131zda do\u011fru ayarland\u0131\u011f\u0131ndan ve birbiriyle e\u015fle\u015fti\u011finden emin olun. Yanl\u0131\u015f yap\u0131land\u0131rma, Apache&#8217;nin WSGI uygulamas\u0131n\u0131 ba\u015flatamamas\u0131na neden olabilir.<\/p>\n<h3>ALLOWED_HOSTS Hatas\u0131<\/h3>\n<p>E\u011fer taray\u0131c\u0131n\u0131zda &#8220;Disallowed Host&#8221; hatas\u0131 g\u00f6r\u00fcyorsan\u0131z, <code>settings.py<\/code> dosyas\u0131ndaki <code>ALLOWED_HOSTS<\/code> listesine sunucunuzun IP adresini veya alan ad\u0131n\u0131z\u0131 ekledi\u011finizden emin olun.<\/p>\n<h3>collectstatic Unutulmas\u0131<\/h3>\n<p>Django admin paneli veya kendi uygulaman\u0131z\u0131n statik dosyalar\u0131 y\u00fcklenmiyorsa, <code>python manage.py collectstatic<\/code> komutunu \u00e7al\u0131\u015ft\u0131rmay\u0131 unutmu\u015f olabilirsiniz. Ayr\u0131ca, Apache yap\u0131land\u0131rman\u0131zdaki <code>Alias \/static<\/code> yolunun do\u011fru oldu\u011fundan ve <code>STATIC_ROOT<\/code> ile e\u015fle\u015fti\u011finden emin olun.<\/p>\n<h2>Sonu\u00e7<\/h2>\n<p>Bu makalede, Django uygulaman\u0131z\u0131 Debian VPS \u00fczerinde Apache ve mod_wsgi ile bir virtualenv ortam\u0131nda nas\u0131l \u00e7al\u0131\u015ft\u0131raca\u011f\u0131n\u0131z\u0131 detayl\u0131 bir \u015fekilde inceledik. Sistem kurulumundan Apache ve Django yap\u0131land\u0131rmas\u0131na, veritaban\u0131 entegrasyonundan g\u00fcvenlik ipu\u00e7lar\u0131na kadar her ad\u0131m\u0131 ele ald\u0131k. Bu kombinasyon, Django projeleriniz i\u00e7in sa\u011flam, g\u00fcvenli ve y\u00fcksek performansl\u0131 bir \u00fcretim ortam\u0131 sunar. Ad\u0131mlar\u0131 dikkatlice takip ederek ve kendi proje detaylar\u0131n\u0131za g\u00f6re ayarlamalar yaparak Django uygulaman\u0131z\u0131 ba\u015far\u0131yla da\u011f\u0131tabilirsiniz.<\/p>\n<p>Unutmay\u0131n ki her projenin kendine \u00f6zg\u00fc gereksinimleri olabilir. Bu rehber genel bir \u00e7er\u00e7eve sunar ve spesifik ihtiya\u00e7lar\u0131n\u0131za g\u00f6re ek yap\u0131land\u0131rmalar veya optimizasyonlar yapman\u0131z gerekebilir. \u00d6zellikle g\u00fcvenlik ve performans konular\u0131nda s\u00fcrekli g\u00fcncel kalmak ve en iyi pratikleri uygulamak \u00f6nemlidir.<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Web uygulamalar\u0131n\u0131 \u00fcretim ortam\u0131nda \u00e7al\u0131\u015ft\u0131rmak, geli\u015ftirme ortam\u0131ndan farkl\u0131 zorluklar bar\u0131nd\u0131r\u0131r. Performans, g\u00fcvenlik, \u00f6l\u00e7eklenebilirlik ve kararl\u0131l\u0131k gibi fakt\u00f6rler devreye girer.","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-40501","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>Django Uygulamas\u0131n\u0131 mod_wsgi, Apache ve virtualenv ile Debian VPS \u00dczerinde \u00c7al\u0131\u015ft\u0131rmak - 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-uygulamasini-mod_wsgi-apache-ve-virtualenv-ile-debian-vps-uzerinde-calistirmak\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Django Uygulamas\u0131n\u0131 mod_wsgi, Apache ve virtualenv ile Debian VPS \u00dczerinde \u00c7al\u0131\u015ft\u0131rmak\" \/>\n<meta property=\"og:description\" content=\"Web uygulamalar\u0131n\u0131 \u00fcretim ortam\u0131nda \u00e7al\u0131\u015ft\u0131rmak, geli\u015ftirme ortam\u0131ndan farkl\u0131 zorluklar bar\u0131nd\u0131r\u0131r. Performans, g\u00fcvenlik, \u00f6l\u00e7eklenebilirlik ve kararl\u0131l\u0131k gibi fakt\u00f6rler devreye girer.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/django-uygulamasini-mod_wsgi-apache-ve-virtualenv-ile-debian-vps-uzerinde-calistirmak\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-27T08:40:45+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=\"15 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/django-uygulamasini-mod_wsgi-apache-ve-virtualenv-ile-debian-vps-uzerinde-calistirmak\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/django-uygulamasini-mod_wsgi-apache-ve-virtualenv-ile-debian-vps-uzerinde-calistirmak\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Django Uygulamas\u0131n\u0131 mod_wsgi, Apache ve virtualenv ile Debian VPS \u00dczerinde \u00c7al\u0131\u015ft\u0131rmak\",\"datePublished\":\"2026-02-27T08:40:45+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/django-uygulamasini-mod_wsgi-apache-ve-virtualenv-ile-debian-vps-uzerinde-calistirmak\/\"},\"wordCount\":2173,\"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\/django-uygulamasini-mod_wsgi-apache-ve-virtualenv-ile-debian-vps-uzerinde-calistirmak\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/django-uygulamasini-mod_wsgi-apache-ve-virtualenv-ile-debian-vps-uzerinde-calistirmak\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/django-uygulamasini-mod_wsgi-apache-ve-virtualenv-ile-debian-vps-uzerinde-calistirmak\/\",\"name\":\"Django Uygulamas\u0131n\u0131 mod_wsgi, Apache ve virtualenv ile Debian VPS \u00dczerinde \u00c7al\u0131\u015ft\u0131rmak - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-02-27T08:40:45+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/django-uygulamasini-mod_wsgi-apache-ve-virtualenv-ile-debian-vps-uzerinde-calistirmak\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/django-uygulamasini-mod_wsgi-apache-ve-virtualenv-ile-debian-vps-uzerinde-calistirmak\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/django-uygulamasini-mod_wsgi-apache-ve-virtualenv-ile-debian-vps-uzerinde-calistirmak\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Django Uygulamas\u0131n\u0131 mod_wsgi, Apache ve virtualenv ile Debian VPS \u00dczerinde \u00c7al\u0131\u015ft\u0131rmak\"}]},{\"@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 Uygulamas\u0131n\u0131 mod_wsgi, Apache ve virtualenv ile Debian VPS \u00dczerinde \u00c7al\u0131\u015ft\u0131rmak - 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-uygulamasini-mod_wsgi-apache-ve-virtualenv-ile-debian-vps-uzerinde-calistirmak\/","og_locale":"tr_TR","og_type":"article","og_title":"Django Uygulamas\u0131n\u0131 mod_wsgi, Apache ve virtualenv ile Debian VPS \u00dczerinde \u00c7al\u0131\u015ft\u0131rmak","og_description":"Web uygulamalar\u0131n\u0131 \u00fcretim ortam\u0131nda \u00e7al\u0131\u015ft\u0131rmak, geli\u015ftirme ortam\u0131ndan farkl\u0131 zorluklar bar\u0131nd\u0131r\u0131r. Performans, g\u00fcvenlik, \u00f6l\u00e7eklenebilirlik ve kararl\u0131l\u0131k gibi fakt\u00f6rler devreye girer.","og_url":"https:\/\/fatihsoysal.com\/blog\/django-uygulamasini-mod_wsgi-apache-ve-virtualenv-ile-debian-vps-uzerinde-calistirmak\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-02-27T08:40:45+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"15 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/django-uygulamasini-mod_wsgi-apache-ve-virtualenv-ile-debian-vps-uzerinde-calistirmak\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/django-uygulamasini-mod_wsgi-apache-ve-virtualenv-ile-debian-vps-uzerinde-calistirmak\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Django Uygulamas\u0131n\u0131 mod_wsgi, Apache ve virtualenv ile Debian VPS \u00dczerinde \u00c7al\u0131\u015ft\u0131rmak","datePublished":"2026-02-27T08:40:45+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/django-uygulamasini-mod_wsgi-apache-ve-virtualenv-ile-debian-vps-uzerinde-calistirmak\/"},"wordCount":2173,"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\/django-uygulamasini-mod_wsgi-apache-ve-virtualenv-ile-debian-vps-uzerinde-calistirmak\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/django-uygulamasini-mod_wsgi-apache-ve-virtualenv-ile-debian-vps-uzerinde-calistirmak\/","url":"https:\/\/fatihsoysal.com\/blog\/django-uygulamasini-mod_wsgi-apache-ve-virtualenv-ile-debian-vps-uzerinde-calistirmak\/","name":"Django Uygulamas\u0131n\u0131 mod_wsgi, Apache ve virtualenv ile Debian VPS \u00dczerinde \u00c7al\u0131\u015ft\u0131rmak - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-02-27T08:40:45+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/django-uygulamasini-mod_wsgi-apache-ve-virtualenv-ile-debian-vps-uzerinde-calistirmak\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/django-uygulamasini-mod_wsgi-apache-ve-virtualenv-ile-debian-vps-uzerinde-calistirmak\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/django-uygulamasini-mod_wsgi-apache-ve-virtualenv-ile-debian-vps-uzerinde-calistirmak\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Django Uygulamas\u0131n\u0131 mod_wsgi, Apache ve virtualenv ile Debian VPS \u00dczerinde \u00c7al\u0131\u015ft\u0131rmak"}]},{"@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\/40501","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=40501"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/40501\/revisions"}],"predecessor-version":[{"id":40502,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/40501\/revisions\/40502"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=40501"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=40501"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=40501"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}