{"id":33534,"date":"2025-11-04T03:40:56","date_gmt":"2025-11-04T00:40:56","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=33534"},"modified":"2025-11-04T03:40:56","modified_gmt":"2025-11-04T00:40:56","slug":"flask-uygulamalarini-uwsgi-ve-nginx-ile-ubuntu-22-04-uzerinde-dagitma","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/flask-uygulamalarini-uwsgi-ve-nginx-ile-ubuntu-22-04-uzerinde-dagitma\/","title":{"rendered":"Flask Uygulamalar\u0131n\u0131 uWSGI ve Nginx ile Ubuntu 22.04 \u00dczerinde Da\u011f\u0131tma"},"content":{"rendered":"<p><body><\/p>\n<h2>Flask Uygulamalar\u0131n\u0131 uWSGI ve Nginx ile Ubuntu 22.04 \u00dczerinde Da\u011f\u0131tma<\/h2>\n<h3>Giri\u015f<\/h3>\n<p>Web uygulamalar\u0131n\u0131n geli\u015ftirilmesi g\u00fcn\u00fcm\u00fczde olduk\u00e7a pop\u00fcler hale gelmi\u015ftir. Python tabanl\u0131 mikro web \u00e7at\u0131s\u0131 Flask, esnekli\u011fi ve hafif yap\u0131s\u0131yla bir\u00e7ok geli\u015ftirici taraf\u0131ndan tercih edilmektedir. Ancak Flask uygulamalar\u0131, geli\u015ftirme sunucusuyla (Flask&#8217;\u0131n kendi <code>app.run()<\/code> fonksiyonu) do\u011frudan \u00fcretim ortam\u0131nda kullan\u0131lmamal\u0131d\u0131r. \u00dcretim ortamlar\u0131 i\u00e7in daha sa\u011flam, performansl\u0131 ve g\u00fcvenli \u00e7\u00f6z\u00fcmlere ihtiya\u00e7 duyulur. Bu makalede, Flask uygulamalar\u0131n\u0131z\u0131 Ubuntu 22.04 sunucusu \u00fczerinde uWSGI uygulama sunucusu ve Nginx ters proxy sunucusu kullanarak nas\u0131l da\u011f\u0131taca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m a\u00e7\u0131klayaca\u011f\u0131z.<\/p>\n<p>Flask, uWSGI ve Nginx \u00fc\u00e7l\u00fcs\u00fc, modern web uygulamalar\u0131n\u0131 da\u011f\u0131tmak i\u00e7in kan\u0131tlanm\u0131\u015f ve yayg\u0131n olarak kullan\u0131lan bir mimaridir. Bu kombinasyonun her bir bile\u015feni belirli bir role sahiptir:<br \/>\n*   <strong>Flask:<\/strong> Web uygulaman\u0131z\u0131n kendisi, i\u015f mant\u0131\u011f\u0131n\u0131 ve API u\u00e7 noktalar\u0131n\u0131 bar\u0131nd\u0131r\u0131r.<br \/>\n*   <strong>uWSGI:<\/strong> Bir WSGI (Web Server Gateway Interface) sunucusudur. Flask gibi Python web uygulamalar\u0131 ile web sunucular\u0131 (Nginx gibi) aras\u0131nda bir k\u00f6pr\u00fc g\u00f6revi g\u00f6r\u00fcr. Uygulama kodunuzu \u00e7al\u0131\u015ft\u0131r\u0131r ve gelen istekleri i\u015fleyerek yan\u0131tlar\u0131 Nginx&#8217;e geri g\u00f6nderir. Performans, \u00f6l\u00e7eklenebilirlik ve g\u00fcvenlik a\u00e7\u0131s\u0131ndan geli\u015ftirme sunucusundan \u00e7ok daha \u00fcst\u00fcnd\u00fcr.<br \/>\n*   <strong>Nginx:<\/strong> Y\u00fcksek performansl\u0131 bir web sunucusu ve ters proxy&#8217;dir. Do\u011frudan istemcilerden gelen istekleri al\u0131r, statik dosyalar\u0131 (CSS, JavaScript, resimler) do\u011frudan sunar ve dinamik istekleri (Flask uygulaman\u0131z\u0131n i\u015fleyece\u011fi istekler) uWSGI&#8217;ye y\u00f6nlendirir. Nginx, y\u00fck dengeleme, SSL\/TLS sonland\u0131rma ve g\u00fcvenlik gibi ek \u00f6zellikler de sunar.<\/p>\n<p>Bu rehberin sonunda, Flask uygulaman\u0131z\u0131n g\u00fcvenli, performansl\u0131 ve \u00f6l\u00e7eklenebilir bir \u015fekilde internet \u00fczerinden eri\u015filebilir olmas\u0131n\u0131 sa\u011flayacaks\u0131n\u0131z.<\/p>\n<h3>\u00d6n Ko\u015fullar<\/h3>\n<p>Bu rehbere ba\u015flamadan \u00f6nce a\u015fa\u011f\u0131daki \u00f6n ko\u015fullar\u0131n yerine getirildi\u011finden emin olun:<br \/>\n*   <strong>Ubuntu 22.04 Sunucusu:<\/strong> Temiz bir Ubuntu 22.04 kurulumu yap\u0131lm\u0131\u015f bir sunucuya eri\u015fiminiz olmal\u0131. Bir VPS (Virtual Private Server) veya bulut sunucu kullanabilirsiniz.<br \/>\n*   <strong>Sudo Yetkilerine Sahip Bir Kullan\u0131c\u0131:<\/strong> Root olmayan, ancak <code>sudo<\/code> komutunu kullanarak y\u00fckseltilmi\u015f ayr\u0131cal\u0131klarla komut \u00e7al\u0131\u015ft\u0131rabilen bir kullan\u0131c\u0131 hesab\u0131n\u0131z olmal\u0131. G\u00fcvenlik nedenleriyle root kullan\u0131c\u0131s\u0131 olarak \u00e7al\u0131\u015fmaktan ka\u00e7\u0131n\u0131lmas\u0131 \u00f6nerilir.<br \/>\n*   <strong>Temel Linux Komut Bilgisi:<\/strong> Komut sat\u0131r\u0131nda dosya olu\u015fturma, d\u00fczenleme ve dizinlerde gezinme gibi temel i\u015flemlere a\u015fina olmal\u0131s\u0131n\u0131z.<br \/>\n*   <strong>Python 3 ve Pip:<\/strong> Ubuntu 22.04 genellikle Python 3 ile birlikte gelir. Pip, Python paket y\u00f6neticisidir ve sanal ortamlar olu\u015fturmak ve paketleri y\u00fcklemek i\u00e7in gereklidir.<\/p>\n<p>\u0130lk ad\u0131m olarak, sunucunuzdaki paket listesini g\u00fcncelleyelim ve y\u00fckseltmeleri yapal\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo apt update\nsudo apt upgrade -y<\/code><\/pre>\n<h3>Flask Uygulamas\u0131n\u0131 Haz\u0131rlama<\/h3>\n<p>Flask uygulaman\u0131z\u0131 sunucuya da\u011f\u0131tmadan \u00f6nce, uygulaman\u0131n kendisini ve gerekli ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 haz\u0131rlamam\u0131z gerekiyor. Uygulama dosyalar\u0131n\u0131z\u0131 sunucunuza aktarmak i\u00e7in <code>scp<\/code> veya <code>git<\/code> gibi y\u00f6ntemleri kullanabilirsiniz. Bu rehberde, basit bir Flask uygulamas\u0131 olu\u015fturup onu da\u011f\u0131taca\u011f\u0131z. Uygulama dosyalar\u0131n\u0131z\u0131 genellikle <code>\/var\/www\/<\/code> dizini alt\u0131nda bir alt dizine yerle\u015ftirmek iyi bir uygulamad\u0131r. \u00d6rne\u011fin, <code>\/var\/www\/my_flask_app<\/code>.<\/p>\n<pre><code class=\"language-bash\">sudo mkdir -p \/var\/www\/my_flask_app\nsudo chown -R $USER:$USER \/var\/www\/my_flask_app # Kullan\u0131c\u0131n\u0131za sahiplik verin\ncd \/var\/www\/my_flask_app<\/code><\/pre>\n<h4>Sanal Ortam Olu\u015fturma<\/h4>\n<p>Python projeleri i\u00e7in sanal ortamlar kullanmak, ba\u011f\u0131ml\u0131l\u0131k \u00e7ak\u0131\u015fmalar\u0131n\u0131 \u00f6nlemek ve proje ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 izole etmek i\u00e7in kritik \u00f6neme sahiptir.<\/p>\n<pre><code class=\"language-bash\">python3 -m venv venv\nsource venv\/bin\/activate<\/code><\/pre>\n<p>Bu komutlar, <code>venv<\/code> ad\u0131nda bir sanal ortam olu\u015fturur ve onu etkinle\u015ftirir. Komut sat\u0131r\u0131n\u0131z\u0131n ba\u015f\u0131nda <code>(venv)<\/code> ifadesini g\u00f6rmelisiniz.<\/p>\n<h4>Flask Uygulama Kodu<\/h4>\n<p>\u015eimdi basit bir Flask uygulamas\u0131 olu\u015ftural\u0131m. <code>app.py<\/code> ad\u0131nda bir dosya olu\u015fturun:<\/p>\n<pre><code class=\"language-bash\">nano app.py<\/code><\/pre>\n<p>Dosyan\u0131n i\u00e7ine a\u015fa\u011f\u0131daki kodu yap\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-python\">from flask import Flask\n\napp = Flask(__name__)\n\n@app.route('\/')\ndef hello_world():\n    return 'Hello, Flask! This is a uWSGI + Nginx deployment on Ubuntu 22.04.'\n\n@app.route('\/test')\ndef test_route():\n    return 'This is a test route.'\n\nif __name__ == '__main__':\n    app.run(debug=True)<\/code><\/pre>\n<p>Kaydedip kapat\u0131n (<code>Ctrl+O<\/code>, <code>Enter<\/code>, <code>Ctrl+X<\/code>).<\/p>\n<h4>Gereksinimleri Y\u00fckleme<\/h4>\n<p>Uygulaman\u0131z\u0131n ihtiya\u00e7 duydu\u011fu Python paketlerini <code>requirements.txt<\/code> dosyas\u0131na eklemelisiniz.<\/p>\n<pre><code class=\"language-bash\">nano requirements.txt<\/code><\/pre>\n<p>\u0130\u00e7ine sadece <code>Flask<\/code> yaz\u0131n:<\/p>\n<pre><code class=\"language-\">Flask<\/code><\/pre>\n<p>Kaydedip kapat\u0131n. \u015eimdi bu gereksinimleri sanal ortam\u0131n\u0131za y\u00fckleyin:<\/p>\n<pre><code class=\"language-bash\">pip install -r requirements.txt<\/code><\/pre>\n<h4>Uygulamay\u0131 Test Etme<\/h4>\n<p>Flask uygulaman\u0131z\u0131n d\u00fczg\u00fcn \u00e7al\u0131\u015f\u0131p \u00e7al\u0131\u015fmad\u0131\u011f\u0131n\u0131 test etmek i\u00e7in geli\u015ftirme sunucusuyla \u00e7al\u0131\u015ft\u0131rabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">flask run --host=0.0.0.0<\/code><\/pre>\n<p>Bu komut, Flask uygulamas\u0131n\u0131 t\u00fcm a\u011f aray\u00fczlerinde dinlemeye ba\u015flat\u0131r (genellikle 5000 portunda). Sunucunuzun IP adresini biliyorsan\u0131z, web taray\u0131c\u0131n\u0131zdan <code>http:\/\/SUNUCU_IP_ADRESINIZ:5000<\/code> adresine giderek &#8220;Hello, Flask!&#8221; mesaj\u0131n\u0131 g\u00f6rmelisiniz. Test ettikten sonra, <code>Ctrl+C<\/code> ile geli\u015ftirme sunucusunu durdurun. Unutmay\u0131n, bu geli\u015ftirme sunucusu \u00fcretim i\u00e7in uygun de\u011fildir. Sanal ortam\u0131 devre d\u0131\u015f\u0131 b\u0131rakmak i\u00e7in <code>deactivate<\/code> komutunu kullanabilirsiniz, ancak \u015fimdilik etkin b\u0131rakabiliriz.<\/p>\n<h3>uWSGI Kurulumu ve Yap\u0131land\u0131rmas\u0131<\/h3>\n<p>uWSGI, Flask uygulamam\u0131z ile Nginx aras\u0131nda arac\u0131 g\u00f6revi g\u00f6recek olan uygulama sunucusudur.<\/p>\n<h4>uWSGI Kurulumu<\/h4>\n<p>Sanal ortam\u0131n\u0131z etkin durumdayken uWSGI&#8217;yi pip ile y\u00fckleyin:<\/p>\n<pre><code class=\"language-bash\">pip install uwsgi<\/code><\/pre>\n<p><code>apt<\/code> ile y\u00fcklemek yerine <code>pip<\/code> ile y\u00fcklemek, uWSGI&#8217;nin sanal ortam\u0131n\u0131z\u0131n Python yorumlay\u0131c\u0131s\u0131n\u0131 kullanmas\u0131n\u0131 sa\u011flar ve sistem genelindeki Python paketleriyle \u00e7ak\u0131\u015fmalar\u0131 \u00f6nler.<\/p>\n<h4>uWSGI Yap\u0131land\u0131rma Dosyas\u0131 Olu\u015fturma<\/h4>\n<p>uWSGI&#8217;yi komut sat\u0131r\u0131 arg\u00fcmanlar\u0131yla \u00e7al\u0131\u015ft\u0131rmak yerine, bir yap\u0131land\u0131rma dosyas\u0131 kullanmak daha iyidir. Bu, ayarlar\u0131 daha d\u00fczenli tutar ve Systemd servisi ile entegrasyonu kolayla\u015ft\u0131r\u0131r. Uygulama dizininizde <code>uwsgi.ini<\/code> ad\u0131nda bir dosya olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-bash\">nano uwsgi.ini<\/code><\/pre>\n<p>A\u015fa\u011f\u0131daki i\u00e7eri\u011fi ekleyin:<\/p>\n<pre><code class=\"language-ini\">[uwsgi]\nmodule = app:app\nmaster = true\nprocesses = 5\nsocket = \/tmp\/my_flask_app.sock\nchmod-socket = 660\nvacuum = true\ndie-on-term = true\nlogto = \/var\/log\/uwsgi\/my_flask_app.log\nchdir = \/var\/www\/my_flask_app\nvirtualenv = \/var\/www\/my_flask_app\/venv<\/code><\/pre>\n<p>Bu ayarlar\u0131n anlamlar\u0131:<br \/>\n*   <code>module = app:app<\/code>: <code>app.py<\/code> dosyas\u0131ndaki <code>app<\/code> adl\u0131 Flask uygulamas\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rmas\u0131n\u0131 s\u00f6yler. E\u011fer Flask uygulaman\u0131z ba\u015fka bir dosyada veya farkl\u0131 bir de\u011fi\u015fken ad\u0131nda ise, buna g\u00f6re ayarlamal\u0131s\u0131n\u0131z (\u00f6rne\u011fin <code>wsgi:application<\/code> veya <code>my_app:app<\/code>).<br \/>\n*   <code>master = true<\/code>: Bir ana uWSGI s\u00fcreci ba\u015flat\u0131r.<br \/>\n*   <code>processes = 5<\/code>: 5 adet i\u015f\u00e7i (worker) s\u00fcreci ba\u015flat\u0131r. Bu, uygulaman\u0131z\u0131n ayn\u0131 anda birden fazla iste\u011fi i\u015fleyebilmesini sa\u011flar. \u0130htiya\u00e7lar\u0131n\u0131za g\u00f6re bu say\u0131y\u0131 ayarlayabilirsiniz.<br \/>\n*   <code>socket = \/tmp\/my_flask_app.sock<\/code>: Nginx&#8217;in uygulaman\u0131zla ileti\u015fim kurmak i\u00e7in kullanaca\u011f\u0131 Unix soketinin yolunu belirtir. Unix soketleri, TCP portlar\u0131na g\u00f6re daha h\u0131zl\u0131d\u0131r \u00e7\u00fcnk\u00fc a\u011f y\u0131\u011f\u0131n\u0131 \u00fczerinden ge\u00e7mezler.<br \/>\n*   <code>chmod-socket = 660<\/code>: Soket dosyas\u0131n\u0131n izinlerini ayarlar. Bu, Nginx&#8217;in sokete eri\u015febilmesini sa\u011flar. <code>www-data<\/code> grubunun (Nginx&#8217;in varsay\u0131lan kullan\u0131c\u0131s\u0131) okuma\/yazma iznine sahip olmas\u0131n\u0131 sa\u011flar.<br \/>\n*   <code>vacuum = true<\/code>: uWSGI durduruldu\u011funda soket dosyas\u0131n\u0131 ve PID dosyas\u0131n\u0131 otomatik olarak temizler.<br \/>\n*   <code>die-on-term = true<\/code>: uWSGI&#8217;nin ana s\u00fcrecinin sonland\u0131r\u0131lmas\u0131 durumunda t\u00fcm i\u015f\u00e7i s\u00fcre\u00e7lerini de sonland\u0131r\u0131r.<br \/>\n*   <code>logto = \/var\/log\/uwsgi\/my_flask_app.log<\/code>: uWSGI g\u00fcnl\u00fcklerini bu dosyaya yazar. Bu dosyan\u0131n olu\u015fturulmas\u0131 ve uWSGI kullan\u0131c\u0131s\u0131n\u0131n yazma iznine sahip olmas\u0131 gerekecektir.<br \/>\n*   <code>chdir = \/var\/www\/my_flask_app<\/code>: uWSGI&#8217;nin uygulaman\u0131z\u0131n k\u00f6k dizininde \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar.<br \/>\n*   <code>virtualenv = \/var\/www\/my_flask_app\/venv<\/code>: Sanal ortam\u0131n\u0131z\u0131n yolunu belirtir.<\/p>\n<p>Kaydedip kapat\u0131n. G\u00fcnl\u00fck dosyas\u0131 i\u00e7in dizin olu\u015ftural\u0131m ve izinleri ayarlayal\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo mkdir -p \/var\/log\/uwsgi\nsudo chown -R $USER:www-data \/var\/log\/uwsgi # Kullan\u0131c\u0131n\u0131z ve Nginx grubuna yazma izni verin<\/code><\/pre>\n<h4>uWSGI Test Etme<\/h4>\n<p>uWSGI yap\u0131land\u0131rmas\u0131n\u0131n d\u00fczg\u00fcn \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olmak i\u00e7in elle \u00e7al\u0131\u015ft\u0131rabiliriz:<\/p>\n<pre><code class=\"language-bash\">uwsgi --ini uwsgi.ini<\/code><\/pre>\n<p>E\u011fer herhangi bir hata mesaj\u0131 almazsan\u0131z ve komut sat\u0131r\u0131 donuk kal\u0131rsa, uWSGI ba\u015far\u0131yla \u00e7al\u0131\u015f\u0131yor demektir. Yeni bir terminal a\u00e7\u0131p veya mevcut terminali arka plana at\u0131p soket dosyas\u0131n\u0131n olu\u015fturulup olu\u015fturulmad\u0131\u011f\u0131n\u0131 kontrol edebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">ls -l \/tmp\/my_flask_app.sock<\/code><\/pre>\n<p>E\u011fer dosya listeleniyorsa, uWSGI soketi ba\u015far\u0131yla olu\u015fturmu\u015ftur. <code>Ctrl+C<\/code> ile uWSGI&#8217;yi durdurun.<\/p>\n<h4>uWSGI i\u00e7in Systemd Servisi Olu\u015fturma<\/h4>\n<p>uWSGI&#8217;yi manuel olarak \u00e7al\u0131\u015ft\u0131rmak yerine, sunucu yeniden ba\u015flat\u0131ld\u0131\u011f\u0131nda otomatik olarak ba\u015flamas\u0131n\u0131 ve arka planda \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flamak i\u00e7in bir Systemd servisi olu\u015ftural\u0131m.<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/systemd\/system\/my_flask_app.service<\/code><\/pre>\n<p>A\u015fa\u011f\u0131daki i\u00e7eri\u011fi yap\u0131\u015ft\u0131r\u0131n. <code>User<\/code> ve <code>Group<\/code> de\u011ferlerini sunucunuzdaki uygun kullan\u0131c\u0131 ve grupla de\u011fi\u015ftirmeyi unutmay\u0131n. Genellikle <code>www-data<\/code> grubu Nginx ile uyumludur.<\/p>\n<pre><code class=\"language-ini\">[Unit]\nDescription=uWSGI instance to serve my_flask_app\nAfter=network.target\n\n[Service]\nUser=your_user # Kendi kullan\u0131c\u0131 ad\u0131n\u0131zla de\u011fi\u015ftirin (\u00f6rn. ubuntu, admin)\nGroup=www-data\nWorkingDirectory=\/var\/www\/my_flask_app\nEnvironment=\"PATH=\/var\/www\/my_flask_app\/venv\/bin\"\nExecStart=\/var\/www\/my_flask_app\/venv\/bin\/uwsgi --ini \/var\/www\/my_flask_app\/uwsgi.ini\nRestart=always\nKillSignal=SIGQUIT\nType=notify\nStandardError=syslog\nNotifyAccess=all\n\n[Install]\nWantedBy=multi-user.target<\/code><\/pre>\n<p>Bu dosya, Systemd&#8217;ye uWSGI uygulaman\u0131z\u0131 nas\u0131l ba\u015flataca\u011f\u0131n\u0131 ve y\u00f6netece\u011fini s\u00f6yler:<br \/>\n*   <code>Description<\/code>: Servisin k\u0131sa bir a\u00e7\u0131klamas\u0131.<br \/>\n*   <code>After=network.target<\/code>: A\u011f servisleri ba\u015flat\u0131ld\u0131ktan sonra bu servisin ba\u015flamas\u0131n\u0131 sa\u011flar.<br \/>\n*   <code>User<\/code> ve <code>Group<\/code>: uWSGI s\u00fcrecinin hangi kullan\u0131c\u0131 ve grup alt\u0131nda \u00e7al\u0131\u015faca\u011f\u0131n\u0131 belirtir. Bu, g\u00fcvenlik i\u00e7in \u00f6nemlidir. Soket dosyas\u0131n\u0131n bu kullan\u0131c\u0131 ve grup taraf\u0131ndan eri\u015filebilir oldu\u011fundan emin olun.<br \/>\n*   <code>WorkingDirectory<\/code>: Uygulaman\u0131z\u0131n k\u00f6k dizinini belirtir.<br \/>\n*   <code>Environment=\"PATH=...\"<\/code>: Sanal ortam\u0131n\u0131z\u0131n <code>bin<\/code> dizinini PATH&#8217;e ekler, b\u00f6ylece <code>uwsgi<\/code> komutu sanal ortamdan do\u011fru bir \u015fekilde \u00e7a\u011fr\u0131l\u0131r.<br \/>\n*   <code>ExecStart<\/code>: uWSGI&#8217;yi yap\u0131land\u0131rma dosyas\u0131yla ba\u015flatan komut.<br \/>\n*   <code>Restart=always<\/code>: Servis ba\u015far\u0131s\u0131z olursa veya beklenmedik bir \u015fekilde durursa otomatik olarak yeniden ba\u015flat\u0131lmas\u0131n\u0131 sa\u011flar.<br \/>\n*   <code>KillSignal=SIGQUIT<\/code>: uWSGI&#8217;nin zarif bir \u015fekilde kapanmas\u0131n\u0131 sa\u011flayan sinyal.<br \/>\n*   <code>Type=notify<\/code>: uWSGI&#8217;nin Systemd&#8217;ye ba\u015flat\u0131ld\u0131\u011f\u0131n\u0131 bildirmesini sa\u011flar.<br \/>\n*   <code>StandardError=syslog<\/code>: Hatalar\u0131n syslog&#8217;a kaydedilmesini sa\u011flar.<br \/>\n*   <code>WantedBy=multi-user.target<\/code>: Sunucu a\u00e7\u0131ld\u0131\u011f\u0131nda bu servisin otomatik olarak ba\u015flat\u0131lmas\u0131n\u0131 sa\u011flar.<\/p>\n<p>Kaydedip kapat\u0131n. \u015eimdi Systemd&#8217;yi yeni servisi yeniden y\u00fcklemesi i\u00e7in bilgilendirin, servisi ba\u015flat\u0131n ve otomatik ba\u015flamas\u0131n\u0131 sa\u011flay\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl daemon-reload\nsudo systemctl start my_flask_app\nsudo systemctl enable my_flask_app<\/code><\/pre>\n<p>Servisin durumunu kontrol ederek d\u00fczg\u00fcn \u00e7al\u0131\u015f\u0131p \u00e7al\u0131\u015fmad\u0131\u011f\u0131n\u0131 do\u011frulay\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl status my_flask_app<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131da <code>active (running)<\/code> ibaresini g\u00f6rmelisiniz.<\/p>\n<h3>Nginx Kurulumu ve Yap\u0131land\u0131rmas\u0131<\/h3>\n<p>Nginx, istemcilerden gelen istekleri alacak, statik dosyalar\u0131 sunacak ve dinamik istekleri uWSGI&#8217;ye y\u00f6nlendirecek olan ters proxy sunucusudur.<\/p>\n<h4>Nginx Kurulumu<\/h4>\n<p>Nginx&#8217;i Ubuntu paket y\u00f6neticisi arac\u0131l\u0131\u011f\u0131yla kolayca y\u00fckleyebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo apt install nginx -y<\/code><\/pre>\n<p>Kurulumdan sonra Nginx servisi otomatik olarak ba\u015flayacakt\u0131r. Durumunu kontrol edebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl status nginx<\/code><\/pre>\n<p><code>active (running)<\/code> oldu\u011fundan emin olun.<\/p>\n<h4>Nginx Yap\u0131land\u0131rma Dosyas\u0131 Olu\u015fturma<\/h4>\n<p>\u015eimdi Nginx&#8217;i Flask uygulaman\u0131za gelen istekleri uWSGI&#8217;ye y\u00f6nlendirecek \u015fekilde yap\u0131land\u0131ral\u0131m. Nginx yap\u0131land\u0131rma dosyalar\u0131 <code>\/etc\/nginx\/sites-available\/<\/code> dizininde bulunur.<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/nginx\/sites-available\/my_flask_app<\/code><\/pre>\n<p>A\u015fa\u011f\u0131daki i\u00e7eri\u011fi yap\u0131\u015ft\u0131r\u0131n. <code>server_name<\/code> k\u0131sm\u0131n\u0131 sunucunuzun IP adresi veya alan ad\u0131n\u0131zla de\u011fi\u015ftirmeyi unutmay\u0131n.<\/p>\n<pre><code class=\"language-nginx\">server {\n    listen 80;\n    server_name your_domain.com www.your_domain.com your_server_ip; # Kendi alan ad\u0131n\u0131z veya IP adresinizle de\u011fi\u015ftirin\n\n    location \/ {\n        include uwsgi_params;\n        uwsgi_pass unix:\/\/\/tmp\/my_flask_app.sock; # uWSGI yap\u0131land\u0131rmas\u0131ndaki soket yoluyla e\u015fle\u015fmeli\n    }\n\n    # Statik dosyalar\u0131n\u0131z\u0131 do\u011frudan Nginx \u00fczerinden sunmak i\u00e7in a\u015fa\u011f\u0131daki b\u00f6l\u00fcm\u00fc etkinle\u015ftirebilirsiniz.\n    # \u00d6rne\u011fin, Flask uygulaman\u0131z\u0131n 'static' klas\u00f6r\u00fcndeki dosyalar.\n    # location \/static {\n    #     alias \/var\/www\/my_flask_app\/static;\n    # }\n\n    error_log \/var\/log\/nginx\/my_flask_app_error.log;\n    access_log \/var\/log\/nginx\/my_flask_app_access.log;\n}<\/code><\/pre>\n<p>Bu ayarlar\u0131n anlamlar\u0131:<br \/>\n*   <code>listen 80<\/code>: Nginx&#8217;in 80 numaral\u0131 HTTP portunu dinlemesini sa\u011flar.<br \/>\n*   <code>server_name<\/code>: Nginx&#8217;in hangi alan adlar\u0131 veya IP adresleri i\u00e7in bu yap\u0131land\u0131rmay\u0131 kullanaca\u011f\u0131n\u0131 belirtir.<br \/>\n*   <code>location \/<\/code>: T\u00fcm gelen istekleri bu blo\u011fa y\u00f6nlendirir.<br \/>\n*   <code>include uwsgi_params<\/code>: uWSGI ile ileti\u015fim kurmak i\u00e7in gerekli olan standart parametreleri i\u00e7erir.<br \/>\n*   <code>uwsgi_pass unix:\/\/\/tmp\/my_flask_app.sock<\/code>: \u0130stekleri uWSGI&#8217;nin dinledi\u011fi Unix soketine y\u00f6nlendirir. Bu yol, uWSGI yap\u0131land\u0131rma dosyan\u0131zdaki <code>socket<\/code> de\u011feriyle ayn\u0131 olmal\u0131d\u0131r.<br \/>\n*   <code>location \/static<\/code>: E\u011fer uygulaman\u0131z\u0131n statik dosyalar\u0131 varsa (CSS, JS, resimler), Nginx&#8217;in bunlar\u0131 do\u011frudan sunmas\u0131 i\u00e7in bu blo\u011fu kullanabilirsiniz. Bu, uWSGI&#8217;nin bu t\u00fcr isteklerle u\u011fra\u015fmas\u0131n\u0131 engelleyerek performans\u0131 art\u0131r\u0131r. <code>alias<\/code> yolu, statik dosyalar\u0131n\u0131z\u0131n sunucudaki fiziksel konumunu i\u015faret etmelidir.<br \/>\n*   <code>error_log<\/code> ve <code>access_log<\/code>: Nginx&#8217;in bu siteye ait hata ve eri\u015fim g\u00fcnl\u00fcklerini nereye yazaca\u011f\u0131n\u0131 belirtir.<\/p>\n<p>Kaydedip kapat\u0131n.<\/p>\n<h4>Nginx Yap\u0131land\u0131rmas\u0131n\u0131 Etkinle\u015ftirme<\/h4>\n<p>Olu\u015fturdu\u011fumuz yap\u0131land\u0131rma dosyas\u0131n\u0131 etkinle\u015ftirmek i\u00e7in, <code>\/etc\/nginx\/sites-enabled\/<\/code> dizinine sembolik bir ba\u011flant\u0131 (symlink) olu\u015fturmal\u0131y\u0131z:<\/p>\n<pre><code class=\"language-bash\">sudo ln -s \/etc\/nginx\/sites-available\/my_flask_app \/etc\/nginx\/sites-enabled<\/code><\/pre>\n<p>Varsay\u0131lan Nginx yap\u0131land\u0131rmas\u0131n\u0131 devre d\u0131\u015f\u0131 b\u0131rakmak iyi bir uygulamad\u0131r, b\u00f6ylece \u00e7ak\u0131\u015fmalar \u00f6nlenir:<\/p>\n<pre><code class=\"language-bash\">sudo rm \/etc\/nginx\/sites-enabled\/default<\/code><\/pre>\n<h4>Nginx&#8217;i Test Etme<\/h4>\n<p>Nginx yap\u0131land\u0131rma dosyas\u0131nda herhangi bir s\u00f6zdizimi hatas\u0131 olup olmad\u0131\u011f\u0131n\u0131 kontrol etmek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">sudo nginx -t<\/code><\/pre>\n<p>E\u011fer <code>test is successful<\/code> mesaj\u0131n\u0131 g\u00f6r\u00fcrseniz, yap\u0131land\u0131rman\u0131z do\u011fru demektir. \u015eimdi Nginx&#8217;i yeniden ba\u015flatarak yeni yap\u0131land\u0131rmay\u0131 uygulay\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl restart nginx<\/code><\/pre>\n<h3>G\u00fcvenlik Duvar\u0131 Yap\u0131land\u0131rmas\u0131<\/h3>\n<p>Sunucunuzda bir g\u00fcvenlik duvar\u0131 (firewall) etkinse, Nginx&#8217;in gelen HTTP (80) ve HTTPS (443) isteklerini alabilmesi i\u00e7in bu portlara izin vermeniz gerekir. Ubuntu&#8217;da UFW (Uncomplicated Firewall) yayg\u0131n olarak kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-bash\">sudo ufw allow 'Nginx HTTP' # HTTP (80) portuna izin verir\n<h2>sudo ufw allow 'Nginx HTTPS' # E\u011fer SSL\/TLS kuracaksan\u0131z HTTPS (443) portuna da izin verin<\/h2>\nsudo ufw enable # G\u00fcvenlik duvar\u0131n\u0131 etkinle\u015ftirir (e\u011fer daha \u00f6nce etkin de\u011filse)\nsudo ufw status # G\u00fcvenlik duvar\u0131 durumunu kontrol edin<\/code><\/pre>\n<p>\u015eimdi web taray\u0131c\u0131n\u0131zdan sunucunuzun IP adresine veya alan ad\u0131na giderek Flask uygulaman\u0131z\u0131n \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 do\u011frulayabilirsiniz. <code>http:\/\/SUNUCU_IP_ADRESINIZ<\/code> veya <code>http:\/\/alanadiniz.com<\/code> adresine gidin. &#8220;Hello, Flask! This is a uWSGI + Nginx deployment on Ubuntu 22.04.&#8221; mesaj\u0131n\u0131 g\u00f6rmelisiniz.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Bu rehberde, bir Flask uygulamas\u0131n\u0131 Ubuntu 22.04 sunucusu \u00fczerinde uWSGI ve Nginx kullanarak nas\u0131l da\u011f\u0131taca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m \u00f6\u011frendiniz. Flask uygulaman\u0131z\u0131 bir sanal ortamda haz\u0131rlad\u0131k, uWSGI&#8217;yi yap\u0131land\u0131rarak Flask ile Nginx aras\u0131nda bir k\u00f6pr\u00fc olu\u015fturduk ve Nginx&#8217;i ters proxy olarak ayarlayarak gelen istekleri uWSGI&#8217;ye y\u00f6nlendirdik. Son olarak, g\u00fcvenlik duvar\u0131 ayarlar\u0131n\u0131 yaparak uygulaman\u0131z\u0131n internetten eri\u015filebilir olmas\u0131n\u0131 sa\u011flad\u0131k.<\/p>\n<p>Bu kurulum, Flask uygulamalar\u0131n\u0131z i\u00e7in sa\u011flam, g\u00fcvenli ve performansl\u0131 bir \u00fcretim ortam\u0131 sa\u011flar. Nginx&#8217;in statik dosya sunma, y\u00fck dengeleme ve SSL\/TLS sonland\u0131rma yetenekleri, uygulaman\u0131z\u0131n performans\u0131n\u0131 ve g\u00fcvenli\u011fini art\u0131r\u0131rken, uWSGI&#8217;nin \u00e7oklu i\u015flem yetenekleri uygulaman\u0131z\u0131n \u00f6l\u00e7eklenebilirli\u011fini sa\u011flar.<\/p>\n<h3>Ek Bilgiler ve Sonraki Ad\u0131mlar<\/h3>\n<p>Uygulaman\u0131z\u0131 daha da geli\u015ftirmek ve \u00fcretim ortam\u0131na uygun hale getirmek i\u00e7in a\u015fa\u011f\u0131daki ad\u0131mlar\u0131 d\u00fc\u015f\u00fcnebilirsiniz:<\/p>\n<h4>SSL\/TLS (HTTPS) ile G\u00fcvenlik<\/h4>\n<p>Web uygulaman\u0131z\u0131n g\u00fcvenli\u011fini art\u0131rmak i\u00e7in HTTPS kullanmak kritik \u00f6neme sahiptir. Let&#8217;s Encrypt ve Certbot, \u00fccretsiz SSL\/TLS sertifikalar\u0131 almak ve Nginx ile otomatik olarak yap\u0131land\u0131rmak i\u00e7in harika bir yoldur.<\/p>\n<pre><code class=\"language-bash\">sudo apt install certbot python3-certbot-nginx -y\nsudo certbot --nginx -d your_domain.com -d www.your_domain.com<\/code><\/pre>\n<p>Bu komutlar, Certbot&#8217;u y\u00fckler ve Nginx yap\u0131land\u0131rman\u0131z\u0131 otomatik olarak HTTPS&#8217;i kullanacak \u015fekilde g\u00fcnceller.<\/p>\n<h4>Statik Dosyalar ve Medya Dosyalar\u0131<\/h4>\n<p>E\u011fer Flask uygulaman\u0131z\u0131n statik dosyalar\u0131 (CSS, JS, resimler) veya kullan\u0131c\u0131 taraf\u0131ndan y\u00fcklenen medya dosyalar\u0131 varsa, Nginx&#8217;in bunlar\u0131 do\u011frudan sunmas\u0131n\u0131 sa\u011flamak en verimli yoldur. Yukar\u0131daki Nginx yap\u0131land\u0131rmas\u0131nda <code>location \/static<\/code> blo\u011fu i\u00e7in bir \u00f6rnek verilmi\u015ftir. Uygulaman\u0131z\u0131n <code>static<\/code> klas\u00f6r\u00fcn\u00fcn yan\u0131 s\u0131ra, kullan\u0131c\u0131lar\u0131n y\u00fckledi\u011fi dosyalar\u0131 depolad\u0131\u011f\u0131n\u0131z ayr\u0131 bir <code>media<\/code> klas\u00f6r\u00fc varsa, benzer bir <code>location \/media<\/code> blo\u011fu ekleyebilirsiniz:<\/p>\n<pre><code class=\"language-nginx\">location \/media {\n        alias \/var\/www\/my_flask_app\/media; # Medya dosyalar\u0131n\u0131z\u0131n yolu\n    }<\/code><\/pre>\n<p>Bu, Flask uygulaman\u0131z\u0131n bu t\u00fcr isteklerle u\u011fra\u015fmas\u0131n\u0131 engelleyerek uygulaman\u0131n daha h\u0131zl\u0131 yan\u0131t vermesini sa\u011flar.<\/p>\n<h4>Gunicorn Alternatifi<\/h4>\n<p>uWSGI pop\u00fcler bir WSGI sunucusu olsa da, Gunicorn (Green Unicorn) da yayg\u0131n olarak kullan\u0131lan ba\u015fka bir g\u00fc\u00e7l\u00fc alternatiftir. Kurulum ve yap\u0131land\u0131rma ad\u0131mlar\u0131 uWSGI&#8217;ye benzerdir ve Gunicorn da Systemd servisleri ile entegre edilebilir. Tercihiniz veya projenizin gereksinimleri do\u011frultusunda Gunicorn&#8217;u da de\u011ferlendirebilirsiniz.<\/p>\n<h4>Hata Ay\u0131klama ve G\u00fcnl\u00fckler<\/h4>\n<p>Herhangi bir sorunla kar\u015f\u0131la\u015ft\u0131\u011f\u0131n\u0131zda, a\u015fa\u011f\u0131daki g\u00fcnl\u00fck dosyalar\u0131n\u0131 kontrol etmek sorun giderme i\u00e7in \u00e7ok \u00f6nemlidir:<br \/>\n*   <strong>uWSGI G\u00fcnl\u00fckleri:<\/strong> <code>\/var\/log\/uwsgi\/my_flask_app.log<\/code><br \/>\n*   <strong>Systemd Servis G\u00fcnl\u00fckleri:<\/strong> <code>sudo journalctl -u my_flask_app.service<\/code><br \/>\n*   <strong>Nginx Hata G\u00fcnl\u00fckleri:<\/strong> <code>\/var\/log\/nginx\/my_flask_app_error.log<\/code><br \/>\n*   <strong>Nginx Eri\u015fim G\u00fcnl\u00fckleri:<\/strong> <code>\/var\/log\/nginx\/my_flask_app_access.log<\/code><br \/>\n*   <strong>Nginx Genel Hata G\u00fcnl\u00fckleri:<\/strong> <code>\/var\/log\/nginx\/error.log<\/code><\/p>\n<h4>Performans Optimizasyonlar\u0131<\/h4>\n<p><em>   <strong>uWSGI \u0130\u015f\u00e7i Say\u0131s\u0131:<\/strong> <code>uwsgi.ini<\/code> dosyas\u0131ndaki <code>processes<\/code> de\u011ferini sunucunuzun CPU \u00e7ekirde\u011fi say\u0131s\u0131na g\u00f6re ayarlay\u0131n. Genellikle (CPU \u00e7ekirde\u011fi say\u0131s\u0131 <\/em> 2) + 1 gibi bir form\u00fcl \u00f6nerilir, ancak en iyi performans i\u00e7in test yapman\u0131z gerekebilir.<br \/>\n*   <strong>Nginx Buffer Boyutlar\u0131:<\/strong> Nginx yap\u0131land\u0131rmas\u0131na <code>client_max_body_size<\/code>, <code>client_body_buffer_size<\/code>, <code>proxy_buffers<\/code>, <code>proxy_buffer_size<\/code> gibi direktifler ekleyerek b\u00fcy\u00fck istekler veya yan\u0131tlar i\u00e7in performans\u0131 optimize edebilirsiniz.<br \/>\n*   <strong>\u00d6nbellekleme:<\/strong> Nginx&#8217;i statik dosyalar i\u00e7in \u00f6nbellekleme yapacak \u015fekilde yap\u0131land\u0131rarak tekrar eden isteklerde performans\u0131 art\u0131rabilirsiniz.<\/p>\n<p>Bu ad\u0131mlar, Flask uygulaman\u0131z\u0131 \u00fcretim ortam\u0131nda daha da g\u00fc\u00e7lendirecek ve daha iyi bir kullan\u0131c\u0131 deneyimi sunman\u0131z\u0131 sa\u011flayacakt\u0131r. Ba\u015far\u0131l\u0131 da\u011f\u0131t\u0131mlar dileriz!<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Flask Uygulamalar\u0131n\u0131 uWSGI ve Nginx ile Ubuntu 22.04 \u00dczerinde Da\u011f\u0131tma\nGiri\u015f\nWeb uygulamalar\u0131n\u0131n geli\u015ftirilmesi g\u00fcn\u00fcm\u00fczde olduk\u00e7a pop\u00fcle","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1468],"tags":[],"class_list":{"0":"post-33534","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-ubuntu","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Flask Uygulamalar\u0131n\u0131 uWSGI ve Nginx ile Ubuntu 22.04 \u00dczerinde Da\u011f\u0131tma - 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\/flask-uygulamalarini-uwsgi-ve-nginx-ile-ubuntu-22-04-uzerinde-dagitma\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Flask Uygulamalar\u0131n\u0131 uWSGI ve Nginx ile Ubuntu 22.04 \u00dczerinde Da\u011f\u0131tma\" \/>\n<meta property=\"og:description\" content=\"Flask Uygulamalar\u0131n\u0131 uWSGI ve Nginx ile Ubuntu 22.04 \u00dczerinde Da\u011f\u0131tma Giri\u015f Web uygulamalar\u0131n\u0131n geli\u015ftirilmesi g\u00fcn\u00fcm\u00fczde olduk\u00e7a pop\u00fcle\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/flask-uygulamalarini-uwsgi-ve-nginx-ile-ubuntu-22-04-uzerinde-dagitma\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-04T00:40:56+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\/flask-uygulamalarini-uwsgi-ve-nginx-ile-ubuntu-22-04-uzerinde-dagitma\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/flask-uygulamalarini-uwsgi-ve-nginx-ile-ubuntu-22-04-uzerinde-dagitma\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Flask Uygulamalar\u0131n\u0131 uWSGI ve Nginx ile Ubuntu 22.04 \u00dczerinde Da\u011f\u0131tma\",\"datePublished\":\"2025-11-04T00:40:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/flask-uygulamalarini-uwsgi-ve-nginx-ile-ubuntu-22-04-uzerinde-dagitma\/\"},\"wordCount\":2455,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Ubuntu\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/flask-uygulamalarini-uwsgi-ve-nginx-ile-ubuntu-22-04-uzerinde-dagitma\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/flask-uygulamalarini-uwsgi-ve-nginx-ile-ubuntu-22-04-uzerinde-dagitma\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/flask-uygulamalarini-uwsgi-ve-nginx-ile-ubuntu-22-04-uzerinde-dagitma\/\",\"name\":\"Flask Uygulamalar\u0131n\u0131 uWSGI ve Nginx ile Ubuntu 22.04 \u00dczerinde Da\u011f\u0131tma - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-11-04T00:40:56+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/flask-uygulamalarini-uwsgi-ve-nginx-ile-ubuntu-22-04-uzerinde-dagitma\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/flask-uygulamalarini-uwsgi-ve-nginx-ile-ubuntu-22-04-uzerinde-dagitma\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/flask-uygulamalarini-uwsgi-ve-nginx-ile-ubuntu-22-04-uzerinde-dagitma\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Flask Uygulamalar\u0131n\u0131 uWSGI ve Nginx ile Ubuntu 22.04 \u00dczerinde Da\u011f\u0131tma\"}]},{\"@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":"Flask Uygulamalar\u0131n\u0131 uWSGI ve Nginx ile Ubuntu 22.04 \u00dczerinde Da\u011f\u0131tma - 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\/flask-uygulamalarini-uwsgi-ve-nginx-ile-ubuntu-22-04-uzerinde-dagitma\/","og_locale":"tr_TR","og_type":"article","og_title":"Flask Uygulamalar\u0131n\u0131 uWSGI ve Nginx ile Ubuntu 22.04 \u00dczerinde Da\u011f\u0131tma","og_description":"Flask Uygulamalar\u0131n\u0131 uWSGI ve Nginx ile Ubuntu 22.04 \u00dczerinde Da\u011f\u0131tma Giri\u015f Web uygulamalar\u0131n\u0131n geli\u015ftirilmesi g\u00fcn\u00fcm\u00fczde olduk\u00e7a pop\u00fcle","og_url":"https:\/\/fatihsoysal.com\/blog\/flask-uygulamalarini-uwsgi-ve-nginx-ile-ubuntu-22-04-uzerinde-dagitma\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-11-04T00:40:56+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\/flask-uygulamalarini-uwsgi-ve-nginx-ile-ubuntu-22-04-uzerinde-dagitma\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/flask-uygulamalarini-uwsgi-ve-nginx-ile-ubuntu-22-04-uzerinde-dagitma\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Flask Uygulamalar\u0131n\u0131 uWSGI ve Nginx ile Ubuntu 22.04 \u00dczerinde Da\u011f\u0131tma","datePublished":"2025-11-04T00:40:56+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/flask-uygulamalarini-uwsgi-ve-nginx-ile-ubuntu-22-04-uzerinde-dagitma\/"},"wordCount":2455,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Ubuntu"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/flask-uygulamalarini-uwsgi-ve-nginx-ile-ubuntu-22-04-uzerinde-dagitma\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/flask-uygulamalarini-uwsgi-ve-nginx-ile-ubuntu-22-04-uzerinde-dagitma\/","url":"https:\/\/fatihsoysal.com\/blog\/flask-uygulamalarini-uwsgi-ve-nginx-ile-ubuntu-22-04-uzerinde-dagitma\/","name":"Flask Uygulamalar\u0131n\u0131 uWSGI ve Nginx ile Ubuntu 22.04 \u00dczerinde Da\u011f\u0131tma - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-11-04T00:40:56+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/flask-uygulamalarini-uwsgi-ve-nginx-ile-ubuntu-22-04-uzerinde-dagitma\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/flask-uygulamalarini-uwsgi-ve-nginx-ile-ubuntu-22-04-uzerinde-dagitma\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/flask-uygulamalarini-uwsgi-ve-nginx-ile-ubuntu-22-04-uzerinde-dagitma\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Flask Uygulamalar\u0131n\u0131 uWSGI ve Nginx ile Ubuntu 22.04 \u00dczerinde Da\u011f\u0131tma"}]},{"@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\/33534","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=33534"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/33534\/revisions"}],"predecessor-version":[{"id":33535,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/33534\/revisions\/33535"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=33534"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=33534"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=33534"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}