{"id":44503,"date":"2026-09-03T21:14:55","date_gmt":"2026-09-03T18:14:55","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/fastapi-uygulamalarini-gunicorn-ve-nginx-ile-ubuntu-24-04-uzerine-dagitma-rehberi\/"},"modified":"2026-09-03T21:15:18","modified_gmt":"2026-09-03T18:15:18","slug":"fastapi-uygulamalarini-gunicorn-ve-nginx-ile-ubuntu-24-04-uzerine-dagitma-rehberi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/fastapi-uygulamalarini-gunicorn-ve-nginx-ile-ubuntu-24-04-uzerine-dagitma-rehberi\/","title":{"rendered":"FastAPI Uygulamalar\u0131n\u0131 Gunicorn ve Nginx ile Ubuntu 24.04 \u00dczerine Da\u011f\u0131tma Rehberi"},"content":{"rendered":"<h2>FastAPI Uygulamalar\u0131n\u0131 Gunicorn ve Nginx ile Ubuntu 24.04 \u00dczerine Da\u011f\u0131tma Rehberi<\/h2>\n<p>Modern web uygulamalar\u0131 geli\u015ftirirken performans, g\u00fcvenlik ve \u00f6l\u00e7eklenebilirlik, projenin ba\u015far\u0131s\u0131 i\u00e7in kritik \u00f6neme sahiptir. \u00d6zellikle Python ekosisteminde, h\u0131zl\u0131 ve verimli API&#8217;ler olu\u015fturmak i\u00e7in FastAPI gibi framework&#8217;ler (yaz\u0131l\u0131m \u00e7er\u00e7eveleri) \u00f6ne \u00e7\u0131karken, bu uygulamalar\u0131 \u00fcretim ortam\u0131nda (production environment) g\u00fcvenli ve y\u00fcksek performansl\u0131 bir \u015fekilde \u00e7al\u0131\u015ft\u0131rmak, do\u011fru mimari se\u00e7imleriyle m\u00fcmk\u00fcnd\u00fcr. Bu makalede, FastAPI uygulaman\u0131z\u0131 Ubuntu 24.04 i\u015fletim sistemi \u00fczerinde Gunicorn uygulama sunucusu ve Nginx ters proxy (reverse proxy) kullanarak nas\u0131l da\u011f\u0131tabilece\u011finizi (deploy) ad\u0131m ad\u0131m inceleyece\u011fiz. Bu rehber sayesinde, uygulaman\u0131z\u0131n sadece \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flamakla kalmayacak, ayn\u0131 zamanda onu ger\u00e7ek d\u00fcnya senaryolar\u0131na uygun, sa\u011flam ve y\u00f6netilebilir bir yap\u0131ya kavu\u015fturacaks\u0131n\u0131z.<\/p>\n<h3>Neden FastAPI, Gunicorn ve Nginx \u00dc\u00e7l\u00fcs\u00fc Bu Kadar \u00d6nemli?<\/h3>\n<p>Bir web uygulamas\u0131n\u0131 ba\u015far\u0131l\u0131 bir \u015fekilde da\u011f\u0131tmak, sadece kodu bir sunucuya kopyalamaktan \u00e7ok daha fazlas\u0131n\u0131 gerektirir. Performans, g\u00fcvenlik ve y\u00f6netilebilirlik gibi unsurlar, uygulaman\u0131z\u0131n kullan\u0131c\u0131 deneyimini ve genel operasyonel verimlili\u011fini do\u011frudan etkiler. Bu ba\u011flamda, FastAPI, Gunicorn ve Nginx kombinasyonu, modern Python web servisleri i\u00e7in alt\u0131n standart olarak kabul edilen g\u00fc\u00e7l\u00fc bir \u00fc\u00e7l\u00fc olu\u015fturur. Her bir bile\u015fenin kendine \u00f6zg\u00fc bir rol\u00fc vard\u0131r ve birlikte \u00e7al\u0131\u015farak kusursuz bir da\u011f\u0131t\u0131m mimarisi sunarlar.<\/p>\n<p>FastAPI, Python tabanl\u0131, y\u00fcksek performansl\u0131 bir web framework&#8217;\u00fcd\u00fcr. \u00d6zellikle asenkron (asynchronous) i\u015flemleri desteklemesi, otomatik etkile\u015fimli API dok\u00fcmantasyonu (Swagger UI ve ReDoc) sa\u011flamas\u0131 ve Pydantic sayesinde veri do\u011frulama (data validation) yetenekleriyle geli\u015ftiriciler aras\u0131nda h\u0131zla pop\u00fclerlik kazanm\u0131\u015ft\u0131r. FastAPI, h\u0131zl\u0131 geli\u015ftirme s\u00fcre\u00e7leri ve g\u00fc\u00e7l\u00fc performans vaat ederken, tek ba\u015f\u0131na bir web sunucusu de\u011fildir; geli\u015ftirme s\u0131ras\u0131nda kullan\u0131lan Uvicorn gibi bir ASGI (Asynchronous Server Gateway Interface) sunucusu ile \u00e7al\u0131\u015f\u0131r. Ancak Uvicorn, genellikle tek bir i\u015flem (process) \u00fczerinde \u00e7al\u0131\u015ft\u0131\u011f\u0131 i\u00e7in \u00fcretim ortam\u0131ndaki y\u00fcksek trafik ve e\u015f zamanl\u0131 ba\u011flant\u0131lar\u0131 y\u00f6netme konusunda s\u0131n\u0131rl\u0131 kalabilir. \u0130\u015fte tam bu noktada Gunicorn devreye girer.<\/p>\n<p>Gunicorn (Green Unicorn), bir WSGI (Web Server Gateway Interface) ve ASGI uyumlu HTTP sunucusudur. Python web uygulamalar\u0131n\u0131 \u00fcretim ortam\u0131nda \u00e7al\u0131\u015ft\u0131rmak i\u00e7in tasarlanm\u0131\u015ft\u0131r. Gunicorn, birden fazla worker (i\u015f\u00e7i) s\u00fcreci olu\u015fturarak gelen istekleri bu s\u00fcre\u00e7lere da\u011f\u0131t\u0131r. Bu sayede, uygulaman\u0131z\u0131n e\u015f zamanl\u0131 ba\u011flant\u0131lar\u0131 daha verimli bir \u015fekilde y\u00f6netmesini ve daha y\u00fcksek bir i\u015flem hacmi (throughput) elde etmesini sa\u011flar. Gunicorn, uygulaman\u0131z\u0131n kararl\u0131l\u0131\u011f\u0131n\u0131 art\u0131r\u0131r ve kaynak kullan\u0131m\u0131n\u0131 optimize eder. Gunicorn&#8217;un as\u0131l g\u00f6revi, FastAPI uygulaman\u0131z\u0131n kodunu \u00e7al\u0131\u015ft\u0131rmak ve gelen HTTP isteklerini bu koda iletmektir. Ancak, Gunicorn do\u011frudan internetten gelen isteklere maruz kalmamal\u0131d\u0131r. Bunun yerine, bir ters proxy sunucusu taraf\u0131ndan korunmal\u0131 ve y\u00f6netilmelidir.<\/p>\n<p>Nginx ise, y\u00fcksek performansl\u0131, a\u00e7\u0131k kaynakl\u0131 bir web sunucusu, ters proxy ve y\u00fck dengeleyicidir (load balancer). Nginx&#8217;in temel g\u00f6revi, istemcilerden gelen t\u00fcm HTTP isteklerini kar\u015f\u0131lamak, bu istekleri uygun Gunicorn worker&#8217;lar\u0131na y\u00f6nlendirmek ve Gunicorn&#8217;dan gelen yan\u0131tlar\u0131 istemcilere geri g\u00f6ndermektir. Nginx, statik dosyalar\u0131 (resimler, CSS, JavaScript) do\u011frudan sunma konusunda son derece etkilidir ve bu, uygulaman\u0131z\u0131n genel performans\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131r\u0131r. Ayr\u0131ca, Nginx, SSL\/TLS \u015fifrelemesini (encryption) y\u00f6netmek, g\u00fcvenlik duvar\u0131 (firewall) g\u00f6revi g\u00f6rmek, istekleri \u00f6nbelle\u011fe almak (caching) ve birden fazla uygulama sunucusu aras\u0131nda y\u00fck dengeleme yapmak gibi kritik g\u00f6revleri \u00fcstlenir. Bu sayede, Gunicorn&#8217;un sadece uygulama mant\u0131\u011f\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rmaya odaklanmas\u0131n\u0131 sa\u011flarken, Nginx trafik y\u00f6netimi ve g\u00fcvenlik gibi a\u011f\u0131r y\u00fckleri \u00fcstlenir. Bu mimari, uygulaman\u0131z\u0131n hem h\u0131zl\u0131 hem de g\u00fcvenli olmas\u0131n\u0131 garanti eder. \u00d6rne\u011fin, bir e-ticaret sitesinde, Nginx binlerce e\u015f zamanl\u0131 ba\u011flant\u0131y\u0131 y\u00f6netirken, Gunicorn sadece sepet ve \u00f6deme i\u015flemlerini y\u00fcr\u00fcten FastAPI kodunu \u00e7al\u0131\u015ft\u0131r\u0131r. Nginx&#8217;in statik dosya sunma yetene\u011fi sayesinde, \u00fcr\u00fcn resimleri ve stil dosyalar\u0131 h\u0131zla y\u00fcklenir, bu da kullan\u0131c\u0131 deneyimini iyile\u015ftirir. \u00d6zetle, FastAPI uygulaman\u0131z\u0131n kalbini olu\u015ftururken, Gunicorn bu kalbin verimli bir \u015fekilde atmas\u0131n\u0131 sa\u011flar ve Nginx ise bu kalbi d\u0131\u015f d\u00fcnyadan koruyan ve trafi\u011fi d\u00fczenleyen bir kalkan g\u00f6revi g\u00f6r\u00fcr.<\/p>\n<h3>Ubuntu 24.04 \u00dczerinde Temel Ortam Kurulumu Nas\u0131l Yap\u0131l\u0131r?<\/h3>\n<p>FastAPI uygulaman\u0131z\u0131 da\u011f\u0131tmadan \u00f6nce, Ubuntu 24.04 sunucunuzu gerekli ara\u00e7larla donatman\u0131z gerekmektedir. Bu ad\u0131mlar, projeniz i\u00e7in temiz ve g\u00fcvenli bir \u00e7al\u0131\u015fma ortam\u0131 olu\u015fturman\u0131n ilk basamaklar\u0131d\u0131r. \u0130lk olarak, sistem paketlerini g\u00fcncelleyerek ba\u015flayal\u0131m. Bu, mevcut paketlerin en son s\u00fcr\u00fcmlerine sahip olman\u0131z\u0131 sa\u011flar ve olas\u0131 g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 kapat\u0131r. Terminalinizi a\u00e7\u0131n ve a\u015fa\u011f\u0131daki komutlar\u0131 \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<div class=\"code-container\">\n<pre><code>sudo apt update\nsudo apt upgrade -y<\/code><\/pre>\n<\/div>\n<p>Sisteminiz g\u00fcncellendikten sonra, Python&#8217;\u0131 ve sanal ortam (virtual environment) olu\u015fturmak i\u00e7in gerekli ara\u00e7lar\u0131 kurman\u0131z gerekiyor. Ubuntu 24.04 genellikle Python 3 ile birlikte gelir, ancak <code>python3-venv<\/code> paketini kurmak, projeniz i\u00e7in izole bir sanal ortam olu\u015fturman\u0131za olanak tan\u0131r. Sanal ortamlar, farkl\u0131 projeler i\u00e7in farkl\u0131 ba\u011f\u0131ml\u0131l\u0131k setlerini (dependency sets) y\u00f6netmek i\u00e7in kritik \u00f6neme sahiptir, b\u00f6ylece ba\u011f\u0131ml\u0131l\u0131k \u00e7ak\u0131\u015fmalar\u0131n\u0131 \u00f6nlersiniz.<\/p>\n<div class=\"code-container\">\n<pre><code>sudo apt install python3-pip python3-venv -y<\/code><\/pre>\n<\/div>\n<p>\u015eimdi projeniz i\u00e7in bir dizin (directory) olu\u015ftural\u0131m ve bu dizine ge\u00e7elim. Bu dizin, FastAPI uygulaman\u0131z\u0131n kodunu ve sanal ortam\u0131n\u0131 bar\u0131nd\u0131racak ana yer olacakt\u0131r. \u00d6rne\u011fin, <code>\/var\/www\/myfastapiapp<\/code> ad\u0131nda bir dizin olu\u015fturabiliriz. Bu dizini, web sunucular\u0131n\u0131n genellikle uygulama dosyalar\u0131n\u0131 bar\u0131nd\u0131rd\u0131\u011f\u0131 <code>\/var\/www<\/code> alt\u0131nda konumland\u0131rmak standart bir yakla\u015f\u0131md\u0131r.<\/p>\n<div class=\"code-container\">\n<pre><code>sudo mkdir -p \/var\/www\/myfastapiapp\ncd \/var\/www\/myfastapiapp<\/code><\/pre>\n<\/div>\n<p>Dizinin sahipli\u011fini mevcut kullan\u0131c\u0131n\u0131za atamak, dosyalar \u00fczerinde root yetkisi olmadan \u00e7al\u0131\u015fman\u0131za olanak tan\u0131r. Bu, g\u00fcvenlik a\u00e7\u0131s\u0131ndan \u00f6nemlidir ve gereksiz yetki kullan\u0131m\u0131n\u0131 engeller. <code>your_username<\/code> k\u0131sm\u0131n\u0131 kendi kullan\u0131c\u0131 ad\u0131n\u0131zla de\u011fi\u015ftirmeyi unutmay\u0131n.<\/p>\n<div class=\"code-container\">\n<pre><code>sudo chown -R your_username:your_username \/var\/www\/myfastapiapp<\/code><\/pre>\n<\/div>\n<p>\u015eimdi, projeniz i\u00e7in bir sanal ortam olu\u015ftural\u0131m ve bu ortam\u0131 etkinle\u015ftirelim. Sanal ortam\u0131 etkinle\u015ftirdi\u011finizde, terminal oturumunuzda kurdu\u011funuz t\u00fcm Python paketleri yaln\u0131zca bu ortama \u00f6zg\u00fc olacakt\u0131r.<\/p>\n<div class=\"code-container\">\n<pre><code>python3 -m venv venv\nsource venv\/bin\/activate<\/code><\/pre>\n<\/div>\n<p>Sanal ortam etkinle\u015ftirildikten sonra, terminal komut isteminizin ba\u015f\u0131nda <code>(venv)<\/code> gibi bir ibare g\u00f6receksiniz. Bu, sanal ortam\u0131n ba\u015far\u0131yla etkinle\u015ftirildi\u011fini g\u00f6sterir. Son olarak, FastAPI ve Uvicorn&#8217;u sanal ortam\u0131n\u0131za kural\u0131m. Uvicorn, FastAPI uygulaman\u0131z\u0131 geli\u015ftirme s\u0131ras\u0131nda test etmek i\u00e7in kullan\u0131lan bir ASGI sunucusudur ve Gunicorn ile entegrasyon i\u00e7in de gereklidir.<\/p>\n<div class=\"code-container\">\n<pre><code>pip install fastapi uvicorn gunicorn python-multipart<\/code><\/pre>\n<\/div>\n<p><code>python-multipart<\/code> paketini eklememiz, FastAPI&#8217;nin form verileri ve dosya y\u00fcklemeleri gibi multipart\/form-data ile \u00e7al\u0131\u015fabilmesini sa\u011flar, bu da bir\u00e7ok modern web uygulamas\u0131 i\u00e7in standart bir gerekliliktir. Bu ad\u0131mlar\u0131 tamamlad\u0131\u011f\u0131n\u0131zda, FastAPI uygulaman\u0131z\u0131 geli\u015ftirmeye ve da\u011f\u0131tmaya haz\u0131r bir temel ortama sahip olacaks\u0131n\u0131z. Bu temel kurulum, uygulaman\u0131z\u0131n ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 izole etmenizi, g\u00fcvenlik g\u00fcncellemelerini takip etmenizi ve sisteminizde tutarl\u0131 bir geli\u015ftirme ve da\u011f\u0131t\u0131m s\u00fcreci s\u00fcrd\u00fcrmenizi sa\u011flar.<\/p>\n<h3>Basit Bir FastAPI Uygulamas\u0131 Nas\u0131l Olu\u015fturulur ve Test Edilir?<\/h3>\n<p>\u015eimdi s\u0131ra, da\u011f\u0131t\u0131m\u0131n\u0131 yapaca\u011f\u0131m\u0131z basit bir FastAPI uygulamas\u0131 olu\u015fturmaya geldi. Bu \u00f6rnek uygulama, bir &#8220;Merhaba D\u00fcnya&#8221; mesaj\u0131 d\u00f6nd\u00fcrecek ve temel bir API i\u015flevselli\u011fini sergileyecektir. <code>\/var\/www\/myfastapiapp<\/code> dizini i\u00e7inde <code>main.py<\/code> ad\u0131nda bir dosya olu\u015ftural\u0131m ve a\u015fa\u011f\u0131daki kodu i\u00e7ine yazal\u0131m. Bu dosya, FastAPI uygulaman\u0131z\u0131n ana giri\u015f noktas\u0131 (entry point) olacakt\u0131r.<\/p>\n<div class=\"code-container\">\n<pre><code># \/var\/www\/myfastapiapp\/main.py\nfrom fastapi import FastAPI\n\napp = FastAPI()\n\n@app.get(\"\/\")\nasync def read_root():\n    return {\"message\": \"Merhaba, FastAPI!\"}\n\n@app.get(\"\/items\/{item_id}\")\nasync def read_item(item_id: int, q: str = None):\n    return {\"item_id\": item_id, \"q\": q}<\/code><\/pre>\n<\/div>\n<p>Bu kod, iki farkl\u0131 endpoint (u\u00e7 nokta) tan\u0131mlar:<br \/>\n*   <code>\/<\/code>: K\u00f6k dizine yap\u0131lan GET iste\u011fine &#8220;Merhaba, FastAPI!&#8221; mesaj\u0131 ile yan\u0131t verir.<br \/>\n*   <code>\/items\/{item_id}<\/code>: Belirli bir <code>item_id<\/code> ile yap\u0131lan GET iste\u011fine, bu ID&#8217;yi ve iste\u011fe ba\u011fl\u0131 bir <code>q<\/code> parametresini i\u00e7eren bir JSON yan\u0131t\u0131 verir. Bu, FastAPI&#8217;nin yol parametreleri (path parameters) ve sorgu parametreleri (query parameters) ile nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6sterir.<\/p>\n<p>Uygulaman\u0131z\u0131 geli\u015ftirdi\u011finizde, genellikle yerel makinenizde veya sunucunuzda Uvicorn ile test etmek istersiniz. Sanal ortam\u0131n\u0131z hala etkin durumdayken (e\u011fer de\u011filse, <code>source venv\/bin\/activate<\/code> komutunu tekrar \u00e7al\u0131\u015ft\u0131r\u0131n), uygulamay\u0131 Uvicorn ile ba\u015flat\u0131n:<\/p>\n<div class=\"code-container\">\n<pre><code>uvicorn main:app --host 0.0.0.0 --port 8000<\/code><\/pre>\n<\/div>\n<p>Bu komut, Uvicorn&#8217;u <code>main.py<\/code> dosyas\u0131ndaki <code>app<\/code> objesini kullanarak uygulamay\u0131 ba\u015flatmaya y\u00f6nlendirir. <code>--host 0.0.0.0<\/code> parametresi, uygulaman\u0131n t\u00fcm a\u011f aray\u00fczlerinden (network interfaces) eri\u015filebilir olmas\u0131n\u0131 sa\u011flar, bu da sunucunuzun IP adresi \u00fczerinden veya <code>localhost<\/code> \u00fczerinden eri\u015filebilece\u011fi anlam\u0131na gelir. <code>--port 8000<\/code> ise uygulaman\u0131n 8000 numaral\u0131 portta dinleyece\u011fini belirtir. Taray\u0131c\u0131n\u0131zdan veya bir HTTP istemcisi (\u00f6rne\u011fin Postman veya <code>curl<\/code>) kullanarak sunucunuzun IP adresini ve 8000 portunu kullanarak uygulaman\u0131za eri\u015febilirsiniz:<\/p>\n<p>*   <code>http:\/\/YOUR_SERVER_IP:8000\/<\/code><br \/>\n*   <code>http:\/\/YOUR_SERVER_IP:8000\/items\/5?q=example<\/code><br \/>\n*   <code>http:\/\/YOUR_SERVER_IP:8000\/docs<\/code> (FastAPI&#8217;nin otomatik API dok\u00fcmantasyonu)<\/p>\n<p>Uygulaman\u0131z\u0131n do\u011fru \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 do\u011frulad\u0131ktan sonra, Uvicorn sunucusunu durdurmak i\u00e7in terminalde <code>Ctrl+C<\/code> tu\u015f kombinasyonuna basabilirsiniz. Bu basit test, uygulaman\u0131z\u0131n temel i\u015flevselli\u011finin beklendi\u011fi gibi \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olman\u0131z\u0131 sa\u011flar. \u00dcretim ortam\u0131nda Uvicorn yerine Gunicorn kullanaca\u011f\u0131m\u0131z i\u00e7in bu ad\u0131m sadece geli\u015ftirme ve test ama\u00e7l\u0131d\u0131r.<\/p>\n<h3>Gunicorn ile FastAPI Uygulamas\u0131n\u0131 \u00c7al\u0131\u015ft\u0131rma ve Y\u00f6netme<\/h3>\n<p>FastAPI uygulaman\u0131z\u0131 \u00fcretim ortam\u0131nda \u00e7al\u0131\u015ft\u0131rmak i\u00e7in Gunicorn&#8217;\u0131 kullanaca\u011f\u0131z. Gunicorn, birden fazla worker (i\u015f\u00e7i) s\u00fcreci olu\u015fturarak uygulaman\u0131z\u0131n e\u015f zamanl\u0131 istekleri daha verimli bir \u015fekilde i\u015flemesini sa\u011flar. \u0130lk olarak, Gunicorn&#8217;\u0131 basit bir komutla nas\u0131l \u00e7al\u0131\u015ft\u0131raca\u011f\u0131m\u0131za bakal\u0131m. Sanal ortam\u0131n\u0131z etkin durumdayken, a\u015fa\u011f\u0131daki komutu kullanarak uygulaman\u0131z\u0131 Gunicorn ile ba\u015flatabilirsiniz:<\/p>\n<div class=\"code-container\">\n<pre><code>gunicorn main:app --workers 4 --worker-class uvicorn.workers.UvicornWorker --bind 0.0.0.0:8000<\/code><\/pre>\n<\/div>\n<p>Bu komutun bile\u015fenlerini inceleyelim:<br \/>\n*   <code>main:app<\/code>: Gunicorn&#8217;a <code>main.py<\/code> dosyas\u0131ndaki <code>app<\/code> objesini \u00e7al\u0131\u015ft\u0131rmas\u0131n\u0131 s\u00f6yler.<br \/>\n*   <code>--workers 4<\/code>: Uygulaman\u0131z i\u00e7in 4 adet worker s\u00fcreci olu\u015fturur. \u0130deal worker say\u0131s\u0131 genellikle <code>(2 * CPU_\u00e7ekirdek_say\u0131s\u0131) + 1<\/code> form\u00fcl\u00fcyle hesaplan\u0131r, ancak bu, uygulaman\u0131z\u0131n CPU yo\u011funlu\u011funa ve bellek kullan\u0131m\u0131na ba\u011fl\u0131 olarak de\u011fi\u015febilir. Ba\u015flang\u0131\u00e7 i\u00e7in 2-4 worker iyi bir se\u00e7imdir.<br \/>\n*   <code>--worker-class uvicorn.workers.UvicornWorker<\/code>: Gunicorn&#8217;a ASGI uyumlu bir uygulama olan FastAPI&#8217;yi \u00e7al\u0131\u015ft\u0131rmak i\u00e7in Uvicorn worker s\u0131n\u0131f\u0131n\u0131 kullanmas\u0131n\u0131 s\u00f6yler. Bu, Gunicorn&#8217;un asenkron FastAPI uygulaman\u0131zla d\u00fczg\u00fcn bir \u015fekilde ileti\u015fim kurmas\u0131n\u0131 sa\u011flar.<br \/>\n*   <code>--bind 0.0.0.0:8000<\/code>: Gunicorn&#8217;un 8000 numaral\u0131 portta ve t\u00fcm a\u011f aray\u00fczlerinde dinlemesini sa\u011flar.<\/p>\n<p>Bu komutla Gunicorn, FastAPI uygulaman\u0131z\u0131 ba\u015flatacak ve gelen istekleri worker s\u00fcre\u00e7lerine da\u011f\u0131tmaya ba\u015flayacakt\u0131r. Ancak, bu komutu manuel olarak \u00e7al\u0131\u015ft\u0131rmak ve terminali a\u00e7\u0131k tutmak \u00fcretim ortam\u0131 i\u00e7in pratik de\u011fildir. Uygulaman\u0131z\u0131n sunucu yeniden ba\u015flat\u0131ld\u0131\u011f\u0131nda otomatik olarak ba\u015flamas\u0131n\u0131 ve arka planda s\u00fcrekli \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flamak i\u00e7in <code>systemd<\/code> servisi kullanmam\u0131z gerekir.<\/p>\n<p><code>systemd<\/code>, Linux sistemlerinde servisleri y\u00f6netmek i\u00e7in kullan\u0131lan bir sistem ve servis y\u00f6neticisidir. Uygulaman\u0131z i\u00e7in bir <code>systemd<\/code> servis dosyas\u0131 olu\u015fturarak Gunicorn&#8217;\u0131n otomatik olarak ba\u015flat\u0131lmas\u0131n\u0131, durdurulmas\u0131n\u0131 ve yeniden ba\u015flat\u0131lmas\u0131n\u0131 sa\u011flayabiliriz.<\/p>\n<p>\u00d6ncelikle, <code>systemd<\/code> servis dosyam\u0131z\u0131 olu\u015ftural\u0131m. <code>\/etc\/systemd\/system\/<\/code> dizini alt\u0131nda <code>myfastapiapp.service<\/code> ad\u0131nda bir dosya olu\u015fturun:<\/p>\n<div class=\"code-container\">\n<pre><code>sudo nano \/etc\/systemd\/system\/myfastapiapp.service<\/code><\/pre>\n<\/div>\n<p>Dosyan\u0131n i\u00e7ine a\u015fa\u011f\u0131daki i\u00e7eri\u011fi yap\u0131\u015ft\u0131r\u0131n:<\/p>\n<div class=\"code-container\">\n<pre><code>[Unit]\nDescription=Gunicorn instance to serve myfastapiapp\nAfter=network.target\n\n[Service]\nUser=your_username\nGroup=your_username\nWorkingDirectory=\/var\/www\/myfastapiapp\nEnvironment=\"PATH=\/var\/www\/myfastapiapp\/venv\/bin\"\nExecStart=\/var\/www\/myfastapiapp\/venv\/bin\/gunicorn main:app --workers 4 --worker-class uvicorn.workers.UvicornWorker --bind unix:\/run\/myfastapiapp.sock\nExecReload=\/bin\/kill -s HUP $MAINPID\nKillMode=mixed\nRestart=on-failure\n\n[Install]\nWantedBy=multi-user.target<\/code><\/pre>\n<\/div>\n<p>Bu servis dosyas\u0131ndaki \u00f6nemli noktalar:<br \/>\n*   <code>User<\/code> ve <code>Group<\/code>: Uygulaman\u0131n \u00e7al\u0131\u015faca\u011f\u0131 kullan\u0131c\u0131 ve grup. Kendi kullan\u0131c\u0131 ad\u0131n\u0131zla de\u011fi\u015ftirmeyi unutmay\u0131n. Bu, uygulaman\u0131n root yetkileriyle \u00e7al\u0131\u015fmas\u0131n\u0131 engelleyerek g\u00fcvenlik sa\u011flar.<br \/>\n*   <code>WorkingDirectory<\/code>: Uygulaman\u0131z\u0131n k\u00f6k dizini.<br \/>\n*   <code>Environment=&quot;PATH=...&quot;<\/code>: Sanal ortam\u0131n\u0131z\u0131n <code>bin<\/code> dizinini PATH&#8217;e ekleyerek <code>gunicorn<\/code> komutunun do\u011fru \u015fekilde bulunmas\u0131n\u0131 sa\u011flar.<br \/>\n*   <code>ExecStart<\/code>: Gunicorn&#8217;\u0131 ba\u015flatmak i\u00e7in kullan\u0131lacak komut. Burada <code>--bind unix:\/run\/myfastapiapp.sock<\/code> kullan\u0131yoruz. Bu, Gunicorn&#8217;\u0131n bir Unix soketi (socket) \u00fczerinden dinlemesini sa\u011flar. Nginx, bu soket \u00fczerinden Gunicorn ile ileti\u015fim kuracak, bu da HTTP \u00fczerinden ileti\u015fim kurmaktan daha h\u0131zl\u0131 ve g\u00fcvenlidir.<br \/>\n*   <code>Restart=on-failure<\/code>: Uygulama bir hata nedeniyle kapan\u0131rsa, <code>systemd<\/code> otomatik olarak yeniden ba\u015flatmaya \u00e7al\u0131\u015f\u0131r.<\/p>\n<p>Dosyay\u0131 kaydedip kapatt\u0131ktan sonra, <code>systemd<\/code>&#8216;yi yeni servis dosyas\u0131n\u0131 okumas\u0131 i\u00e7in yeniden y\u00fckleyin ve ard\u0131ndan servisi ba\u015flat\u0131p etkinle\u015ftirin:<\/p>\n<div class=\"code-container\">\n<pre><code>sudo systemctl daemon-reload\nsudo systemctl start myfastapiapp\nsudo systemctl enable myfastapiapp<\/code><\/pre>\n<\/div>\n<p>Servisin durumunu kontrol etmek i\u00e7in:<\/p>\n<div class=\"code-container\">\n<pre><code>sudo systemctl status myfastapiapp<\/code><\/pre>\n<\/div>\n<p>E\u011fer her \u015fey yolundaysa, servis aktif (running) durumda olacakt\u0131r. Art\u0131k Gunicorn, uygulaman\u0131z\u0131 arka planda ve s\u00fcrekli olarak \u00e7al\u0131\u015ft\u0131r\u0131yor. Bir sonraki ad\u0131m, Nginx&#8217;i bu Gunicorn servisiyle ileti\u015fim kuracak \u015fekilde yap\u0131land\u0131rmakt\u0131r.<\/p>\n<h3>Nginx&#8217;i Ters Proxy Olarak Yap\u0131land\u0131rma ve Statik Dosyalar\u0131 Sunma<\/h3>\n<p>Uygulaman\u0131z\u0131n internetten eri\u015filebilir olmas\u0131 ve performans, g\u00fcvenlik gibi ek \u00f6zelliklerden faydalanmas\u0131 i\u00e7in Nginx&#8217;i bir ters proxy olarak yap\u0131land\u0131rmam\u0131z gerekiyor. Nginx, istemcilerden gelen istekleri alacak ve bunlar\u0131 Gunicorn taraf\u0131ndan dinlenen Unix soketine y\u00f6nlendirecektir. Ayr\u0131ca, uygulaman\u0131z\u0131n statik dosyalar\u0131n\u0131 (\u00f6rne\u011fin CSS, JavaScript, resimler) do\u011frudan sunarak Gunicorn&#8217;un y\u00fck\u00fcn\u00fc azaltacak ve performans\u0131 art\u0131racakt\u0131r.<\/p>\n<p>\u0130lk olarak, Nginx&#8217;i kurman\u0131z gerekebilir. E\u011fer kurulu de\u011filse:<\/p>\n<div class=\"code-container\">\n<pre><code>sudo apt install nginx -y<\/code><\/pre>\n<\/div>\n<p>\u015eimdi, Nginx i\u00e7in bir yap\u0131land\u0131rma dosyas\u0131 olu\u015ftural\u0131m. Bu dosya, Nginx&#8217;in uygulaman\u0131z i\u00e7in nas\u0131l davranaca\u011f\u0131n\u0131 tan\u0131mlayacakt\u0131r. <code>\/etc\/nginx\/sites-available\/<\/code> dizini alt\u0131nda <code>myfastapiapp<\/code> ad\u0131nda yeni bir dosya olu\u015ftural\u0131m:<\/p>\n<div class=\"code-container\">\n<pre><code>sudo nano \/etc\/nginx\/sites-available\/myfastapiapp<\/code><\/pre>\n<\/div>\n<p>Dosyan\u0131n i\u00e7ine a\u015fa\u011f\u0131daki i\u00e7eri\u011fi yap\u0131\u015ft\u0131r\u0131n:<\/p>\n<div class=\"code-container\">\n<pre><code>server {\n    listen 80;\n    server_name your_domain_or_server_ip;\n\n    location \/static\/ {\n        alias \/var\/www\/myfastapiapp\/static\/;\n    }\n\n    location \/ {\n        include proxy_params;\n        proxy_pass http:\/\/unix:\/run\/myfastapiapp.sock;\n    }\n}<\/code><\/pre>\n<\/div>\n<p>Bu yap\u0131land\u0131rmadaki \u00f6nemli noktalar:<br \/>\n*   <code>listen 80;<\/code>: Nginx&#8217;in 80 numaral\u0131 HTTP portunda dinlemesini sa\u011flar.<br \/>\n*   <code>server_name your_domain_or_server_ip;<\/code>: Buraya sunucunuzun IP adresini veya alan ad\u0131n\u0131z\u0131 (domain name) yaz\u0131n. \u00d6rne\u011fin, <code>example.com<\/code> veya <code>192.168.1.100<\/code>.<br \/>\n*   <code>location \/static\/ { ... }<\/code>: Bu blok, Nginx&#8217;in <code>\/static\/<\/code> ile ba\u015flayan URL&#8217;ler i\u00e7in statik dosyalar\u0131 do\u011frudan <code>\/var\/www\/myfastapiapp\/static\/<\/code> dizininden sunmas\u0131n\u0131 sa\u011flar. Uygulaman\u0131zda statik dosyalar kullanacaksan\u0131z, bu dizini olu\u015fturman\u0131z ve dosyalar\u0131n\u0131z\u0131 buraya yerle\u015ftirmeniz gerekir.<br \/>\n*   <code>location \/ { ... }<\/code>: Bu blok, di\u011fer t\u00fcm istekleri y\u00f6netir.<br \/>\n    *   <code>include proxy_params;<\/code>: Nginx&#8217;in proxy istekleri i\u00e7in standart ba\u015fl\u0131klar\u0131 (headers) ayarlamas\u0131n\u0131 sa\u011flar. Bu dosya genellikle Nginx kurulumuyla birlikte gelir ve istemci IP adresi gibi bilgileri Gunicorn&#8217;a iletmek i\u00e7in \u00f6nemlidir.<br \/>\n    *   <code>proxy_pass http:\/\/unix:\/run\/myfastapiapp.sock;<\/code>: Gelen istekleri, Gunicorn&#8217;\u0131n dinledi\u011fi Unix soketine y\u00f6nlendirir. Bu, Nginx ile Gunicorn aras\u0131ndaki ileti\u015fimi sa\u011flar.<\/p>\n<p>Yap\u0131land\u0131rma dosyas\u0131n\u0131 kaydettikten sonra, Nginx&#8217;in bu yap\u0131land\u0131rmay\u0131 kullanabilmesi i\u00e7in <code>sites-enabled<\/code> dizinine bir sembolik ba\u011flant\u0131 (symbolic link) olu\u015fturman\u0131z gerekir:<\/p>\n<div class=\"code-container\">\n<pre><code>sudo ln -s \/etc\/nginx\/sites-available\/myfastapiapp \/etc\/nginx\/sites-enabled\/<\/code><\/pre>\n<\/div>\n<p>Mevcut varsay\u0131lan Nginx yap\u0131land\u0131rmas\u0131n\u0131 devre d\u0131\u015f\u0131 b\u0131rakmak iyi bir uygulamad\u0131r, \u00e7\u00fcnk\u00fc kendi yap\u0131land\u0131rman\u0131z \u00e7ak\u0131\u015fmalara neden olabilir:<\/p>\n<div class=\"code-container\">\n<pre><code>sudo unlink \/etc\/nginx\/sites-enabled\/default<\/code><\/pre>\n<\/div>\n<p>Nginx yap\u0131land\u0131rman\u0131z\u0131n s\u00f6zdizimini (syntax) kontrol etmek i\u00e7in:<\/p>\n<div class=\"code-container\">\n<pre><code>sudo nginx -t<\/code><\/pre>\n<\/div>\n<p>E\u011fer herhangi bir hata yoksa, Nginx servisini yeniden ba\u015flatarak yeni yap\u0131land\u0131rmay\u0131 etkinle\u015ftirin:<\/p>\n<div class=\"code-container\">\n<pre><code>sudo systemctl restart nginx<\/code><\/pre>\n<\/div>\n<p>\u015eimdi taray\u0131c\u0131n\u0131zdan <code>http:\/\/your_domain_or_server_ip<\/code> adresine giderek FastAPI uygulaman\u0131za eri\u015febilmeniz gerekir. Nginx, iste\u011fi alacak, Gunicorn&#8217;a y\u00f6nlendirecek ve Gunicorn&#8217;dan gelen yan\u0131t\u0131 size geri g\u00f6nderecektir. Ayr\u0131ca, <code>http:\/\/your_domain_or_server_ip\/docs<\/code> adresinden FastAPI&#8217;nin otomatik API dok\u00fcmantasyonuna da eri\u015febilirsiniz. E\u011fer uygulaman\u0131zda statik dosyalar kullanacaksan\u0131z, <code>\/var\/www\/myfastapiapp\/static\/<\/code> dizinini olu\u015fturmay\u0131 ve i\u00e7ine deneme ama\u00e7l\u0131 bir <code>style.css<\/code> dosyas\u0131 koymay\u0131 unutmay\u0131n. \u00d6rne\u011fin:<\/p>\n<div class=\"code-container\">\n<pre><code>sudo mkdir -p \/var\/www\/myfastapiapp\/static\necho \"body { background-color: lightblue; }\" | sudo tee \/var\/www\/myfastapiapp\/static\/style.css<\/code><\/pre>\n<\/div>\n<p>Daha sonra FastAPI uygulaman\u0131zda bu statik dosyay\u0131 kullanmak i\u00e7in, <code>main.py<\/code> dosyan\u0131za a\u015fa\u011f\u0131daki sat\u0131rlar\u0131 ekleyebilir ve HTML \u00e7\u0131kt\u0131s\u0131n\u0131 g\u00fcncelleyebilirsiniz:<\/p>\n<div class=\"code-container\">\n<pre><code>from fastapi import FastAPI<br \/>\nfrom fastapi.staticfiles import StaticFiles<br \/>\nfrom fastapi.responses import HTMLResponse<\/p>\n<p>app = FastAPI()<\/p>\n<p>app.mount(\"\/static\", StaticFiles(directory=\"static\"), name=\"static\")<\/p>\n<p>@app.get(\"\/\", response_class=HTMLResponse)<br \/>\nasync def read_root():<br \/>\n    return \"\"\"<br \/>\n    <html><br \/>\n        <head><br \/>\n            <title>Merhaba FastAPI<\/title>\n            <link rel=\"stylesheet\" href=\"\/static\/style.css\">\n        <\/head><br \/>\n        <body><\/p>\n<h1>Merhaba, FastAPI!<\/h1>\n<p>Bu bir FastAPI uygulamas\u0131d\u0131r.<\/p>\n<div class=\"github-example-link\"><strong>\u00d6rnek kod:<\/strong> <a href=\"https:\/\/github.com\/fatihsoysalcom\/simple-fastapi-application-example\" target=\"_blank\" rel=\"noopener noreferrer\">github.com\/fatihsoysalcom\/simple-fastapi-application-example<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"sudo apt update sudo apt upgrade -y Sisteminiz g\u00fcncellendikten sonra, Python&#8217;\u0131 ve sanal ortam (virtual environment) olu\u015fturmak i\u00e7in gerekli ara\u00e7lar\u0131 kurman\u0131z gerekiyor. Ubuntu 24.","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-44503","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>FastAPI Uygulamalar\u0131n\u0131 Gunicorn ve Nginx ile Ubuntu 24.04 \u00dczerine Da\u011f\u0131tma Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/fastapi-uygulamalarini-gunicorn-ve-nginx-ile-ubuntu-24-04-uzerine-dagitma-rehberi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"FastAPI Uygulamalar\u0131n\u0131 Gunicorn ve Nginx ile Ubuntu 24.04 \u00dczerine Da\u011f\u0131tma Rehberi\" \/>\n<meta property=\"og:description\" content=\"sudo apt update sudo apt upgrade -y Sisteminiz g\u00fcncellendikten sonra, Python&#039;\u0131 ve sanal ortam (virtual environment) olu\u015fturmak i\u00e7in gerekli ara\u00e7lar\u0131 kurman\u0131z gerekiyor. Ubuntu 24.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/fastapi-uygulamalarini-gunicorn-ve-nginx-ile-ubuntu-24-04-uzerine-dagitma-rehberi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-03T18:14:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-03T18:15:18+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\/fastapi-uygulamalarini-gunicorn-ve-nginx-ile-ubuntu-24-04-uzerine-dagitma-rehberi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/fastapi-uygulamalarini-gunicorn-ve-nginx-ile-ubuntu-24-04-uzerine-dagitma-rehberi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"FastAPI Uygulamalar\u0131n\u0131 Gunicorn ve Nginx ile Ubuntu 24.04 \u00dczerine Da\u011f\u0131tma Rehberi\",\"datePublished\":\"2026-09-03T18:14:55+00:00\",\"dateModified\":\"2026-09-03T18:15:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/fastapi-uygulamalarini-gunicorn-ve-nginx-ile-ubuntu-24-04-uzerine-dagitma-rehberi\/\"},\"wordCount\":2581,\"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\/fastapi-uygulamalarini-gunicorn-ve-nginx-ile-ubuntu-24-04-uzerine-dagitma-rehberi\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/fastapi-uygulamalarini-gunicorn-ve-nginx-ile-ubuntu-24-04-uzerine-dagitma-rehberi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/fastapi-uygulamalarini-gunicorn-ve-nginx-ile-ubuntu-24-04-uzerine-dagitma-rehberi\/\",\"name\":\"FastAPI Uygulamalar\u0131n\u0131 Gunicorn ve Nginx ile Ubuntu 24.04 \u00dczerine Da\u011f\u0131tma Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-09-03T18:14:55+00:00\",\"dateModified\":\"2026-09-03T18:15:18+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/fastapi-uygulamalarini-gunicorn-ve-nginx-ile-ubuntu-24-04-uzerine-dagitma-rehberi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/fastapi-uygulamalarini-gunicorn-ve-nginx-ile-ubuntu-24-04-uzerine-dagitma-rehberi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/fastapi-uygulamalarini-gunicorn-ve-nginx-ile-ubuntu-24-04-uzerine-dagitma-rehberi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"FastAPI Uygulamalar\u0131n\u0131 Gunicorn ve Nginx ile Ubuntu 24.04 \u00dczerine Da\u011f\u0131tma Rehberi\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"FastAPI Uygulamalar\u0131n\u0131 Gunicorn ve Nginx ile Ubuntu 24.04 \u00dczerine Da\u011f\u0131tma Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/fastapi-uygulamalarini-gunicorn-ve-nginx-ile-ubuntu-24-04-uzerine-dagitma-rehberi\/","og_locale":"tr_TR","og_type":"article","og_title":"FastAPI Uygulamalar\u0131n\u0131 Gunicorn ve Nginx ile Ubuntu 24.04 \u00dczerine Da\u011f\u0131tma Rehberi","og_description":"sudo apt update sudo apt upgrade -y Sisteminiz g\u00fcncellendikten sonra, Python'\u0131 ve sanal ortam (virtual environment) olu\u015fturmak i\u00e7in gerekli ara\u00e7lar\u0131 kurman\u0131z gerekiyor. Ubuntu 24.","og_url":"https:\/\/fatihsoysal.com\/blog\/fastapi-uygulamalarini-gunicorn-ve-nginx-ile-ubuntu-24-04-uzerine-dagitma-rehberi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-09-03T18:14:55+00:00","article_modified_time":"2026-09-03T18:15:18+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\/fastapi-uygulamalarini-gunicorn-ve-nginx-ile-ubuntu-24-04-uzerine-dagitma-rehberi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/fastapi-uygulamalarini-gunicorn-ve-nginx-ile-ubuntu-24-04-uzerine-dagitma-rehberi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"FastAPI Uygulamalar\u0131n\u0131 Gunicorn ve Nginx ile Ubuntu 24.04 \u00dczerine Da\u011f\u0131tma Rehberi","datePublished":"2026-09-03T18:14:55+00:00","dateModified":"2026-09-03T18:15:18+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/fastapi-uygulamalarini-gunicorn-ve-nginx-ile-ubuntu-24-04-uzerine-dagitma-rehberi\/"},"wordCount":2581,"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\/fastapi-uygulamalarini-gunicorn-ve-nginx-ile-ubuntu-24-04-uzerine-dagitma-rehberi\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/fastapi-uygulamalarini-gunicorn-ve-nginx-ile-ubuntu-24-04-uzerine-dagitma-rehberi\/","url":"https:\/\/fatihsoysal.com\/blog\/fastapi-uygulamalarini-gunicorn-ve-nginx-ile-ubuntu-24-04-uzerine-dagitma-rehberi\/","name":"FastAPI Uygulamalar\u0131n\u0131 Gunicorn ve Nginx ile Ubuntu 24.04 \u00dczerine Da\u011f\u0131tma Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-09-03T18:14:55+00:00","dateModified":"2026-09-03T18:15:18+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/fastapi-uygulamalarini-gunicorn-ve-nginx-ile-ubuntu-24-04-uzerine-dagitma-rehberi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/fastapi-uygulamalarini-gunicorn-ve-nginx-ile-ubuntu-24-04-uzerine-dagitma-rehberi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/fastapi-uygulamalarini-gunicorn-ve-nginx-ile-ubuntu-24-04-uzerine-dagitma-rehberi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"FastAPI Uygulamalar\u0131n\u0131 Gunicorn ve Nginx ile Ubuntu 24.04 \u00dczerine Da\u011f\u0131tma Rehberi"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/44503","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=44503"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/44503\/revisions"}],"predecessor-version":[{"id":44504,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/44503\/revisions\/44504"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=44503"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=44503"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=44503"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}