{"id":36531,"date":"2025-12-19T12:21:17","date_gmt":"2025-12-19T09:21:17","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/uygulamalarinizi-dunyaya-acmaya-hazir-misiniz-ubuntu-24-04te-uygulama-sunucusu-kurulumu\/"},"modified":"2025-12-19T12:21:17","modified_gmt":"2025-12-19T09:21:17","slug":"uygulamalarinizi-dunyaya-acmaya-hazir-misiniz-ubuntu-24-04te-uygulama-sunucusu-kurulumu","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/uygulamalarinizi-dunyaya-acmaya-hazir-misiniz-ubuntu-24-04te-uygulama-sunucusu-kurulumu\/","title":{"rendered":"Uygulamalar\u0131n\u0131z\u0131 D\u00fcnyaya A\u00e7maya Haz\u0131r m\u0131s\u0131n\u0131z? Ubuntu 24.04&#8217;te Uygulama Sunucusu Kurulumu"},"content":{"rendered":"<p><title>Ubuntu 24.04&#8217;te Uygulama Sunucusu Kurulumu ve Yap\u0131land\u0131rmas\u0131<\/title><br \/>\n<body><\/p>\n<h2>Uygulamalar\u0131n\u0131z\u0131 D\u00fcnyaya A\u00e7maya Haz\u0131r m\u0131s\u0131n\u0131z? Ubuntu 24.04&#8217;te Uygulama Sunucusu Kurulumu<\/h2>\n<p>Modern web uygulamalar\u0131 geli\u015ftirdiniz, ancak bu harika projeleri internet kullan\u0131c\u0131lar\u0131yla nas\u0131l bulu\u015fturaca\u011f\u0131n\u0131z\u0131 m\u0131 merak ediyorsunuz? Uygulama sunucular\u0131, kodunuzu canl\u0131 bir ortama ta\u015f\u0131man\u0131n ve kesintisiz bir kullan\u0131c\u0131 deneyimi sunman\u0131n temel ta\u015f\u0131d\u0131r. Bu kapsaml\u0131 rehberde, Ubuntu 24.04 i\u015fletim sistemi \u00fczerinde g\u00fc\u00e7l\u00fc ve g\u00fcvenilir bir uygulama sunucusunu s\u0131f\u0131rdan nas\u0131l kurup yap\u0131land\u0131raca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m ke\u015ffedece\u011fiz.<\/p>\n<p>Dijital d\u00fcnyada yerinizi almak, geli\u015ftirdi\u011finiz web uygulamalar\u0131n\u0131 g\u00fcvenilir ve y\u00fcksek performansl\u0131 bir altyap\u0131 \u00fczerinde yay\u0131nlamakla ba\u015flar. \u00d6zellikle Ubuntu 24.04 gibi g\u00fcncel ve topluluk taraf\u0131ndan yo\u011fun \u015fekilde desteklenen bir i\u015fletim sistemi, bu s\u00fcre\u00e7 i\u00e7in m\u00fckemmel bir zemin sunar. Bu makale, sadece teknik ad\u0131mlar\u0131 g\u00f6stermekle kalmayacak, ayn\u0131 zamanda her bir bile\u015fenin neden \u00f6nemli oldu\u011funu ve ger\u00e7ek d\u00fcnya senaryolar\u0131nda size nas\u0131l fayda sa\u011flayaca\u011f\u0131n\u0131 da a\u00e7\u0131klayacakt\u0131r. \u0130ster k\u00fc\u00e7\u00fck bir ki\u015fisel blog, ister b\u00fcy\u00fck \u00f6l\u00e7ekli bir e-ticaret platformu olsun, bu rehber sayesinde uygulaman\u0131z\u0131 g\u00fcvenle yay\u0131na alabileceksiniz. Sunucu haz\u0131rl\u0131\u011f\u0131ndan g\u00fcvenlik \u00f6nlemlerine, performans optimizasyonlar\u0131ndan ileri d\u00fczey yap\u0131land\u0131rmalara kadar her detay\u0131 ele alaca\u011f\u0131z. Hadi ba\u015flayal\u0131m ve uygulaman\u0131z\u0131n potansiyelini tam anlam\u0131yla ortaya \u00e7\u0131karal\u0131m!<\/p>\n<h2>Uygulama Sunucusu Nedir ve Neden \u00d6nemlidir? Temel Kavramlara Derin Bir Bak\u0131\u015f<\/h2>\n<p>Bir web uygulamas\u0131n\u0131n geli\u015ftirilmesi, s\u00fcrecin yaln\u0131zca bir par\u00e7as\u0131d\u0131r. Uygulaman\u0131n internet \u00fczerinden eri\u015filebilir olmas\u0131 ve d\u00fczg\u00fcn \u00e7al\u0131\u015fmas\u0131 i\u00e7in bir &#8220;uygulama sunucusu&#8221;na ihtiyac\u0131m\u0131z vard\u0131r. Peki, tam olarak nedir bu uygulama sunucusu ve onu bir web sunucusundan ay\u0131ran nedir?<\/p>\n<p>Basit\u00e7e ifade etmek gerekirse, bir <strong>uygulama sunucusu<\/strong>, dinamik web i\u00e7eri\u011fi \u00fcreten uygulamalar\u0131 \u00e7al\u0131\u015ft\u0131rmak i\u00e7in tasarlanm\u0131\u015f bir yaz\u0131l\u0131m katman\u0131d\u0131r. Geleneksel web sunucular\u0131 (\u00f6rne\u011fin Apache HTTP Server veya Nginx), genellikle statik HTML sayfalar\u0131, resimler ve CSS\/JavaScript dosyalar\u0131 gibi \u00f6nceden olu\u015fturulmu\u015f i\u00e7erikleri do\u011frudan istemcilere sunarken, uygulama sunucular\u0131 kullan\u0131c\u0131lardan gelen istekleri i\u015fler, veritabanlar\u0131yla etkile\u015fime girer, i\u015f mant\u0131\u011f\u0131n\u0131 y\u00fcr\u00fct\u00fcr ve dinamik olarak HTML, JSON veya ba\u015fka formatlarda yan\u0131tlar olu\u015fturur. Bu yan\u0131tlar daha sonra bir web sunucusu (genellikle bir ters proxy olarak yap\u0131land\u0131r\u0131lm\u0131\u015f) arac\u0131l\u0131\u011f\u0131yla istemciye iletilir.<\/p>\n<p>Uygulama sunucular\u0131n\u0131n \u00f6nemini birka\u00e7 maddeyle a\u00e7\u0131klayabiliriz:<\/p>\n<ul>\n<li><strong>Dinamik \u0130\u00e7erik \u00dcretimi:<\/strong> Kullan\u0131c\u0131 giri\u015fine, veritaban\u0131 sorgular\u0131na veya di\u011fer fakt\u00f6rlere ba\u011fl\u0131 olarak s\u00fcrekli de\u011fi\u015fen i\u00e7erik sa\u011flamak i\u00e7in vazge\u00e7ilmezdirler.<\/li>\n<li><strong>\u0130\u015f Mant\u0131\u011f\u0131 Y\u00fcr\u00fctme:<\/strong> Uygulaman\u0131z\u0131n temel fonksiyonlar\u0131n\u0131 (\u00f6rne\u011fin, sipari\u015f i\u015fleme, kullan\u0131c\u0131 kimlik do\u011frulamas\u0131, veri analizi) \u00e7al\u0131\u015ft\u0131ran kod burada bar\u0131nd\u0131r\u0131l\u0131r.<\/li>\n<li><strong>Kaynak Y\u00f6netimi:<\/strong> Uygulama s\u00fcre\u00e7lerini y\u00f6netir, bellek ve CPU gibi kaynaklar\u0131n verimli kullan\u0131lmas\u0131n\u0131 sa\u011flar.<\/li>\n<li><strong>G\u00fcvenlik:<\/strong> Uygulama katman\u0131nda g\u00fcvenlik politikalar\u0131 uygulamak, kullan\u0131c\u0131 oturumlar\u0131n\u0131 y\u00f6netmek ve hassas verilere eri\u015fimi kontrol etmek i\u00e7in kritik bir rol oynar.<\/li>\n<li><strong>\u00d6l\u00e7eklenebilirlik:<\/strong> Y\u00fcksek trafik durumlar\u0131nda uygulaman\u0131n performans\u0131n\u0131 korumak i\u00e7in birden fazla uygulama \u00f6rne\u011fini \u00e7al\u0131\u015ft\u0131rma ve y\u00fck dengeleme yetene\u011fi sunar.<\/li>\n<\/ul>\n<h3>Pop\u00fcler Uygulama Sunucusu T\u00fcrleri ve Ubuntu 24.04 ile Uyumu<\/h3>\n<p>Piyasada farkl\u0131 programlama dilleri ve \u00e7er\u00e7eveleri i\u00e7in optimize edilmi\u015f \u00e7ok say\u0131da uygulama sunucusu bulunmaktad\u0131r:<\/p>\n<ul>\n<li><strong>Java Tabanl\u0131 Sunucular (Tomcat, JBoss\/WildFly):<\/strong> Java tabanl\u0131 web uygulamalar\u0131 (\u00f6rne\u011fin Spring Boot) i\u00e7in idealdir. Geni\u015f kurumsal uygulamalarda s\u0131k\u00e7a tercih edilirler.<\/li>\n<li><strong>Python Tabanl\u0131 Sunucular (Gunicorn, uWSGI):<\/strong> Django ve Flask gibi Python web \u00e7er\u00e7eveleriyle birlikte kullan\u0131l\u0131r. Genellikle Nginx gibi bir web sunucusu ile ters proxy olarak \u00e7al\u0131\u015f\u0131rlar.<\/li>\n<li><strong>Node.js S\u00fcre\u00e7 Y\u00f6neticileri (PM2, Forever):<\/strong> Node.js uygulamalar\u0131n\u0131 arka planda s\u00fcrekli \u00e7al\u0131\u015f\u0131r halde tutar, \u00e7\u00f6kmelerde otomatik yeniden ba\u015flatma ve y\u00fck dengeleme gibi \u00f6zellikler sunar.<\/li>\n<li><strong>PHP Tabanl\u0131 Sunucular (PHP-FPM):<\/strong> Laravel, Symfony gibi PHP \u00e7er\u00e7eveleri i\u00e7in tasarlanm\u0131\u015ft\u0131r. Apache veya Nginx ile h\u0131zl\u0131 PHP i\u015fleme yetene\u011fi sa\u011flar.<\/li>\n<\/ul>\n<p><strong>Ubuntu 24.04<\/strong>, bu sunucu t\u00fcrlerinin hemen hemen tamam\u0131n\u0131 sorunsuz bir \u015fekilde bar\u0131nd\u0131rabilen, modern, kararl\u0131 ve g\u00fc\u00e7l\u00fc bir i\u015fletim sistemidir. LTS (Uzun S\u00fcreli Destek) s\u00fcr\u00fcm\u00fc olmas\u0131, uzun vadeli g\u00fcvenilirlik ve g\u00fcvenlik g\u00fcncellemeleri anlam\u0131na gelir. Bu da onu \u00fcretim ortamlar\u0131 i\u00e7in cazip bir se\u00e7enek haline getirir. Geli\u015fmi\u015f \u00e7ekirdek deste\u011fi, g\u00fcncel paket depolar\u0131 ve geni\u015f topluluk deste\u011fi sayesinde, kar\u015f\u0131la\u015fabilece\u011finiz her t\u00fcrl\u00fc soruna h\u0131zl\u0131ca \u00e7\u00f6z\u00fcm bulabilirsiniz.<\/p>\n<div class=\"case-study\">\n<h3>Vaka Analizi: Startup&#8217;\u0131n \u0130lk Ad\u0131mlar\u0131 ve Uygulama Sunucusu Se\u00e7imi<\/h3>\n<p>Gen\u00e7 bir startup olan &#8220;YemekSepetiClone&#8221;, yeni nesil yemek da\u011f\u0131t\u0131m platformunu geli\u015ftiriyor. Uygulama, Python (Django) ve Node.js (ger\u00e7ek zamanl\u0131 bildirimler i\u00e7in) teknolojilerini kullan\u0131yor. Ba\u015flang\u0131\u00e7ta tek bir sunucu \u00fczerinde t\u00fcm altyap\u0131y\u0131 kurmak istiyorlar. Bu durumda, Ubuntu 24.04 \u00fczerinde Nginx&#8217;i ters proxy olarak konumland\u0131r\u0131p, Django uygulamas\u0131 i\u00e7in Gunicorn&#8217;u, Node.js bildirim servisi i\u00e7in ise PM2&#8217;yi kullanmak mant\u0131kl\u0131 bir se\u00e7im olacakt\u0131r. Nginx, hem statik dosyalar\u0131 servis edecek hem de gelen istekleri do\u011fru uygulama sunucusuna y\u00f6nlendirerek y\u00fck dengelemesi ve SSL sonland\u0131rmas\u0131 gibi g\u00f6revleri \u00fcstlenecektir. Bu yap\u0131land\u0131rma, uygulaman\u0131n farkl\u0131 bile\u015fenlerini izole etmeye ve her birinin kendi ortam\u0131nda en iyi performans\u0131 g\u00f6stermesine olanak tan\u0131r.<\/p>\n<\/p><\/div>\n<h2>Ubuntu 24.04 Ortam\u0131n\u0131 Haz\u0131rlama: Ad\u0131m Ad\u0131m Sunucu Kurulumu<\/h2>\n<p>Uygulama sunucunuzu kurmaya ba\u015flamadan \u00f6nce, Ubuntu 24.04 i\u015fletim sistemini bar\u0131nd\u0131ran sunucunuzu do\u011fru bir \u015fekilde haz\u0131rlamak kritik \u00f6neme sahiptir. Bu haz\u0131rl\u0131k ad\u0131mlar\u0131, hem sistemin g\u00fcvenli\u011fini hem de gelecekteki performans\u0131n\u0131 do\u011frudan etkileyecektir.<\/p>\n<h3>Sistem G\u00fcncellemeleri ve Temel G\u00fcvenlik Ad\u0131mlar\u0131<\/h3>\n<p>Yeni bir Ubuntu kurulumundan sonra yap\u0131lmas\u0131 gereken ilk \u015fey, sistemin g\u00fcncel oldu\u011fundan emin olmakt\u0131r. Bu, hem g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131n kapat\u0131lmas\u0131na hem de en yeni yaz\u0131l\u0131m s\u00fcr\u00fcmlerine eri\u015fmenize olanak tan\u0131r.<\/p>\n<p>Terminali a\u00e7\u0131n ve a\u015fa\u011f\u0131daki komutlar\u0131 \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">\nsudo apt update\nsudo apt upgrade -y\nsudo apt autoremove -y\n  <\/code><\/pre>\n<ul>\n<li><code>sudo apt update<\/code>: Paket listelerini g\u00fcnceller.<\/li>\n<li><code>sudo apt upgrade -y<\/code>: Mevcut paketleri y\u00fckseltir. <code>-y<\/code> parametresi, t\u00fcm sorulara otomatik olarak &#8220;evet&#8221; yan\u0131t\u0131 verir.<\/li>\n<li><code>sudo apt autoremove -y<\/code>: Art\u0131k ihtiya\u00e7 duyulmayan ba\u011f\u0131ml\u0131l\u0131klar\u0131 ve eski \u00e7ekirdekleri temizler.<\/li>\n<\/ul>\n<h3>G\u00fcvenli SSH Eri\u015fimi ve Kullan\u0131c\u0131 Y\u00f6netimi<\/h3>\n<p>Varsay\u0131lan olarak, \u00e7o\u011fu bulut sa\u011flay\u0131c\u0131s\u0131 veya sanal makine kurulumu, <code>root<\/code> kullan\u0131c\u0131s\u0131 ile SSH eri\u015fimine izin verir. Ancak bu, g\u00fcvenlik a\u00e7\u0131s\u0131ndan \u00f6nerilmez. Bunun yerine, sudo yetkilerine sahip yeni bir kullan\u0131c\u0131 olu\u015fturmal\u0131 ve <code>root<\/code> ile do\u011frudan SSH eri\u015fimini devre d\u0131\u015f\u0131 b\u0131rakmal\u0131s\u0131n\u0131z.<\/p>\n<p>Yeni bir kullan\u0131c\u0131 olu\u015fturmak i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">\nsudo adduser [kullanici_adi]\nsudo usermod -aG sudo [kullanici_adi]\n  <\/code><\/pre>\n<p>Kullan\u0131c\u0131n\u0131z i\u00e7in g\u00fc\u00e7l\u00fc bir parola belirledikten sonra, onu <code>sudo<\/code> grubuna ekleyerek y\u00f6netimsel ayr\u0131cal\u0131klar vermi\u015f olursunuz. Art\u0131k bu yeni kullan\u0131c\u0131 ile SSH yapabilir ve <code>sudo<\/code> komutunu kullanarak root ayr\u0131cal\u0131klar\u0131yla komutlar\u0131 \u00e7al\u0131\u015ft\u0131rabilirsiniz. Bu, yanl\u0131\u015fl\u0131kla sistem dosyalar\u0131n\u0131 bozma riskini azalt\u0131r.<\/p>\n<p>SSH g\u00fcvenli\u011fini art\u0131rmak i\u00e7in:<\/p>\n<ol>\n<li><strong>Parola yerine SSH anahtarlar\u0131 kullan\u0131n:<\/strong> Bu, \u00e7ok daha g\u00fcvenli bir kimlik do\u011frulama y\u00f6ntemidir. Yerel makinenizde bir SSH anahtar \u00e7ifti olu\u015fturun ve genel anahtar\u0131n\u0131z\u0131 sunucunuzdaki <code>~\/.ssh\/authorized_keys<\/code> dosyas\u0131na ekleyin.<\/li>\n<li><strong>SSH portunu de\u011fi\u015ftirin:<\/strong> Varsay\u0131lan 22 numaral\u0131 port yerine farkl\u0131 bir port kullanmak, otomatik sald\u0131r\u0131 giri\u015fimlerini azaltabilir. <code>\/etc\/ssh\/sshd_config<\/code> dosyas\u0131n\u0131 d\u00fczenleyerek <code>Port 22<\/code> sat\u0131r\u0131n\u0131 de\u011fi\u015ftirin.<\/li>\n<li><strong>Root ile SSH eri\u015fimini devre d\u0131\u015f\u0131 b\u0131rak\u0131n:<\/strong> Ayn\u0131 dosyada <code>PermitRootLogin yes<\/code> sat\u0131r\u0131n\u0131 <code>PermitRootLogin no<\/code> olarak de\u011fi\u015ftirin.<\/li>\n<li><strong>Parola ile kimlik do\u011frulamay\u0131 devre d\u0131\u015f\u0131 b\u0131rak\u0131n (iste\u011fe ba\u011fl\u0131 ama \u00f6nerilir):<\/strong> E\u011fer SSH anahtarlar\u0131n\u0131 kullan\u0131yorsan\u0131z, <code>PasswordAuthentication yes<\/code> sat\u0131r\u0131n\u0131 <code>PasswordAuthentication no<\/code> olarak ayarlayarak parola tabanl\u0131 giri\u015fleri engelleyebilirsiniz.<\/li>\n<\/ol>\n<p>De\u011fi\u015fikliklerden sonra SSH servisini yeniden ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">\nsudo systemctl restart sshd\n  <\/code><\/pre>\n<h3>G\u00fcvenlik Duvar\u0131 Yap\u0131land\u0131rmas\u0131 (UFW)<\/h3>\n<p>Ubuntu&#8217;da UFW (Uncomplicated Firewall), sunucunuza gelen ve giden trafi\u011fi y\u00f6netmek i\u00e7in kullan\u0131c\u0131 dostu bir aray\u00fcz sa\u011flar. Sadece gerekli portlar\u0131 a\u00e7arak sunucunuzu d\u0131\u015far\u0131dan gelebilecek sald\u0131r\u0131lara kar\u015f\u0131 koruyabilirsiniz.<\/p>\n<pre><code class=\"language-bash\">\nsudo ufw allow OpenSSH  # SSH eri\u015fimine izin ver\nsudo ufw allow http     # HTTP (80) portuna izin ver\nsudo ufw allow https    # HTTPS (443) portuna izin ver\nsudo ufw enable         # G\u00fcvenlik duvar\u0131n\u0131 etkinle\u015ftir\nsudo ufw status         # G\u00fcvenlik duvar\u0131 durumunu kontrol et\n  <\/code><\/pre>\n<p>E\u011fer SSH portunu de\u011fi\u015ftirdiyseniz, <code>OpenSSH<\/code> yerine yeni port numaras\u0131n\u0131 belirtmeniz gerekir: <code>sudo ufw allow [yeni_ssh_portu]\/tcp<\/code>.<\/p>\n<h3>Zaman Dilimi ve Yerel Ayarlar<\/h3>\n<p>Sunucunuzun do\u011fru zaman dilimine ayarlanmas\u0131, loglar\u0131n do\u011fru tutulmas\u0131 ve zaman bazl\u0131 i\u015flemlerin (\u00f6rne\u011fin cron i\u015fleri) d\u00fczg\u00fcn \u00e7al\u0131\u015fmas\u0131 i\u00e7in \u00f6nemlidir.<\/p>\n<pre><code class=\"language-bash\">\nsudo timedatectl set-timezone Europe\/Istanbul # Kendi zaman diliminizi ayarlay\u0131n\ntimedatectl                                   # Ayarlar\u0131 kontrol edin\n  <\/code><\/pre>\n<p>Yerel ayarlar (locale) ise, sistem mesajlar\u0131n\u0131n ve programlar\u0131n dilini, karakter setini ve di\u011fer b\u00f6lgesel ayarlar\u0131 belirler. Genellikle varsay\u0131lan ayarlar yeterli olsa da, belirli uygulamalar i\u00e7in \u00f6zel bir locale gerekebilir.<\/p>\n<div class=\"case-study\">\n<h3>Vaka Analizi: Yanl\u0131\u015f Yap\u0131land\u0131r\u0131lm\u0131\u015f Sunucunun Riskleri<\/h3>\n<p>Bir yaz\u0131l\u0131m firmas\u0131, yeni m\u00fc\u015fterisi i\u00e7in acilen bir test sunucusu kurmak zorundayd\u0131. H\u0131zl\u0131 davranmak ad\u0131na, sistem g\u00fcncellemelerini atlad\u0131lar, root ile SSH eri\u015fimini a\u00e7\u0131k b\u0131rakt\u0131lar ve g\u00fcvenlik duvar\u0131n\u0131 hi\u00e7 yap\u0131land\u0131rmad\u0131lar. Birka\u00e7 hafta sonra, sunucuya d\u0131\u015far\u0131dan s\u0131z\u0131ld\u0131\u011f\u0131 ve k\u00f6t\u00fc ama\u00e7l\u0131 yaz\u0131l\u0131mlar\u0131n y\u00fcklendi\u011fi fark edildi. Bu durum, hem firman\u0131n itibar\u0131n\u0131 zedeledi hem de m\u00fc\u015fteri verilerinin tehlikeye girmesine neden oldu. Bu \u00f6rnek, yukar\u0131daki temel haz\u0131rl\u0131k ad\u0131mlar\u0131n\u0131n ne kadar kritik oldu\u011funu a\u00e7\u0131k\u00e7a g\u00f6stermektedir. Her ad\u0131m, potansiyel bir g\u00fcvenlik a\u00e7\u0131\u011f\u0131n\u0131 kapat\u0131r ve sunucunun genel sa\u011fl\u0131\u011f\u0131n\u0131 iyile\u015ftirir.<\/p>\n<\/p><\/div>\n<h2>Nginx ile G\u00fc\u00e7l\u00fc Bir Ters Proxy ve Statik \u0130\u00e7erik Sunucusu Nas\u0131l Kurulur?<\/h2>\n<p>Nginx (Engine-X olarak telaffuz edilir), y\u00fcksek performansl\u0131, hafif ve esnek bir web sunucusu ve ters proxy \u00e7\u00f6z\u00fcm\u00fcd\u00fcr. Modern web mimarilerinin vazge\u00e7ilmez bir par\u00e7as\u0131 haline gelmi\u015ftir. Peki, Nginx&#8217;in rol\u00fc nedir ve neden onu kullanmal\u0131y\u0131z?<\/p>\n<p>Nginx, uygulama sunucunuzun \u00f6n\u00fcnde bir &#8220;ters proxy&#8221; (reverse proxy) g\u00f6revi g\u00f6rerek gelen t\u00fcm web isteklerini kar\u015f\u0131lar. Bu, Nginx&#8217;in bir\u00e7ok avantaj sunmas\u0131n\u0131 sa\u011flar:<\/p>\n<ul>\n<li><strong>Y\u00fck Dengeleme:<\/strong> Birden fazla uygulama sunucusu \u00f6rne\u011fi \u00e7al\u0131\u015ft\u0131r\u0131yorsan\u0131z, Nginx gelen istekleri bu sunucular aras\u0131nda da\u011f\u0131tarak y\u00fck\u00fc dengeleyebilir ve performans\u0131 art\u0131rabilir.<\/li>\n<li><strong>SSL\/TLS Sonland\u0131rma:<\/strong> SSL sertifikalar\u0131n\u0131 Nginx \u00fczerinde y\u00f6neterek, uygulama sunucunuzun bu y\u00fckten kurtulmas\u0131n\u0131 sa\u011flar. Bu, uygulaman\u0131z\u0131n performans\u0131n\u0131 art\u0131r\u0131r ve SSL yap\u0131land\u0131rmas\u0131n\u0131 merkezile\u015ftirir.<\/li>\n<li><strong>Statik \u0130\u00e7erik Sunma:<\/strong> Resimler, CSS, JavaScript gibi statik dosyalar\u0131 do\u011frudan Nginx \u00fczerinden sunarak, uygulama sunucunuzun daha \u00e7ok dinamik i\u00e7erik \u00fcretimine odaklanmas\u0131na olanak tan\u0131r. Bu, genel yan\u0131t s\u00fcresini \u00f6nemli \u00f6l\u00e7\u00fcde h\u0131zland\u0131r\u0131r.<\/li>\n<li><strong>\u00d6nbellekleme:<\/strong> S\u0131k\u00e7a istenen i\u00e7erikleri \u00f6nbelle\u011fe alarak sunucu y\u00fck\u00fcn\u00fc azalt\u0131r ve yan\u0131t s\u00fcrelerini iyile\u015ftirir.<\/li>\n<li><strong>G\u00fcvenlik:<\/strong> Temel d\u00fczeyde DDoS korumas\u0131 sa\u011flayabilir ve uygulaman\u0131z\u0131 do\u011frudan internete maruz kalmaktan korur.<\/li>\n<\/ul>\n<h3>Nginx Kurulumu<\/h3>\n<p>Ubuntu 24.04 \u00fczerinde Nginx kurulumu olduk\u00e7a basittir:<\/p>\n<pre><code class=\"language-bash\">\nsudo apt update\nsudo apt install nginx -y\n  <\/code><\/pre>\n<p>Kurulum tamamland\u0131ktan sonra, Nginx servisi otomatik olarak ba\u015flar. Durumunu kontrol etmek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">\nsudo systemctl status nginx\n  <\/code><\/pre>\n<p>Taray\u0131c\u0131n\u0131zda sunucunuzun IP adresini veya alan ad\u0131n\u0131 ziyaret etti\u011finizde &#8220;Welcome to Nginx!&#8221; sayfas\u0131n\u0131 g\u00f6rmelisiniz. E\u011fer g\u00f6rm\u00fcyorsan\u0131z, g\u00fcvenlik duvar\u0131n\u0131z\u0131 (UFW) kontrol etti\u011finizden ve HTTP (80) portuna izin verdi\u011finizden emin olun.<\/p>\n<h3>Temel Nginx Yap\u0131land\u0131rmas\u0131 ve Sanal Hostlar<\/h3>\n<p>Nginx&#8217;in ana yap\u0131land\u0131rma dosyas\u0131 <code>\/etc\/nginx\/nginx.conf<\/code> adresindedir. Ancak, her site veya uygulama i\u00e7in ayr\u0131 yap\u0131land\u0131rma dosyalar\u0131 olu\u015fturmak ve bunlar\u0131 <code>sites-available<\/code> dizininde tutmak daha iyi bir uygulamad\u0131r. Daha sonra, etkinle\u015ftirmek istedi\u011finiz yap\u0131land\u0131rmalar\u0131 <code>sites-enabled<\/code> dizinine sembolik link (symlink) ile ba\u011flars\u0131n\u0131z.<\/p>\n<p>Yeni bir site yap\u0131land\u0131rma dosyas\u0131 olu\u015ftural\u0131m (\u00f6rne\u011fin, <code>\/etc\/nginx\/sites-available\/uygulamam<\/code>):<\/p>\n<pre><code class=\"language-nginx\">\n# \/etc\/nginx\/sites-available\/uygulamam\nserver {\n    listen 80;\n    server_name www.ornekuygulama.com ornekuygulama.com; # Alan ad\u0131n\u0131z\u0131 buraya yaz\u0131n\n\n    root \/var\/www\/ornekuygulama; # Statik dosyalar\u0131n\u0131z\u0131n yolu\n    index index.html index.htm;\n\n    location \/ {\n        try_files $uri $uri\/ =404;\n    }\n\n    # Hata sayfalar\u0131\n    error_page 404 \/404.html;\n    location = \/404.html {\n        internal;\n    }\n\n    error_page 500 502 503 504 \/50x.html;\n    location = \/50x.html {\n        internal;\n    }\n}\n  <\/code><\/pre>\n<p>Bu \u00f6rnek, temel bir statik web sitesi yap\u0131land\u0131rmas\u0131d\u0131r. <code>root<\/code> direktifi, Nginx&#8217;in statik dosyalar\u0131 nerede arayaca\u011f\u0131n\u0131 belirtir. <code>server_name<\/code> ise, bu yap\u0131land\u0131rman\u0131n hangi alan adlar\u0131 i\u00e7in ge\u00e7erli oldu\u011funu tan\u0131mlar.<\/p>\n<p>Yap\u0131land\u0131rmay\u0131 etkinle\u015ftirmek i\u00e7in bir sembolik link olu\u015fturun ve Nginx&#8217;i yeniden y\u00fckleyin:<\/p>\n<pre><code class=\"language-bash\">\nsudo ln -s \/etc\/nginx\/sites-available\/uygulamam \/etc\/nginx\/sites-enabled\/\nsudo nginx -t # Yap\u0131land\u0131rma dosyas\u0131nda hata olup olmad\u0131\u011f\u0131n\u0131 kontrol et\nsudo systemctl restart nginx\n  <\/code><\/pre>\n<div class=\"expert-tip\">\n<h3>Uzman \u0130pucu: Nginx ile Performans\u0131 Art\u0131r\u0131n<\/h3>\n<p>Nginx yap\u0131land\u0131rman\u0131zda <code>gzip on;<\/code> ekleyerek s\u0131k\u0131\u015ft\u0131rmay\u0131 etkinle\u015ftirebilir, b\u00f6ylece bant geni\u015fli\u011fi kullan\u0131m\u0131n\u0131 azaltabilir ve sayfa y\u00fckleme s\u00fcrelerini h\u0131zland\u0131rabilirsiniz. Ayr\u0131ca, <code>expires<\/code> direktiflerini kullanarak taray\u0131c\u0131 \u00f6nbelleklemesini optimize edebilirsiniz. \u00d6rne\u011fin, statik dosyalar i\u00e7in <code>expires 30d;<\/code> eklemek, kullan\u0131c\u0131lar\u0131n bu dosyalar\u0131 30 g\u00fcn boyunca yerel olarak \u00f6nbelle\u011fe almas\u0131n\u0131 sa\u011flar.<\/p>\n<\/p><\/div>\n<div class=\"case-study\">\n<h3>Vaka Analizi: E-ticaret Sitesinin Y\u00fck Problemleri<\/h3>\n<p>K\u00fc\u00e7\u00fck bir e-ticaret sitesi, Black Friday indirimleri s\u0131ras\u0131nda a\u015f\u0131r\u0131 y\u00fck nedeniyle \u00e7\u00f6kmeye ba\u015flad\u0131. Uygulama sunucusu, hem dinamik i\u00e7erik \u00fcretmek hem de binlerce statik \u00fcr\u00fcn g\u00f6rselini ayn\u0131 anda sunmaya \u00e7al\u0131\u015f\u0131yordu. \u00c7\u00f6z\u00fcm olarak, Nginx bir ters proxy olarak yap\u0131land\u0131r\u0131ld\u0131. T\u00fcm statik dosyalar (resimler, CSS, JS) do\u011frudan Nginx taraf\u0131ndan servis edildi ve Nginx&#8217;in \u00f6nbellekleme \u00f6zellikleri etkinle\u015ftirildi. Gelen dinamik istekler ise Nginx taraf\u0131ndan uygulama sunucusuna y\u00f6nlendirildi. Bu de\u011fi\u015fiklik sayesinde, uygulama sunucusu \u00fczerindeki y\u00fck %60 oran\u0131nda azald\u0131 ve site yo\u011fun trafik alt\u0131nda bile kesintisiz hizmet vermeye devam etti. Bu, Nginx&#8217;in do\u011fru yap\u0131land\u0131rmayla nas\u0131l bir performans cankurtaran\u0131 olabilece\u011finin m\u00fckemmel bir \u00f6rne\u011fidir.<\/p>\n<\/p><\/div>\n<h2>Node.js Uygulamas\u0131n\u0131 Da\u011f\u0131tma ve PM2 ile Y\u00f6netme: Bir \u00d6rnek Uygulama<\/h2>\n<p>Node.js, sunucu taraf\u0131nda JavaScript \u00e7al\u0131\u015ft\u0131rman\u0131za olanak tan\u0131yan g\u00fc\u00e7l\u00fc bir \u00e7al\u0131\u015fma zaman\u0131 ortam\u0131d\u0131r. H\u0131zl\u0131 ve \u00f6l\u00e7eklenebilir web uygulamalar\u0131 geli\u015ftirmek i\u00e7in pop\u00fcler bir tercihtir. Ancak, bir Node.js uygulamas\u0131n\u0131 \u00fcretim ortam\u0131nda g\u00fcvenilir bir \u015fekilde \u00e7al\u0131\u015ft\u0131rmak, sadece <code>node app.js<\/code> komutunu \u00e7al\u0131\u015ft\u0131rmaktan daha fazlas\u0131n\u0131 gerektirir. \u0130\u015fte burada PM2 gibi bir s\u00fcre\u00e7 y\u00f6neticisi devreye girer.<\/p>\n<h3>Node.js Kurulumu (NVM ile \u00d6nerilir)<\/h3>\n<p>Node.js&#8217;i do\u011frudan Ubuntu&#8217;nun paket y\u00f6neticisinden kurmak m\u00fcmk\u00fcn olsa da, NVM (Node Version Manager) kullanmak, farkl\u0131 Node.js s\u00fcr\u00fcmleri aras\u0131nda kolayca ge\u00e7i\u015f yapman\u0131z\u0131 ve projelerinize \u00f6zel s\u00fcr\u00fcmleri y\u00f6netmenizi sa\u011flar. Bu, \u00f6zellikle birden fazla Node.js projesi \u00e7al\u0131\u015ft\u0131r\u0131yorsan\u0131z \u00e7ok faydal\u0131d\u0131r.<\/p>\n<p>NVM&#8217;yi kurmak i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">\ncurl -o- https:\/\/raw.githubusercontent.com\/nvm-sh\/nvm\/v0.39.7\/install.sh | bash\n  <\/code><\/pre>\n<p>Kurulumdan sonra terminali kapat\u0131p yeniden a\u00e7man\u0131z veya a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131rman\u0131z gerekebilir:<\/p>\n<pre><code class=\"language-bash\">\nsource ~\/.bashrc # veya ~\/.zshrc e\u011fer zsh kullan\u0131yorsan\u0131z\n  <\/code><\/pre>\n<p>\u015eimdi NVM&#8217;yi kullanarak Node.js&#8217;in en son LTS (Uzun S\u00fcreli Destek) s\u00fcr\u00fcm\u00fcn\u00fc kurabiliriz:<\/p>\n<pre><code class=\"language-bash\">\nnvm install --lts\nnvm use --lts\nnode -v # Y\u00fckl\u00fc Node.js s\u00fcr\u00fcm\u00fcn\u00fc kontrol edin\nnpm -v  # Y\u00fckl\u00fc NPM s\u00fcr\u00fcm\u00fcn\u00fc kontrol edin\n  <\/code><\/pre>\n<h3>Basit Bir Node.js Uygulamas\u0131 Olu\u015fturma<\/h3>\n<p>\u00d6rnek olarak, &#8220;Merhaba D\u00fcnya&#8221; d\u00f6nd\u00fcren basit bir Express.js uygulamas\u0131 olu\u015ftural\u0131m. \u0130lk olarak, projeniz i\u00e7in bir dizin olu\u015fturun ve i\u00e7ine girin:<\/p>\n<pre><code class=\"language-bash\">\nmkdir ~\/my_nodejs_app\ncd ~\/my_nodejs_app\nnpm init -y\nnpm install express\n  <\/code><\/pre>\n<p>\u015eimdi <code>app.js<\/code> ad\u0131nda bir dosya olu\u015fturun ve a\u015fa\u011f\u0131daki kodu i\u00e7ine yap\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-javascript\">\n\/\/ ~\/my_nodejs_app\/app.js\nconst express = require('express');\nconst app = express();\nconst port = 3000; \/\/ Uygulaman\u0131z\u0131n \u00e7al\u0131\u015faca\u011f\u0131 port\n\napp.get('\/', (req, res) => {\n  res.send('Merhaba Ubuntu 24.04 Uygulama Sunucusu!');\n});\n\napp.listen(port, () => {\n  console.log(<code class=\"language-\">Uygulama http:\/\/localhost:${port} adresinde \u00e7al\u0131\u015f\u0131yor<\/code>);\n});\n  <\/code><\/pre>\n<p>Uygulaman\u0131z\u0131 manuel olarak test etmek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">\nnode app.js\n  <\/code><\/pre>\n<p>Ancak bu, uygulamay\u0131 arka planda \u00e7al\u0131\u015ft\u0131rmaz ve terminali kapatt\u0131\u011f\u0131n\u0131zda durur. \u0130\u015fte burada PM2 devreye giriyor.<\/p>\n<h3>PM2 ile Node.js Uygulamalar\u0131n\u0131 Y\u00f6netme<\/h3>\n<p>PM2 (Process Manager 2), Node.js uygulamalar\u0131n\u0131 \u00fcretim ortam\u0131nda s\u00fcrekli \u00e7al\u0131\u015f\u0131r halde tutmak, izlemek ve y\u00f6netmek i\u00e7in tasarlanm\u0131\u015f bir s\u00fcre\u00e7 y\u00f6neticisidir. Sundu\u011fu ba\u015fl\u0131ca \u00f6zellikler:<\/p>\n<ul>\n<li><strong>Otomatik Yeniden Ba\u015flatma:<\/strong> Uygulama \u00e7\u00f6kt\u00fc\u011f\u00fcnde veya beklenmedik bir \u015fekilde durdu\u011funda otomatik olarak yeniden ba\u015flat\u0131r.<\/li>\n<li><strong>S\u00fcre\u00e7 Y\u00f6netimi:<\/strong> Uygulaman\u0131z\u0131 arka planda \u00e7al\u0131\u015ft\u0131r\u0131r, terminali kapatsan\u0131z bile aktif kalmas\u0131n\u0131 sa\u011flar.<\/li>\n<li><strong>Y\u00fck Dengeleme:<\/strong> Birden fazla CPU \u00e7ekirde\u011finden yararlanmak i\u00e7in uygulaman\u0131z\u0131n birden fazla \u00f6rne\u011fini \u00e7al\u0131\u015ft\u0131rabilir.<\/li>\n<li><strong>\u0130zleme:<\/strong> CPU, bellek kullan\u0131m\u0131, loglar gibi metrikleri izlemek i\u00e7in kullan\u0131\u015fl\u0131 komutlar sunar.<\/li>\n<li><strong>Ba\u015flang\u0131\u00e7 Betikleri:<\/strong> Sunucu yeniden ba\u015flat\u0131ld\u0131\u011f\u0131nda uygulamalar\u0131n\u0131z\u0131n otomatik olarak ba\u015flamas\u0131n\u0131 sa\u011flar.<\/li>\n<\/ul>\n<h4>PM2 Kurulumu ve Uygulamay\u0131 Ba\u015flatma<\/h4>\n<pre><code class=\"language-bash\">\nnpm install pm2 -g\npm2 start ~\/my_nodejs_app\/app.js --name \"my-ubuntu-app\"\n  <\/code><\/pre>\n<ul>\n<li><code>pm2 start app.js<\/code>: Uygulaman\u0131z\u0131 PM2 ile ba\u015flat\u0131r.<\/li>\n<li><code>--name \"my-ubuntu-app\"<\/code>: Uygulaman\u0131za kolayca tan\u0131nabilir bir isim verir.<\/li>\n<\/ul>\n<p>PM2&#8217;nin durumunu kontrol etmek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">\npm2 list\npm2 monit # Ger\u00e7ek zamanl\u0131 izleme\npm2 logs my-ubuntu-app # Uygulaman\u0131n loglar\u0131n\u0131 g\u00f6r\u00fcnt\u00fcleme\n  <\/code><\/pre>\n<p>Sunucu yeniden ba\u015flat\u0131ld\u0131\u011f\u0131nda uygulamalar\u0131n\u0131z\u0131n otomatik olarak ba\u015flamas\u0131 i\u00e7in ba\u015flang\u0131\u00e7 betikleri olu\u015fturun:<\/p>\n<pre><code class=\"language-bash\">\npm2 startup systemd\npm2 save # Mevcut PM2 s\u00fcre\u00e7lerini kaydet\n  <\/code><\/pre>\n<p>Bu komutlar, sisteminizin init sistemi (Ubuntu&#8217;da Systemd) i\u00e7in bir PM2 ba\u015flang\u0131\u00e7 beti\u011fi olu\u015fturacak ve mevcut t\u00fcm PM2 s\u00fcre\u00e7lerinizi kaydederek sunucu yeniden ba\u015flat\u0131ld\u0131\u011f\u0131nda otomatik olarak ba\u015flamalar\u0131n\u0131 sa\u011flayacakt\u0131r.<\/p>\n<h3>Nginx&#8217;i Node.js Uygulamas\u0131na Ters Proxy Olarak Ba\u011flama<\/h3>\n<p>\u015eimdi Nginx&#8217;i, Node.js uygulaman\u0131zdan gelen istekleri dinlemesi ve uygulaman\u0131za y\u00f6nlendirmesi i\u00e7in yap\u0131land\u0131ral\u0131m. Nginx yap\u0131land\u0131rma dosyan\u0131z\u0131 (<code>\/etc\/nginx\/sites-available\/uygulamam<\/code>) a\u015fa\u011f\u0131daki gibi g\u00fcncelleyin:<\/p>\n<pre><code class=\"language-nginx\">\n# \/etc\/nginx\/sites-available\/uygulamam\nserver {\n    listen 80;\n    server_name www.ornekuygulama.com ornekuygulama.com; # Alan ad\u0131n\u0131z\u0131 buraya yaz\u0131n\n\n    location \/ {\n        proxy_pass http:\/\/localhost:3000; # Node.js uygulaman\u0131z\u0131n \u00e7al\u0131\u015ft\u0131\u011f\u0131 adres ve port\n        proxy_http_version 1.1;\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Connection 'upgrade';\n        proxy_set_header Host $host;\n        proxy_cache_bypass $http_upgrade;\n    }\n\n    # Statik dosyalar\u0131n\u0131z varsa, onlar\u0131 do\u011frudan Nginx'ten sunmak i\u00e7in\n    # location \/static\/ {\n    #     alias \/path\/to\/your\/nodejs\/app\/public\/static\/;\n    #     expires 30d;\n    #     add_header Cache-Control \"public, no-transform\";\n    # }\n}\n  <\/code><\/pre>\n<p>Yap\u0131land\u0131rmay\u0131 test edin ve Nginx&#8217;i yeniden ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">\nsudo nginx -t\nsudo systemctl restart nginx\n  <\/code><\/pre>\n<p>Art\u0131k alan ad\u0131n\u0131z\u0131 veya sunucu IP adresinizi taray\u0131c\u0131n\u0131zda ziyaret etti\u011finizde, Nginx iste\u011fi Node.js uygulaman\u0131za iletecek ve uygulaman\u0131z\u0131n yan\u0131t\u0131n\u0131 g\u00f6receksiniz. Bu yap\u0131land\u0131rma, uygulaman\u0131z\u0131 do\u011frudan internete maruz b\u0131rakmadan g\u00fcvenli ve performansl\u0131 bir \u015fekilde yay\u0131nlaman\u0131z\u0131 sa\u011flar.<\/p>\n<div class=\"case-study\">\n<h3>Vaka Analizi: PM2 ile Kesintisiz Da\u011f\u0131t\u0131m<\/h3>\n<p>Bir SaaS \u015firketi, m\u00fc\u015fterilerine 7\/24 hizmet veren bir Node.js tabanl\u0131 API geli\u015ftiriyordu. Yeni \u00f6zellikler veya hata d\u00fczeltmeleri yay\u0131nland\u0131\u011f\u0131nda, geleneksel y\u00f6ntemlerle uygulamay\u0131 durdurup yeniden ba\u015flatmak, k\u0131sa s\u00fcreli de olsa hizmet kesintilerine yol a\u00e7\u0131yordu. Bu, kurumsal m\u00fc\u015fteriler i\u00e7in kabul edilemezdi. PM2&#8217;nin &#8220;zero-downtime deployment&#8221; (s\u0131f\u0131r kesintiyle da\u011f\u0131t\u0131m) \u00f6zelli\u011fi sayesinde, yeni kod da\u011f\u0131t\u0131ld\u0131\u011f\u0131nda PM2 eski uygulama s\u00fcre\u00e7lerini yava\u015f\u00e7a sonland\u0131r\u0131rken, yeni s\u00fcre\u00e7leri ba\u015flat\u0131yor ve trafik yeni versiyona sorunsuz bir \u015fekilde y\u00f6nlendiriliyordu. Bu sayede, m\u00fc\u015fteriler hi\u00e7bir kesinti ya\u015famadan g\u00fcncellenmi\u015f API&#8217;yi kullanmaya devam edebildiler, bu da m\u00fc\u015fteri memnuniyetini ve hizmet kalitesini \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131rd\u0131.<\/p>\n<\/p><\/div>\n<h2>G\u00fcvenli\u011fi S\u0131k\u0131la\u015ft\u0131rma: SSL\/TLS ve G\u00fcvenlik Duvar\u0131 Yap\u0131land\u0131rmas\u0131<\/h2>\n<p>Uygulaman\u0131z\u0131n yay\u0131nda olmas\u0131 harika, ancak g\u00fcvenlik olmadan bir web uygulamas\u0131, a\u00e7\u0131k kap\u0131 b\u0131rak\u0131lm\u0131\u015f bir eve benzer. Kullan\u0131c\u0131 verilerinin korunmas\u0131, veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fcn sa\u011flanmas\u0131 ve arama motoru s\u0131ralamalar\u0131nda iyi bir yer edinmek i\u00e7in SSL\/TLS \u015fifrelemesi ve sa\u011flam bir g\u00fcvenlik duvar\u0131 yap\u0131land\u0131rmas\u0131 olmazsa olmazd\u0131r.<\/p>\n<h3>SSL\/TLS ile HTTPS Etkinle\u015ftirme (Certbot ve Let&#8217;s Encrypt)<\/h3>\n<p>SSL\/TLS (Secure Sockets Layer\/Transport Layer Security), sunucu ile istemci (taray\u0131c\u0131) aras\u0131ndaki t\u00fcm ileti\u015fimi \u015fifreleyen bir protokold\u00fcr. Bu, \u00f6zellikle hassas verilerin (parolalar, kredi kart\u0131 bilgileri) aktar\u0131ld\u0131\u011f\u0131 e-ticaret siteleri veya giri\u015f panelleri i\u00e7in kritik \u00f6neme sahiptir. HTTPS, ayn\u0131 zamanda SEO i\u00e7in de \u00f6nemli bir s\u0131ralama fakt\u00f6r\u00fcd\u00fcr.<\/p>\n<p>Let&#8217;s Encrypt, \u00fccretsiz, otomatik ve a\u00e7\u0131k bir Sertifika Yetkilisi (CA) olup, web siteniz i\u00e7in kolayca SSL\/TLS sertifikalar\u0131 alman\u0131z\u0131 sa\u011flar. Certbot ise, Let&#8217;s Encrypt sertifikalar\u0131n\u0131 otomatik olarak al\u0131p yap\u0131land\u0131ran bir ara\u00e7t\u0131r.<\/p>\n<h4>Certbot Kurulumu ve Sertifika Alma<\/h4>\n<p>Certbot&#8217;u Nginx ile kullanmak i\u00e7in a\u015fa\u011f\u0131daki ad\u0131mlar\u0131 izleyin:<\/p>\n<pre><code class=\"language-bash\">\nsudo snap install core; sudo snap refresh core\nsudo snap install --classic certbot\nsudo ln -s \/snap\/bin\/certbot \/usr\/bin\/certbot\nsudo certbot --nginx -d ornekuygulama.com -d www.ornekuygulama.com\n  <\/code><\/pre>\n<ul>\n<li><code>sudo snap install core; sudo snap refresh core<\/code>: Snap paket y\u00f6neticisini g\u00fcnceller.<\/li>\n<li><code>sudo snap install --classic certbot<\/code>: Certbot&#8217;u y\u00fckler.<\/li>\n<li><code>sudo ln -s \/snap\/bin\/certbot \/usr\/bin\/certbot<\/code>: Certbot komutunu sistem PATH&#8217;ine ekler.<\/li>\n<li><code>sudo certbot --nginx -d ornekuygulama.com -d www.ornekuygulama.com<\/code>: Nginx i\u00e7in sertifika al\u0131r ve Nginx yap\u0131land\u0131rman\u0131z\u0131 otomatik olarak g\u00fcnceller. Alan adlar\u0131n\u0131z\u0131 (<code>-d<\/code> parametresi ile) do\u011fru \u015fekilde belirtti\u011finizden emin olun.<\/li>\n<\/ul>\n<p>Certbot, size baz\u0131 sorular soracakt\u0131r (e-posta adresi, hizmet \u015fartlar\u0131n\u0131 kabul etme, HTTP trafi\u011fini HTTPS&#8217;e y\u00f6nlendirme isteyip istemedi\u011finiz gibi). Genellikle, t\u00fcm HTTP trafi\u011fini HTTPS&#8217;e y\u00f6nlendirmeyi se\u00e7mek en iyi uygulamad\u0131r.<\/p>\n<h4>Sertifika Yenileme<\/h4>\n<p>Let&#8217;s Encrypt sertifikalar\u0131 90 g\u00fcn ge\u00e7erlidir. Certbot, bu sertifikalar\u0131 otomatik olarak yenilemek i\u00e7in bir cron i\u015fi veya systemd zamanlay\u0131c\u0131s\u0131 ayarlar. Yenileme i\u015flemini manuel olarak test edebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">\nsudo certbot renew --dry-run\n  <\/code><\/pre>\n<p>Bu komut, sertifikalar\u0131n ba\u015far\u0131yla yenilenece\u011fini do\u011frular.<\/p>\n<h3>Geli\u015fmi\u015f G\u00fcvenlik Duvar\u0131 Yap\u0131land\u0131rmas\u0131 (UFW)<\/h3>\n<p>Daha \u00f6nce temel UFW kurallar\u0131n\u0131 ayarlam\u0131\u015ft\u0131k. \u015eimdi, uygulaman\u0131z\u0131n ihtiya\u00e7lar\u0131na g\u00f6re daha spesifik kurallar ekleyebiliriz. \u00d6rne\u011fin, veritaban\u0131n\u0131z sadece uygulama sunucunuzdan eri\u015filebilir olmal\u0131ysa, veritaban\u0131 portunu sadece belirli IP adreslerine a\u00e7abilirsiniz.<\/p>\n<pre><code class=\"language-bash\">\n# E\u011fer veritaban\u0131 sunucunuz farkl\u0131 bir IP'deyse ve sadece oradan eri\u015fim istiyorsan\u0131z\n# sudo ufw allow from [veritabani_sunucusu_ip_adresi] to any port 5432 # PostgreSQL i\u00e7in\n# sudo ufw allow from [veritabani_sunucusu_ip_adresi] to any port 3306 # MySQL i\u00e7in\n\n# Nginx'in 80 ve 443 portlar\u0131n\u0131 zaten a\u00e7m\u0131\u015ft\u0131k.\n# E\u011fer ba\u015fka bir uygulama belirli bir portta \u00e7al\u0131\u015f\u0131yorsa ve d\u0131\u015far\u0131dan eri\u015filebilir olmas\u0131 gerekiyorsa:\n# sudo ufw allow 8080\/tcp # \u00d6rnek bir uygulama portu\nsudo ufw status verbose\n  <\/code><\/pre>\n<p>Unutmay\u0131n, g\u00fcvenlik duvar\u0131 kurallar\u0131n\u0131 uygularken dikkatli olun. Yanl\u0131\u015f bir kural, sunucunuza eri\u015fimi tamamen engelleyebilir. Her zaman SSH ba\u011flant\u0131n\u0131z\u0131n a\u00e7\u0131k oldu\u011fundan emin olun veya bir konsol eri\u015fimine sahip olun.<\/p>\n<div class=\"case-study\">\n<h3>Vaka Analizi: SSL Olmadan \u00c7al\u0131\u015fan Bir E-ticaret Sitesinin Riskleri<\/h3>\n<p>K\u00fc\u00e7\u00fck bir online butik, ba\u015flang\u0131\u00e7ta SSL sertifikas\u0131 kullanmadan faaliyet g\u00f6steriyordu. M\u00fc\u015fteriler \u00fcr\u00fcnleri sepete ekleyebiliyor ve \u00f6deme sayfas\u0131na gidebiliyorlard\u0131. Ancak, \u00f6deme s\u0131ras\u0131nda kredi kart\u0131 bilgilerini girerken taray\u0131c\u0131lar &#8220;G\u00fcvenli De\u011fil&#8221; uyar\u0131s\u0131 veriyordu. Bu durum, m\u00fc\u015fterilerin g\u00fcvenini sars\u0131yor ve sepet terk oranlar\u0131n\u0131 art\u0131r\u0131yordu. Dahas\u0131, arama motorlar\u0131 bu siteyi HTTPS kullanan rakiplerine g\u00f6re daha alt s\u0131ralarda g\u00f6steriyordu. Site sahibi, Certbot ile \u00fccretsiz SSL kurduktan sonra, hem m\u00fc\u015fteri g\u00fcveninde hem de arama motoru s\u0131ralamalar\u0131nda belirgin bir iyile\u015fme g\u00f6zlemledi. Bu, SSL&#8217;in sadece g\u00fcvenlik i\u00e7in de\u011fil, i\u015f s\u00fcreklili\u011fi ve b\u00fcy\u00fcmesi i\u00e7in de ne kadar kritik oldu\u011funun bir kan\u0131t\u0131d\u0131r.<\/p>\n<\/p><\/div>\n<h2>Performans Optimizasyonu ve \u0130leri D\u00fczey Yap\u0131land\u0131rma \u0130pu\u00e7lar\u0131<\/h2>\n<p>Uygulama sunucunuzu temel olarak kurup yap\u0131land\u0131rd\u0131n\u0131z. \u015eimdi s\u0131ra, performans\u0131 art\u0131rmak, kaynak kullan\u0131m\u0131n\u0131 optimize etmek ve daha sa\u011flam bir altyap\u0131 olu\u015fturmak i\u00e7in ileri d\u00fczey ipu\u00e7lar\u0131na ve en iyi uygulamalara geldi. K\u00fc\u00e7\u00fck optimizasyonlar bile, \u00f6zellikle y\u00fcksek trafikli uygulamalarda b\u00fcy\u00fck fark yaratabilir.<\/p>\n<h3>Nginx Optimizasyonlar\u0131<\/h3>\n<p>Nginx, do\u011fru yap\u0131land\u0131r\u0131ld\u0131\u011f\u0131nda muazzam bir performans sunar.<\/p>\n<ul>\n<li><strong>GZIP S\u0131k\u0131\u015ft\u0131rma:<\/strong> Web sayfalar\u0131n\u0131n, CSS ve JavaScript dosyalar\u0131n\u0131n boyutunu k\u00fc\u00e7\u00fclterek bant geni\u015fli\u011fi kullan\u0131m\u0131n\u0131 azalt\u0131r ve y\u00fckleme s\u00fcrelerini h\u0131zland\u0131r\u0131r.\n<pre><code class=\"language-nginx\">\n# \/etc\/nginx\/nginx.conf i\u00e7inde http blo\u011funa ekleyin\ngzip on;\ngzip_vary on;\ngzip_proxied any;\ngzip_comp_level 6;\ngzip_types text\/plain text\/css application\/json application\/javascript text\/xml application\/xml application\/xml+rss text\/javascript;\n      <\/code><\/pre>\n<\/li>\n<li><strong>HTTP\/2 Etkinle\u015ftirme:<\/strong> HTTP\/2, web performans\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131ran daha modern bir protokold\u00fcr. Nginx&#8217;te HTTPS ile birlikte etkinle\u015ftirilir. SSL yap\u0131land\u0131rman\u0131zda <code>listen 443 ssl http2;<\/code> \u015feklinde belirtmeniz yeterlidir.<\/li>\n<li><strong>\u00d6nbellekleme (Caching):<\/strong> S\u0131k\u00e7a istenen statik dosyalar\u0131 (resimler, CSS, JS) veya hatta dinamik yan\u0131tlar\u0131 Nginx \u00fczerinde \u00f6nbelle\u011fe alarak uygulama sunucusuna olan y\u00fck\u00fc azaltabilirsiniz.\n<pre><code class=\"language-nginx\">\n# \/etc\/nginx\/nginx.conf i\u00e7inde http blo\u011funa ekleyin\nproxy_cache_path \/var\/cache\/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m max_size=1g;\n\n# site yap\u0131land\u0131rman\u0131zda (server blo\u011fu i\u00e7inde)\nlocation \/ {\n    proxy_cache my_cache;\n    proxy_cache_valid 200 302 10m;\n    proxy_cache_valid 404 1m;\n    proxy_cache_key \"$scheme$request_method$host$request_uri\";\n    add_header X-Cache-Status $upstream_cache_status;\n    proxy_pass http:\/\/localhost:3000;\n    # ... di\u011fer proxy ayarlar\u0131 ...\n}\n      <\/code><\/pre>\n<p>Bu \u00f6rnek, dinamik i\u00e7erik i\u00e7in temel bir \u00f6nbellekleme ayar\u0131 g\u00f6sterir. Dikkatli kullan\u0131lmal\u0131 ve uygulaman\u0131z\u0131n dinamik yap\u0131s\u0131na g\u00f6re ayarlanmal\u0131d\u0131r.<\/p>\n<\/li>\n<\/ul>\n<h3>Sunucu Kaynak \u0130zleme ve Log Y\u00f6netimi<\/h3>\n<p>Sunucunuzun performans\u0131n\u0131 anlamak ve olas\u0131 sorunlar\u0131 tespit etmek i\u00e7in kaynak kullan\u0131m\u0131n\u0131 izlemek hayati \u00f6neme sahiptir.<\/p>\n<ul>\n<li><strong>CPU ve Bellek \u0130zleme:<\/strong> <code>htop<\/code>, <code>top<\/code>, <code>free -h<\/code> gibi komutlarla anl\u0131k CPU, bellek ve s\u00fcre\u00e7 kullan\u0131m\u0131n\u0131 takip edebilirsiniz. Daha geli\u015fmi\u015f izleme i\u00e7in Prometheus, Grafana gibi ara\u00e7lar kullan\u0131labilir.<\/li>\n<li><strong>Disk Kullan\u0131m\u0131:<\/strong> <code>df -h<\/code> komutu ile disk alan\u0131 kullan\u0131m\u0131n\u0131 kontrol edin. Disk dolulu\u011fu performans\u0131 ciddi \u015fekilde etkileyebilir.<\/li>\n<li><strong>Log Y\u00f6netimi:<\/strong> Uygulama ve sunucu loglar\u0131, sorun giderme ve g\u00fcvenlik analizi i\u00e7in paha bi\u00e7ilmezdir. <code>logrotate<\/code> arac\u0131, log dosyalar\u0131n\u0131n boyutunu y\u00f6netmek ve diskte yer kaplamalar\u0131n\u0131 \u00f6nlemek i\u00e7in kullan\u0131l\u0131r. Nginx ve di\u011fer servisler i\u00e7in varsay\u0131lan olarak yap\u0131land\u0131r\u0131lm\u0131\u015ft\u0131r, ancak uygulaman\u0131z\u0131n loglar\u0131 i\u00e7in de \u00f6zel kurallar ekleyebilirsiniz.<\/li>\n<\/ul>\n<h3>Otomatik Da\u011f\u0131t\u0131m (CI\/CD) Entegrasyonuna Giri\u015f<\/h3>\n<p>Manuel olarak uygulama da\u011f\u0131t\u0131m\u0131 yapmak zaman al\u0131c\u0131 ve hataya a\u00e7\u0131kt\u0131r. CI\/CD (S\u00fcrekli Entegrasyon\/S\u00fcrekli Da\u011f\u0131t\u0131m) boru hatlar\u0131, kod de\u011fi\u015fikliklerinin otomatik olarak test edilmesini, derlenmesini ve \u00fcretim sunucular\u0131na da\u011f\u0131t\u0131lmas\u0131n\u0131 sa\u011flar. GitHub Actions, GitLab CI\/CD, Jenkins gibi ara\u00e7lar, bu s\u00fcre\u00e7leri otomatikle\u015ftirmek i\u00e7in kullan\u0131labilir.<\/p>\n<p>Basit bir da\u011f\u0131t\u0131m senaryosunda, kodunuzu bir Git deposuna (\u00f6rne\u011fin GitHub) push yapt\u0131\u011f\u0131n\u0131zda, bir CI\/CD arac\u0131 otomatik olarak tetiklenir, testleri \u00e7al\u0131\u015ft\u0131r\u0131r, uygulaman\u0131z\u0131 derler ve SSH arac\u0131l\u0131\u011f\u0131yla sunucunuza ba\u011flanarak yeni kodu \u00e7eker, ba\u011f\u0131ml\u0131l\u0131klar\u0131 y\u00fckler ve PM2 gibi bir s\u00fcre\u00e7 y\u00f6neticisi arac\u0131l\u0131\u011f\u0131yla uygulaman\u0131z\u0131 yeniden ba\u015flat\u0131r (veya s\u0131f\u0131r kesintiyle g\u00fcnceller).<\/p>\n<h3>Konteynerizasyon (Docker) ve Sanalla\u015ft\u0131rma (VM)<\/h3>\n<p>Uygulama sunucusu yap\u0131land\u0131rmalar\u0131n\u0131 daha esnek ve ta\u015f\u0131nabilir hale getirmek i\u00e7in konteynerizasyon ve sanalla\u015ft\u0131rma teknolojileri kullan\u0131labilir:<\/p>\n<ul>\n<li><strong>Sanalla\u015ft\u0131rma (VM):<\/strong> Bir fiziksel sunucu \u00fczerinde birden fazla izole i\u015fletim sistemi \u00e7al\u0131\u015ft\u0131rman\u0131za olanak tan\u0131r. Her VM&#8217;nin kendi \u00e7ekirde\u011fi, i\u015fletim sistemi ve kaynaklar\u0131 vard\u0131r. Daha fazla izolasyon sa\u011flar ancak kaynak t\u00fcketimi daha y\u00fcksektir.<\/li>\n<li><strong>Konteynerizasyon (Docker):<\/strong> Uygulaman\u0131z\u0131 t\u00fcm ba\u011f\u0131ml\u0131l\u0131klar\u0131yla birlikte hafif, ta\u015f\u0131nabilir bir &#8220;konteyner&#8221; i\u00e7inde paketler. Konteynerler, ana bilgisayar\u0131n \u00e7ekirde\u011fini payla\u015f\u0131r ve VM&#8217;lere g\u00f6re daha az kaynak t\u00fcketir, daha h\u0131zl\u0131 ba\u015flar ve daha kolay \u00f6l\u00e7eklenir. Uygulama sunucusu kurulumu, bir Docker imaj\u0131 i\u00e7inde tan\u0131mlanabilir ve bu imaj her yerde ayn\u0131 \u015fekilde \u00e7al\u0131\u015f\u0131r. Bu, &#8220;benim makinemde \u00e7al\u0131\u015f\u0131yordu&#8221; sorununu ortadan kald\u0131r\u0131r.<\/li>\n<\/ul>\n<p>Gelecekteki projelerinizde Docker ve Docker Compose gibi ara\u00e7lar\u0131 kullanarak uygulama sunucusu ortam\u0131n\u0131z\u0131 daha mod\u00fcler ve y\u00f6netilebilir hale getirmeyi d\u00fc\u015f\u00fcnebilirsiniz.<\/p>\n<div class=\"expert-tip\">\n<h3>Uzman \u0130pucu: Monit\u00f6rleme ve Uyar\u0131 Sistemleri<\/h3>\n<p>Uygulama sunucunuzun sa\u011fl\u0131\u011f\u0131n\u0131 ve performans\u0131n\u0131 s\u00fcrekli izlemek i\u00e7in Prometheus, Grafana, ELK Stack (Elasticsearch, Logstash, Kibana) gibi ara\u00e7lar\u0131 kurmay\u0131 d\u00fc\u015f\u00fcn\u00fcn. Bu sistemler, kritik metriklerde anormal durumlar olu\u015ftu\u011funda size otomatik olarak bildirim g\u00f6ndererek proaktif bir \u015fekilde sorunlar\u0131 \u00e7\u00f6zmenize yard\u0131mc\u0131 olur. \u00d6rne\u011fin, CPU kullan\u0131m\u0131 %90&#8217;\u0131 a\u015ft\u0131\u011f\u0131nda veya bellek t\u00fckenmeye ba\u015flad\u0131\u011f\u0131nda SMS veya e-posta ile uyar\u0131 alabilirsiniz.<\/p>\n<\/p><\/div>\n<h2>Sonu\u00e7: Uygulama Sunucunuz Art\u0131k Yay\u0131nda!<\/h2>\n<p>Bu kapsaml\u0131 rehber boyunca, Ubuntu 24.04 \u00fczerinde sa\u011flam ve g\u00fcvenilir bir uygulama sunucusu kurmak ve yap\u0131land\u0131rmak i\u00e7in gerekli t\u00fcm ad\u0131mlar\u0131 detayl\u0131 bir \u015fekilde inceledik. \u0130lk olarak, sisteminizi g\u00fcncelleyerek ve temel g\u00fcvenlik \u00f6nlemlerini alarak sa\u011flam bir zemin haz\u0131rlad\u0131k. Ard\u0131ndan, Nginx&#8217;i g\u00fc\u00e7l\u00fc bir ters proxy ve statik i\u00e7erik sunucusu olarak yap\u0131land\u0131rarak uygulaman\u0131z\u0131n \u00f6n\u00fcnde bir kalkan olu\u015fturduk. Node.js uygulaman\u0131z\u0131 PM2 ile y\u00f6netmeyi \u00f6\u011frenerek, uygulaman\u0131z\u0131n s\u00fcrekli ve kesintisiz \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flad\u0131k. Son olarak, SSL\/TLS \u015fifrelemesi ve g\u00fcvenlik duvar\u0131 ayarlar\u0131yla g\u00fcvenli\u011fi s\u0131k\u0131la\u015ft\u0131r\u0131rken, performans optimizasyonlar\u0131 ve ileri d\u00fczey ipu\u00e7lar\u0131yla sunucunuzu daha verimli hale getirdik.<\/p>\n<p>Art\u0131k uygulaman\u0131z, internet d\u00fcnyas\u0131nda g\u00fcvenle yerini almaya haz\u0131r. Unutmay\u0131n ki sunucu y\u00f6netimi s\u00fcrekli bir s\u00fcre\u00e7tir. G\u00fcvenlik g\u00fcncellemelerini takip etmek, loglar\u0131 d\u00fczenli olarak kontrol etmek ve performans\u0131 izlemek, uygulaman\u0131z\u0131n uzun \u00f6m\u00fcrl\u00fc ve sorunsuz \u00e7al\u0131\u015fmas\u0131 i\u00e7in kritik \u00f6neme sahiptir. Bu rehber, size g\u00fc\u00e7l\u00fc bir ba\u015flang\u0131\u00e7 noktas\u0131 sunarken, teknoloji d\u00fcnyas\u0131ndaki yenilikleri takip ederek ve \u00f6\u011frendiklerinizi uygulayarak bilginizi s\u00fcrekli geni\u015fletmeniz gerekti\u011fini hat\u0131rlat\u0131r. Ba\u015far\u0131lar dileriz!<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<h4>Uygulama sunucusu ve web sunucusu aras\u0131ndaki temel fark nedir?<\/h4>\n<p><strong>Cevap:<\/strong> Web sunucusu (\u00f6rne\u011fin Nginx, Apache HTTP Server), statik dosyalar\u0131 (HTML, CSS, JS, resimler) do\u011frudan istemcilere sunmak veya dinamik i\u00e7erik isteklerini uygulama sunucusuna y\u00f6nlendirmekle sorumludur. Uygulama sunucusu ise (\u00f6rne\u011fin Node.js, Gunicorn, Tomcat), gelen dinamik istekleri i\u015fler, veritabanlar\u0131yla etkile\u015fime girer, i\u015f mant\u0131\u011f\u0131n\u0131 y\u00fcr\u00fct\u00fcr ve dinamik i\u00e7erik (HTML par\u00e7alar\u0131, JSON verisi) \u00fcretir. Genellikle bir web sunucusu, uygulama sunucusunun \u00f6n\u00fcnde bir ters proxy olarak g\u00f6rev yapar.<\/p>\n<h4>Neden Nginx kullanmal\u0131y\u0131m? Apache&#8217;den fark\u0131 ne?<\/h4>\n<p><strong>Cevap:<\/strong> Nginx, y\u00fcksek e\u015fzamanl\u0131 ba\u011flant\u0131lar\u0131 (concurrent connections) daha az bellek t\u00fcketimiyle y\u00f6netme konusunda Apache&#8217;ye g\u00f6re genellikle daha performansl\u0131d\u0131r. \u00d6zellikle statik i\u00e7erik sunumu ve ters proxy olarak kullan\u0131ld\u0131\u011f\u0131nda Nginx \u00f6ne \u00e7\u0131kar. Apache ise daha mod\u00fcler bir yap\u0131ya sahiptir ve <code>.htaccess<\/code> dosyalar\u0131 gibi dizin bazl\u0131 yap\u0131land\u0131rmalarla esneklik sunar. \u00c7o\u011fu modern web uygulamas\u0131 mimarisinde, Nginx ters proxy olarak kullan\u0131l\u0131rken, dinamik i\u00e7erik i\u015fleme uygulama sunucular\u0131na b\u0131rak\u0131l\u0131r.<\/p>\n<h4>PM2 yerine ba\u015fka bir s\u00fcre\u00e7 y\u00f6neticisi kullanabilir miyim?<\/h4>\n<p><strong>Cevap:<\/strong> Evet, PM2 Node.js i\u00e7in pop\u00fcler bir se\u00e7enek olsa da, Forever, Supervisor gibi ba\u015fka s\u00fcre\u00e7 y\u00f6neticileri de mevcuttur. Ayr\u0131ca, Systemd gibi i\u015fletim sistemi d\u00fczeyindeki init sistemlerini do\u011frudan kullanarak da uygulaman\u0131z\u0131 bir servis olarak \u00e7al\u0131\u015ft\u0131rabilirsiniz. PM2, \u00f6zellik zenginli\u011fi (izleme, y\u00fck dengeleme, ba\u015flang\u0131\u00e7 betikleri) nedeniyle genellikle tercih edilir.<\/p>\n<h4>Ubuntu 24.04&#8217;te g\u00fcvenlik g\u00fcncellemelerini nas\u0131l takip etmeliyim?<\/h4>\n<p><strong>Cevap:<\/strong> G\u00fcvenlik g\u00fcncellemelerini d\u00fczenli olarak <code>sudo apt update && sudo apt upgrade -y<\/code> komutlar\u0131yla manuel olarak yapabilirsiniz. Daha otomatize bir yakla\u015f\u0131m i\u00e7in, Ubuntu&#8217;nun <code>unattended-upgrades<\/code> paketini kurarak kritik g\u00fcvenlik g\u00fcncellemelerinin otomatik olarak y\u00fcklenmesini sa\u011flayabilirsiniz. Bu, sunucunuzun her zaman g\u00fcncel kalmas\u0131na yard\u0131mc\u0131 olurken, manuel m\u00fcdahale ihtiyac\u0131n\u0131 azalt\u0131r.<\/p>\n<h4>Uygulama sunucumu \u00f6l\u00e7eklendirmek i\u00e7in ne yapmal\u0131y\u0131m?<\/h4>\n<p><strong>Cevap:<\/strong> Uygulama sunucunuzu \u00f6l\u00e7eklendirmenin iki ana yolu vard\u0131r:<\/p>\n<ol>\n<li><strong>Dikey \u00d6l\u00e7eklendirme (Vertical Scaling):<\/strong> Mevcut sunucunuzun CPU, RAM veya disk kapasitesini art\u0131rmakt\u0131r. Daha g\u00fc\u00e7l\u00fc bir sunucuya ge\u00e7i\u015f yapars\u0131n\u0131z.<\/li>\n<li><strong>Yatay \u00d6l\u00e7eklendirme (Horizontal Scaling):<\/strong> Uygulaman\u0131z\u0131n birden fazla kopyas\u0131n\u0131 farkl\u0131 sunucularda veya konteynerlerde \u00e7al\u0131\u015ft\u0131r\u0131p, bir y\u00fck dengeleyici (\u00f6rne\u011fin Nginx veya \u00f6zel bir y\u00fck dengeleyici hizmeti) arac\u0131l\u0131\u011f\u0131yla gelen trafi\u011fi bu kopyalar aras\u0131nda da\u011f\u0131tmakt\u0131r. Bu y\u00f6ntem, daha y\u00fcksek eri\u015filebilirlik ve daha iyi performans sa\u011flar. PM2&#8217;nin k\u00fcme modu (cluster mode) da tek bir sunucu \u00fczerinde yatay \u00f6l\u00e7eklendirmeye benzer bir etki yarat\u0131r.<\/li>\n<\/ol>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Ubuntu 24.04&#8217;te Uygulama Sunucusu Kurulumu ve Yap\u0131land\u0131rmas\u0131 Uygulamalar\u0131n\u0131z\u0131 D\u00fcnyaya A\u00e7maya Haz\u0131r m\u0131s\u0131n\u0131z? Ubuntu 24.04&#8217;te Uygulama Sunucusu Kurulumu Modern&hellip;","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-36531","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>Uygulamalar\u0131n\u0131z\u0131 D\u00fcnyaya A\u00e7maya Haz\u0131r m\u0131s\u0131n\u0131z? Ubuntu 24.04&#039;te Uygulama Sunucusu Kurulumu<\/title>\n<meta name=\"description\" content=\"Modern web uygulamalar\u0131 geli\u015ftirdiniz, ancak bu harika projeleri internet kullan\u0131c\u0131lar\u0131yla nas\u0131l bulu\u015fturaca\u011f\u0131n\u0131z\u0131 m\u0131 merak ediyorsunuz? Uygulama sunucular\u0131, kodunuzu canl\u0131 bir ortama ta\u015f\u0131man\u0131n ve kesintisiz bir kullan\u0131c\u0131 deneyimi sunman\u0131n temel ta\u015f\u0131d\u0131r. Bu kapsaml\u0131 rehberde, Ubuntu 24.04 i\u015fletim sistemi \u00fczerinde g\u00fc\u00e7l\u00fc ve g\u00fcvenilir bir uygulama sunucusunu s\u0131f\u0131rdan nas\u0131l kurup yap\u0131land\u0131raca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m ke\u015ffedece\u011fiz.\" \/>\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\/uygulamalarinizi-dunyaya-acmaya-hazir-misiniz-ubuntu-24-04te-uygulama-sunucusu-kurulumu\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Uygulamalar\u0131n\u0131z\u0131 D\u00fcnyaya A\u00e7maya Haz\u0131r m\u0131s\u0131n\u0131z? Ubuntu 24.04&#039;te Uygulama Sunucusu Kurulumu\" \/>\n<meta property=\"og:description\" content=\"Modern web uygulamalar\u0131 geli\u015ftirdiniz, ancak bu harika projeleri internet kullan\u0131c\u0131lar\u0131yla nas\u0131l bulu\u015fturaca\u011f\u0131n\u0131z\u0131 m\u0131 merak ediyorsunuz? Uygulama sunucular\u0131, kodunuzu canl\u0131 bir ortama ta\u015f\u0131man\u0131n ve kesintisiz bir kullan\u0131c\u0131 deneyimi sunman\u0131n temel ta\u015f\u0131d\u0131r. Bu kapsaml\u0131 rehberde, Ubuntu 24.04 i\u015fletim sistemi \u00fczerinde g\u00fc\u00e7l\u00fc ve g\u00fcvenilir bir uygulama sunucusunu s\u0131f\u0131rdan nas\u0131l kurup yap\u0131land\u0131raca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m ke\u015ffedece\u011fiz.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/uygulamalarinizi-dunyaya-acmaya-hazir-misiniz-ubuntu-24-04te-uygulama-sunucusu-kurulumu\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-19T09:21:17+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=\"29 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/uygulamalarinizi-dunyaya-acmaya-hazir-misiniz-ubuntu-24-04te-uygulama-sunucusu-kurulumu\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/uygulamalarinizi-dunyaya-acmaya-hazir-misiniz-ubuntu-24-04te-uygulama-sunucusu-kurulumu\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Uygulamalar\u0131n\u0131z\u0131 D\u00fcnyaya A\u00e7maya Haz\u0131r m\u0131s\u0131n\u0131z? Ubuntu 24.04&#8217;te Uygulama Sunucusu Kurulumu\",\"datePublished\":\"2025-12-19T09:21:17+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/uygulamalarinizi-dunyaya-acmaya-hazir-misiniz-ubuntu-24-04te-uygulama-sunucusu-kurulumu\/\"},\"wordCount\":5009,\"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\/uygulamalarinizi-dunyaya-acmaya-hazir-misiniz-ubuntu-24-04te-uygulama-sunucusu-kurulumu\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/uygulamalarinizi-dunyaya-acmaya-hazir-misiniz-ubuntu-24-04te-uygulama-sunucusu-kurulumu\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/uygulamalarinizi-dunyaya-acmaya-hazir-misiniz-ubuntu-24-04te-uygulama-sunucusu-kurulumu\/\",\"name\":\"Uygulamalar\u0131n\u0131z\u0131 D\u00fcnyaya A\u00e7maya Haz\u0131r m\u0131s\u0131n\u0131z? Ubuntu 24.04'te Uygulama Sunucusu Kurulumu\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-12-19T09:21:17+00:00\",\"description\":\"Modern web uygulamalar\u0131 geli\u015ftirdiniz, ancak bu harika projeleri internet kullan\u0131c\u0131lar\u0131yla nas\u0131l bulu\u015fturaca\u011f\u0131n\u0131z\u0131 m\u0131 merak ediyorsunuz? Uygulama sunucular\u0131, kodunuzu canl\u0131 bir ortama ta\u015f\u0131man\u0131n ve kesintisiz bir kullan\u0131c\u0131 deneyimi sunman\u0131n temel ta\u015f\u0131d\u0131r. Bu kapsaml\u0131 rehberde, Ubuntu 24.04 i\u015fletim sistemi \u00fczerinde g\u00fc\u00e7l\u00fc ve g\u00fcvenilir bir uygulama sunucusunu s\u0131f\u0131rdan nas\u0131l kurup yap\u0131land\u0131raca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m ke\u015ffedece\u011fiz.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/uygulamalarinizi-dunyaya-acmaya-hazir-misiniz-ubuntu-24-04te-uygulama-sunucusu-kurulumu\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/uygulamalarinizi-dunyaya-acmaya-hazir-misiniz-ubuntu-24-04te-uygulama-sunucusu-kurulumu\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/uygulamalarinizi-dunyaya-acmaya-hazir-misiniz-ubuntu-24-04te-uygulama-sunucusu-kurulumu\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Uygulamalar\u0131n\u0131z\u0131 D\u00fcnyaya A\u00e7maya Haz\u0131r m\u0131s\u0131n\u0131z? Ubuntu 24.04&#8217;te Uygulama Sunucusu Kurulumu\"}]},{\"@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":"Uygulamalar\u0131n\u0131z\u0131 D\u00fcnyaya A\u00e7maya Haz\u0131r m\u0131s\u0131n\u0131z? Ubuntu 24.04'te Uygulama Sunucusu Kurulumu","description":"Modern web uygulamalar\u0131 geli\u015ftirdiniz, ancak bu harika projeleri internet kullan\u0131c\u0131lar\u0131yla nas\u0131l bulu\u015fturaca\u011f\u0131n\u0131z\u0131 m\u0131 merak ediyorsunuz? Uygulama sunucular\u0131, kodunuzu canl\u0131 bir ortama ta\u015f\u0131man\u0131n ve kesintisiz bir kullan\u0131c\u0131 deneyimi sunman\u0131n temel ta\u015f\u0131d\u0131r. Bu kapsaml\u0131 rehberde, Ubuntu 24.04 i\u015fletim sistemi \u00fczerinde g\u00fc\u00e7l\u00fc ve g\u00fcvenilir bir uygulama sunucusunu s\u0131f\u0131rdan nas\u0131l kurup yap\u0131land\u0131raca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m ke\u015ffedece\u011fiz.","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\/uygulamalarinizi-dunyaya-acmaya-hazir-misiniz-ubuntu-24-04te-uygulama-sunucusu-kurulumu\/","og_locale":"tr_TR","og_type":"article","og_title":"Uygulamalar\u0131n\u0131z\u0131 D\u00fcnyaya A\u00e7maya Haz\u0131r m\u0131s\u0131n\u0131z? Ubuntu 24.04'te Uygulama Sunucusu Kurulumu","og_description":"Modern web uygulamalar\u0131 geli\u015ftirdiniz, ancak bu harika projeleri internet kullan\u0131c\u0131lar\u0131yla nas\u0131l bulu\u015fturaca\u011f\u0131n\u0131z\u0131 m\u0131 merak ediyorsunuz? Uygulama sunucular\u0131, kodunuzu canl\u0131 bir ortama ta\u015f\u0131man\u0131n ve kesintisiz bir kullan\u0131c\u0131 deneyimi sunman\u0131n temel ta\u015f\u0131d\u0131r. Bu kapsaml\u0131 rehberde, Ubuntu 24.04 i\u015fletim sistemi \u00fczerinde g\u00fc\u00e7l\u00fc ve g\u00fcvenilir bir uygulama sunucusunu s\u0131f\u0131rdan nas\u0131l kurup yap\u0131land\u0131raca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m ke\u015ffedece\u011fiz.","og_url":"https:\/\/fatihsoysal.com\/blog\/uygulamalarinizi-dunyaya-acmaya-hazir-misiniz-ubuntu-24-04te-uygulama-sunucusu-kurulumu\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-12-19T09:21:17+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"29 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/uygulamalarinizi-dunyaya-acmaya-hazir-misiniz-ubuntu-24-04te-uygulama-sunucusu-kurulumu\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/uygulamalarinizi-dunyaya-acmaya-hazir-misiniz-ubuntu-24-04te-uygulama-sunucusu-kurulumu\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Uygulamalar\u0131n\u0131z\u0131 D\u00fcnyaya A\u00e7maya Haz\u0131r m\u0131s\u0131n\u0131z? Ubuntu 24.04&#8217;te Uygulama Sunucusu Kurulumu","datePublished":"2025-12-19T09:21:17+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/uygulamalarinizi-dunyaya-acmaya-hazir-misiniz-ubuntu-24-04te-uygulama-sunucusu-kurulumu\/"},"wordCount":5009,"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\/uygulamalarinizi-dunyaya-acmaya-hazir-misiniz-ubuntu-24-04te-uygulama-sunucusu-kurulumu\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/uygulamalarinizi-dunyaya-acmaya-hazir-misiniz-ubuntu-24-04te-uygulama-sunucusu-kurulumu\/","url":"https:\/\/fatihsoysal.com\/blog\/uygulamalarinizi-dunyaya-acmaya-hazir-misiniz-ubuntu-24-04te-uygulama-sunucusu-kurulumu\/","name":"Uygulamalar\u0131n\u0131z\u0131 D\u00fcnyaya A\u00e7maya Haz\u0131r m\u0131s\u0131n\u0131z? Ubuntu 24.04'te Uygulama Sunucusu Kurulumu","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-12-19T09:21:17+00:00","description":"Modern web uygulamalar\u0131 geli\u015ftirdiniz, ancak bu harika projeleri internet kullan\u0131c\u0131lar\u0131yla nas\u0131l bulu\u015fturaca\u011f\u0131n\u0131z\u0131 m\u0131 merak ediyorsunuz? Uygulama sunucular\u0131, kodunuzu canl\u0131 bir ortama ta\u015f\u0131man\u0131n ve kesintisiz bir kullan\u0131c\u0131 deneyimi sunman\u0131n temel ta\u015f\u0131d\u0131r. Bu kapsaml\u0131 rehberde, Ubuntu 24.04 i\u015fletim sistemi \u00fczerinde g\u00fc\u00e7l\u00fc ve g\u00fcvenilir bir uygulama sunucusunu s\u0131f\u0131rdan nas\u0131l kurup yap\u0131land\u0131raca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m ke\u015ffedece\u011fiz.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/uygulamalarinizi-dunyaya-acmaya-hazir-misiniz-ubuntu-24-04te-uygulama-sunucusu-kurulumu\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/uygulamalarinizi-dunyaya-acmaya-hazir-misiniz-ubuntu-24-04te-uygulama-sunucusu-kurulumu\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/uygulamalarinizi-dunyaya-acmaya-hazir-misiniz-ubuntu-24-04te-uygulama-sunucusu-kurulumu\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Uygulamalar\u0131n\u0131z\u0131 D\u00fcnyaya A\u00e7maya Haz\u0131r m\u0131s\u0131n\u0131z? Ubuntu 24.04&#8217;te Uygulama Sunucusu Kurulumu"}]},{"@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\/36531","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=36531"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/36531\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=36531"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=36531"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=36531"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}