{"id":33498,"date":"2025-11-03T16:23:03","date_gmt":"2025-11-03T13:23:03","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/giris-neden-lemp-stacke-ihtiyac-duyarsiniz\/"},"modified":"2025-11-03T16:23:03","modified_gmt":"2025-11-03T13:23:03","slug":"giris-neden-lemp-stacke-ihtiyac-duyarsiniz","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/giris-neden-lemp-stacke-ihtiyac-duyarsiniz\/","title":{"rendered":"Giri\u015f: Neden LEMP Stack&#8217;e \u0130htiya\u00e7 Duyars\u0131n\u0131z?"},"content":{"rendered":"<p><title>Ubuntu&#8217;da LEMP Stack Kurulumu: Ad\u0131m Ad\u0131m Rehber<\/title><br \/>\n<body><\/p>\n<p>Web uygulamalar\u0131n\u0131z\u0131 veya sitelerinizi yay\u0131nlamak i\u00e7in g\u00fc\u00e7l\u00fc ve esnek bir altyap\u0131 m\u0131 ar\u0131yorsunuz? Ubuntu sunucunuzda Linux, Nginx, MySQL ve PHP (LEMP) stack&#8217;ini nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 \u00f6\u011frenin. Bu kapsaml\u0131 rehber, s\u0131f\u0131rdan ba\u015flayarak web projelerinizi h\u0131zla yay\u0131na alman\u0131z\u0131 sa\u011flayacak, performans ipu\u00e7lar\u0131 ve s\u0131k\u00e7a sorulan sorularla dolu.<\/p>\n<h2>Giri\u015f: Neden LEMP Stack&#8217;e \u0130htiya\u00e7 Duyars\u0131n\u0131z?<\/h2>\n<p>G\u00fcn\u00fcm\u00fcz\u00fcn dijital d\u00fcnyas\u0131nda, h\u0131zl\u0131, g\u00fcvenli ve \u00f6l\u00e7eklenebilir web uygulamalar\u0131 geli\u015ftirmek ve yay\u0131nlamak her zamankinden daha kritik. Bir web sitesi veya dinamik bir uygulama bar\u0131nd\u0131rmak istedi\u011finizde, arka planda \u00e7al\u0131\u015fan bir dizi teknolojiye ihtiya\u00e7 duyars\u0131n\u0131z. \u0130\u015fte tam da bu noktada LEMP stack devreye giriyor. Peki, nedir bu LEMP ve neden bu kadar pop\u00fcler? LEMP, Linux i\u015fletim sistemi, Nginx web sunucusu, MySQL veritaban\u0131 ve PHP programlama dilinin ba\u015f harflerinden olu\u015fan bir k\u0131saltmad\u0131r. Bu d\u00f6rt bile\u015fen, birlikte \u00e7al\u0131\u015farak modern web uygulamalar\u0131 i\u00e7in sa\u011flam, y\u00fcksek performansl\u0131 ve g\u00fcvenilir bir altyap\u0131 olu\u015fturur.<\/p>\n<p>LEMP stack, \u00f6zellikle y\u00fcksek trafikli web siteleri ve karma\u015f\u0131k uygulamalar i\u00e7in m\u00fckemmel bir se\u00e7imdir. Nginx&#8217;in olay tabanl\u0131 mimarisi sayesinde e\u015f zamanl\u0131 ba\u011flant\u0131lar\u0131 Apache&#8217;ye g\u00f6re daha verimli y\u00f6netmesi, onu \u00f6zellikle statik i\u00e7erik sunumu ve ters proxy (reverse proxy) g\u00f6revleri i\u00e7in ideal k\u0131lar. Bu da web sitenizin y\u00fck alt\u0131nda bile h\u0131zl\u0131 yan\u0131t vermesini sa\u011flar. MySQL, yap\u0131sal veri depolama ve sorgulama ihtiya\u00e7lar\u0131n\u0131z i\u00e7in g\u00fc\u00e7l\u00fc ve g\u00fcvenilir bir \u00e7\u00f6z\u00fcm sunarken, PHP dinamik i\u00e7erik olu\u015fturma ve sunucu taraf\u0131 mant\u0131k y\u00fcr\u00fctme konusunda geni\u015f bir yetenek yelpazesi sunar. Linux ise t\u00fcm bu bile\u015fenlerin \u00fczerinde \u00e7al\u0131\u015ft\u0131\u011f\u0131 kararl\u0131 ve a\u00e7\u0131k kaynakl\u0131 bir temeldir. Bu rehberde, Ubuntu i\u015fletim sistemi \u00fczerinde LEMP stack&#8217;i ad\u0131m ad\u0131m nas\u0131l kuraca\u011f\u0131n\u0131z\u0131, yap\u0131land\u0131raca\u011f\u0131n\u0131z\u0131 ve optimize edece\u011finizi detayl\u0131 bir \u015fekilde \u00f6\u011freneceksiniz. Kendi web sunucunuzu kurarak dijital varl\u0131\u011f\u0131n\u0131z\u0131 kontrol alt\u0131na alma yolculu\u011funuza haz\u0131r olun!<\/p>\n<p>Web geli\u015ftiricileri ve sistem y\u00f6neticileri i\u00e7in vazge\u00e7ilmez bir ara\u00e7 olan LEMP, esnekli\u011fi ve geni\u015f topluluk deste\u011fi sayesinde say\u0131s\u0131z projede tercih edilmektedir. \u0130ster ki\u015fisel bir blog, ister bir e-ticaret sitesi, ister karma\u015f\u0131k bir SaaS uygulamas\u0131 olsun, LEMP stack size ihtiyac\u0131n\u0131z olan g\u00fcc\u00fc ve kontrol\u00fc sa\u011flayacakt\u0131r. Bu rehber boyunca, her bir bile\u015fenin kurulumu ve birbirleriyle entegrasyonu hakk\u0131nda pratik bilgiler edinecek, kar\u015f\u0131la\u015fabilece\u011finiz olas\u0131 sorunlara kar\u015f\u0131 \u00e7\u00f6z\u00fcmler bulacak ve sunucunuzu g\u00fcvenli bir \u015fekilde nas\u0131l y\u00f6netece\u011finizi \u00f6\u011freneceksiniz. Hadi ba\u015flayal\u0131m ve Ubuntu sunucunuzu g\u00fc\u00e7l\u00fc bir web platformuna d\u00f6n\u00fc\u015ft\u00fcrelim!<\/p>\n<h2>Temel Kavramlar: LEMP Stack Bile\u015fenleri Nelerdir?<\/h2>\n<p>LEMP stack&#8217;in kurulumuna ge\u00e7meden \u00f6nce, bu k\u0131saltmay\u0131 olu\u015fturan her bir bile\u015fenin ne anlama geldi\u011fini ve web altyap\u0131s\u0131ndaki rol\u00fcn\u00fc anlamak \u00f6nemlidir. Bu temel bilgiler, kurulum s\u00fcrecini daha bilin\u00e7li bir \u015fekilde y\u00fcr\u00fctmenize ve olas\u0131 sorunlar\u0131 daha kolay gidermenize yard\u0131mc\u0131 olacakt\u0131r. LEMP, d\u00f6rt ana teknolojinin bir araya gelmesiyle olu\u015fur ve her biri belirli bir g\u00f6revi \u00fcstlenir.<\/p>\n<ul>\n<li><strong>L &#8211; Linux:<\/strong> Stack&#8217;in temelini olu\u015fturan i\u015fletim sistemidir. A\u00e7\u0131k kaynak kodlu, kararl\u0131 ve g\u00fcvenli yap\u0131s\u0131yla sunucu ortamlar\u0131 i\u00e7in en pop\u00fcler tercihlerden biridir. Ubuntu, Debian tabanl\u0131 bir Linux da\u011f\u0131t\u0131m\u0131 olup, geni\u015f paket deposu ve kolay kullan\u0131m\u0131 sayesinde LEMP kurulumlar\u0131 i\u00e7in s\u0131kl\u0131kla tercih edilir. Sunucunuzun donan\u0131m kaynaklar\u0131n\u0131 y\u00f6netir, di\u011fer t\u00fcm bile\u015fenlerin \u00fczerinde \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar.<\/li>\n<li><strong>E &#8211; Nginx (Engine-X):<\/strong> Web sunucusu yaz\u0131l\u0131m\u0131d\u0131r. Geleneksel web sunucular\u0131na g\u00f6re daha modern bir mimariye sahip olan Nginx, \u00f6zellikle y\u00fcksek e\u015f zamanl\u0131 ba\u011flant\u0131 say\u0131lar\u0131nda ve statik i\u00e7erik sunumunda \u00fcst\u00fcn performans g\u00f6sterir. Ters proxy (reverse proxy) ve y\u00fck dengeleyici (load balancer) olarak da kullan\u0131labilir. PHP gibi dinamik i\u00e7eriklerin i\u015flenmesini do\u011frudan yapmaz; bunun yerine istekleri PHP-FPM&#8217;e (FastCGI Process Manager) y\u00f6nlendirir.<\/li>\n<li><strong>M &#8211; MySQL:<\/strong> \u0130li\u015fkisel bir veritaban\u0131 y\u00f6netim sistemidir (RDBMS). Web uygulamalar\u0131n\u0131n kullan\u0131c\u0131 bilgileri, \u00fcr\u00fcn kataloglar\u0131, blog yaz\u0131lar\u0131 gibi t\u00fcm yap\u0131sal verilerini depolamak ve y\u00f6netmek i\u00e7in kullan\u0131l\u0131r. A\u00e7\u0131k kaynak kodlu yap\u0131s\u0131, performans\u0131 ve geni\u015f \u00f6zellikleri sayesinde web projelerinin vazge\u00e7ilmez bir par\u00e7as\u0131d\u0131r. Alternatif olarak MariaDB gibi uyumlu veritabanlar\u0131 da kullan\u0131labilir.<\/li>\n<li><strong>P &#8211; PHP (Hypertext Preprocessor):<\/strong> Sunucu tarafl\u0131 bir betik dilidir. Dinamik web sayfalar\u0131 olu\u015fturmak, veritabanlar\u0131yla etkile\u015fim kurmak ve sunucu taraf\u0131 mant\u0131\u011f\u0131n\u0131 y\u00fcr\u00fctmek i\u00e7in kullan\u0131l\u0131r. WordPress, Joomla, Drupal gibi pop\u00fcler i\u00e7erik y\u00f6netim sistemleri ve Laravel, Symfony gibi web framework&#8217;leri PHP ile yaz\u0131lm\u0131\u015ft\u0131r. Nginx ile do\u011frudan entegre olmak yerine, PHP-FPM arac\u0131l\u0131\u011f\u0131yla \u00e7al\u0131\u015f\u0131r.<\/li>\n<\/ul>\n<p>Bu bile\u015fenler bir araya geldi\u011finde, bir kullan\u0131c\u0131n\u0131n taray\u0131c\u0131s\u0131ndan gelen iste\u011fi i\u015flemek i\u00e7in a\u015fa\u011f\u0131daki ak\u0131\u015f\u0131 izlerler:<\/p>\n<ol>\n<li>Kullan\u0131c\u0131 bir web sitesine eri\u015fmek istedi\u011finde, istek Nginx web sunucusuna ula\u015f\u0131r.<\/li>\n<li>Nginx, iste\u011fin statik bir dosya (HTML, CSS, JS, resim vb.) olup olmad\u0131\u011f\u0131n\u0131 kontrol eder. E\u011fer statikse, do\u011frudan sunar.<\/li>\n<li>E\u011fer istek dinamik bir PHP sayfas\u0131ysa, Nginx bu iste\u011fi PHP-FPM&#8217;e iletir.<\/li>\n<li>PHP-FPM, PHP kodunu \u00e7al\u0131\u015ft\u0131r\u0131r ve gerekirse MySQL veritaban\u0131ndan veri \u00e7eker veya oraya veri yazar.<\/li>\n<li>PHP-FPM, i\u015flenmi\u015f PHP \u00e7\u0131kt\u0131s\u0131n\u0131 (genellikle HTML) Nginx&#8217;e geri g\u00f6nderir.<\/li>\n<li>Nginx, bu \u00e7\u0131kt\u0131y\u0131 alarak kullan\u0131c\u0131n\u0131n taray\u0131c\u0131s\u0131na iletir.<\/li>\n<\/ol>\n<p>Bu entegre yap\u0131, web uygulamalar\u0131n\u0131z\u0131n h\u0131zl\u0131, g\u00fcvenilir ve verimli bir \u015fekilde \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar. Her bir bile\u015fenin do\u011fru \u015fekilde kurulmas\u0131 ve yap\u0131land\u0131r\u0131lmas\u0131, LEMP stack&#8217;inizin performans\u0131n\u0131 ve g\u00fcvenli\u011fini do\u011frudan etkileyecektir. \u015eimdi, bu g\u00fc\u00e7l\u00fc stack&#8217;i Ubuntu sunucumuza kurmaya haz\u0131r\u0131z.<\/p>\n<h2>Ubuntu Sunucunuzu Haz\u0131rlama: \u0130lk Ad\u0131mlar<\/h2>\n<p>LEMP stack kurulumuna ba\u015flamadan \u00f6nce, Ubuntu sunucunuzun do\u011fru \u015fekilde haz\u0131rland\u0131\u011f\u0131ndan emin olmal\u0131y\u0131z. Bu \u00f6n haz\u0131rl\u0131k ad\u0131mlar\u0131, hem kurulumun sorunsuz ilerlemesini sa\u011flayacak hem de sunucunuzun g\u00fcvenli\u011fini art\u0131racakt\u0131r. \u0130lk olarak, bir Ubuntu sunucusuna SSH arac\u0131l\u0131\u011f\u0131yla eri\u015fiminizin oldu\u011funu varsay\u0131yoruz. Genellikle bir bulut sa\u011flay\u0131c\u0131dan (AWS, DigitalOcean, Vultr vb.) veya kendi fiziksel sunucunuzdan bir Ubuntu \u00f6rne\u011fi ba\u015flatm\u0131\u015f olursunuz.<\/p>\n<p><strong>1. Sistem G\u00fcncellemesi:<\/strong> Herhangi bir yaz\u0131l\u0131m kurulumuna ba\u015flamadan \u00f6nce, sisteminizdeki mevcut paket listesini g\u00fcncellemek ve kurulu paketleri en son s\u00fcr\u00fcmlerine y\u00fckseltmek iyi bir uygulamad\u0131r. Bu, potansiyel g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 kapat\u0131r ve yeni paketlerin do\u011fru ba\u011f\u0131ml\u0131l\u0131klarla kurulmas\u0131n\u0131 sa\u011flar. Terminalinizde a\u015fa\u011f\u0131daki komutlar\u0131 \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code>\nsudo apt update\nsudo apt upgrade -y\n    <\/code><\/pre>\n<p><code>apt update<\/code> komutu, yerel paket indeksini g\u00fcncellerken, <code>apt upgrade -y<\/code> komutu, -y bayra\u011f\u0131 sayesinde t\u00fcm y\u00fckseltmeleri onaylamadan otomatik olarak yapar. Bu i\u015flem biraz zaman alabilir, internet ba\u011flant\u0131n\u0131z\u0131n h\u0131z\u0131na ve sunucunuzun performans\u0131na ba\u011fl\u0131 olarak de\u011fi\u015fir.<\/p>\n<div class=\"interactive-element\">\n<p>Uzman \u0130pucu: Sunucunuzu d\u00fczenli olarak g\u00fcncellemek, sadece g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 kapatmakla kalmaz, ayn\u0131 zamanda yaz\u0131l\u0131mlar\u0131n\u0131z\u0131n en yeni \u00f6zelliklere ve performans iyile\u015ftirmelerine sahip olmas\u0131n\u0131 sa\u011flar. Bu, uzun vadede sistem kararl\u0131l\u0131\u011f\u0131 i\u00e7in kritik \u00f6neme sahiptir.<\/p>\n<\/p><\/div>\n<p><strong>2. G\u00fcvenlik Duvar\u0131 (UFW) Yap\u0131land\u0131rmas\u0131:<\/strong> Sunucunuzu d\u0131\u015far\u0131dan gelecek istenmeyen ba\u011flant\u0131lara kar\u015f\u0131 korumak i\u00e7in bir g\u00fcvenlik duvar\u0131 (firewall) kullanmak esast\u0131r. Ubuntu&#8217;da varsay\u0131lan olarak gelen ve kullan\u0131m\u0131 kolay olan Uncomplicated Firewall (UFW) bu i\u015f i\u00e7in idealdir. \u0130lk olarak UFW&#8217;nin durumunu kontrol edelim:<\/p>\n<pre><code>\nsudo ufw status\n    <\/code><\/pre>\n<p>E\u011fer g\u00fcvenlik duvar\u0131 etkin de\u011filse, SSH ba\u011flant\u0131n\u0131z\u0131n kesilmemesi i\u00e7in SSH portunu (varsay\u0131lan olarak 22) a\u00e7arak etkinle\u015ftirmeniz gerekir. Daha sonra web sunucusu (Nginx) ve veritaban\u0131 (MySQL) i\u00e7in gerekli portlar\u0131 da a\u00e7aca\u011f\u0131z.<\/p>\n<pre><code>\nsudo ufw allow OpenSSH # SSH ba\u011flant\u0131s\u0131 i\u00e7in\nsudo ufw enable       # G\u00fcvenlik duvar\u0131n\u0131 etkinle\u015ftir\nsudo ufw status       # Durumu kontrol et\n    <\/code><\/pre>\n<p>Bu ad\u0131mlarla temel sistem g\u00fcncellemelerini tamamlad\u0131k ve sunucumuzun g\u00fcvenlik duvar\u0131n\u0131 etkinle\u015ftirdik. Art\u0131k LEMP stack&#8217;in bile\u015fenlerini kurmaya ba\u015flayabiliriz. Her bir bile\u015fen, ayr\u0131 ayr\u0131 ele al\u0131nacak ve ad\u0131m ad\u0131m kurulumu ger\u00e7ekle\u015ftirilecektir. Bu haz\u0131rl\u0131klar, sorunsuz bir kurulum s\u00fcreci i\u00e7in sa\u011flam bir temel olu\u015fturur ve gelecekteki olas\u0131 g\u00fcvenlik risklerini minimize etmeye yard\u0131mc\u0131 olur. Sunucunuzun g\u00fcvenli\u011fi, web uygulamalar\u0131n\u0131z\u0131n ba\u015far\u0131s\u0131 i\u00e7in en \u00f6nemli fakt\u00f6rlerden biridir, bu nedenle bu ad\u0131mlar\u0131 asla atlamamal\u0131s\u0131n\u0131z.<\/p>\n<p><strong>3. Gerekli Ara\u00e7lar\u0131n Kurulumu:<\/strong> Baz\u0131 temel ara\u00e7lar, sunucu y\u00f6netimi ve dosya i\u015flemleri i\u00e7in faydal\u0131 olabilir. \u00d6rne\u011fin, <code>nano<\/code> veya <code>vim<\/code> gibi metin edit\u00f6rleri ve <code>curl<\/code> veya <code>wget<\/code> gibi a\u011f ara\u00e7lar\u0131 genellikle i\u015finize yarar. \u00c7o\u011fu Ubuntu kurulumunda bunlar varsay\u0131lan olarak gelir, ancak emin olmak i\u00e7in kontrol edebilir veya kurabilirsiniz:<\/p>\n<pre><code>\nsudo apt install -y nano curl wget\n    <\/code><\/pre>\n<p>Bu haz\u0131rl\u0131klar\u0131n ard\u0131ndan sunucumuz art\u0131k Nginx kurulumuna ge\u00e7mek i\u00e7in haz\u0131r durumda. Her ad\u0131mda dikkatli olmak ve komutlar\u0131n \u00e7\u0131kt\u0131s\u0131n\u0131 kontrol etmek, olas\u0131 hatalar\u0131 erkenden fark etmenizi sa\u011flayacakt\u0131r.<\/p>\n<h2>Nginx Kurulumu ve Temel Yap\u0131land\u0131rmas\u0131: Web Sunucunuzu Aya\u011fa Kald\u0131rma<\/h2>\n<p>LEMP stack&#8217;in &#8220;E&#8221;si olan Nginx (Engine-X), modern web sunucular\u0131n\u0131n en pop\u00fclerlerinden biridir. Y\u00fcksek performans, d\u00fc\u015f\u00fck kaynak t\u00fcketimi ve e\u015f zamanl\u0131 ba\u011flant\u0131lar\u0131 etkin bir \u015fekilde y\u00f6netme yetene\u011fi sayesinde \u00f6zellikle y\u00fcksek trafikli siteler i\u00e7in idealdir. Bu b\u00f6l\u00fcmde Nginx&#8217;i Ubuntu sunucumuza kuracak ve temel bir yap\u0131land\u0131rma ile ilk web sayfam\u0131z\u0131 yay\u0131nlayaca\u011f\u0131z.<\/p>\n<p><strong>1. Nginx Kurulumu:<\/strong> Nginx, Ubuntu&#8217;nun varsay\u0131lan depolar\u0131nda mevcuttur. Kurulumu olduk\u00e7a basittir:<\/p>\n<pre><code>\nsudo apt install nginx -y\n    <\/code><\/pre>\n<p>Kurulum tamamland\u0131ktan sonra, Nginx servisi otomatik olarak ba\u015flayacakt\u0131r. Servisin durumunu kontrol ederek \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olabiliriz:<\/p>\n<pre><code>\nsudo systemctl status nginx\n    <\/code><\/pre>\n<p>\u00c7\u0131kt\u0131da &#8220;active (running)&#8221; ifadesini g\u00f6rmelisiniz. E\u011fer de\u011filse, servisi manuel olarak ba\u015flatabilirsiniz: <code>sudo systemctl start nginx<\/code>.<\/p>\n<div class=\"interactive-element\">\n<p>Uzman \u0130pucu: Nginx&#8217;in otomatik ba\u015flamas\u0131n\u0131 sa\u011flamak i\u00e7in <code>sudo systemctl enable nginx<\/code> komutunu kullanabilirsiniz. Bu, sunucu yeniden ba\u015flat\u0131ld\u0131\u011f\u0131nda Nginx&#8217;in de otomatik olarak ba\u015flamas\u0131n\u0131 garanti eder.<\/p>\n<\/p><\/div>\n<p><strong>2. G\u00fcvenlik Duvar\u0131 Yap\u0131land\u0131rmas\u0131:<\/strong> Nginx&#8217;i kurduktan sonra, web trafi\u011finin sunucunuza ula\u015fabilmesi i\u00e7in g\u00fcvenlik duvar\u0131m\u0131zda (UFW) HTTP (port 80) ve HTTPS (port 443) portlar\u0131n\u0131 a\u00e7mam\u0131z gerekir. Nginx, UFW ile entegre profillerle gelir:<\/p>\n<pre><code>\nsudo ufw allow 'Nginx HTTP'\nsudo ufw allow 'Nginx HTTPS' # E\u011fer SSL\/TLS kullanacaksan\u0131z\nsudo ufw reload\nsudo ufw status\n    <\/code><\/pre>\n<p><code>ufw status<\/code> \u00e7\u0131kt\u0131s\u0131nda &#8220;Nginx HTTP&#8221; ve &#8220;Nginx HTTPS&#8221; profillerinin izin verildi\u011fini g\u00f6rmelisiniz. Art\u0131k taray\u0131c\u0131n\u0131zdan sunucunuzun IP adresine giderek Nginx&#8217;in varsay\u0131lan kar\u015f\u0131lama sayfas\u0131n\u0131 g\u00f6rebilirsiniz. Bu, Nginx&#8217;in ba\u015far\u0131yla kuruldu\u011funu ve \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6sterir.<\/p>\n<p><strong>3. Nginx Server Block Yap\u0131land\u0131rmas\u0131 (Virtual Host):<\/strong> Ger\u00e7ek d\u00fcnya senaryolar\u0131nda, birden fazla web sitesini ayn\u0131 sunucuda bar\u0131nd\u0131rmak istersiniz. Nginx&#8217;te bu, &#8220;Server Block&#8221; veya di\u011fer web sunucular\u0131ndaki ad\u0131yla &#8220;Virtual Host&#8221; kavram\u0131yla yap\u0131l\u0131r. Her bir web sitesi i\u00e7in ayr\u0131 bir yap\u0131land\u0131rma dosyas\u0131 olu\u015fturulur. \u00d6rne\u011fin, &#8220;ornek.com&#8221; ad\u0131nda bir web sitesi i\u00e7in bir server block olu\u015ftural\u0131m.<\/p>\n<p>\u00d6ncelikle web sitemizin dosyalar\u0131n\u0131n bulunaca\u011f\u0131 bir dizin olu\u015ftural\u0131m:<\/p>\n<pre><code>\nsudo mkdir -p \/var\/www\/ornek.com\/html\nsudo chown -R $USER:$USER \/var\/www\/ornek.com\/html\nsudo chmod -R 755 \/var\/www\/ornek.com\n    <\/code><\/pre>\n<p><code>$USER<\/code> de\u011fi\u015fkeni, mevcut kullan\u0131c\u0131 ad\u0131n\u0131z\u0131 otomatik olarak alacakt\u0131r. Ard\u0131ndan, bu dizine basit bir <code>index.html<\/code> dosyas\u0131 olu\u015ftural\u0131m:<\/p>\n<pre><code>\nnano \/var\/www\/ornek.com\/html\/index.html\n    <\/code><\/pre>\n<p>\u0130\u00e7ine a\u015fa\u011f\u0131daki HTML kodunu yap\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-html\">\n&lt;!DOCTYPE html&gt;\n&lt;html lang=\"tr\"&gt;\n&lt;head&gt;\n    &lt;meta charset=\"UTF-8\"&gt;\n    &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"&gt;\n    &lt;title&gt;Ornek.com - Nginx ile Ba\u015far\u0131l\u0131 Kurulum&lt;\/title&gt;\n    &lt;style&gt;\n        body { font-family: Arial, sans-serif; text-align: center; margin-top: 50px; background-color: #f4f4f4; }\n        h1 { color: #333; }\n        p { color: #666; }\n        .container {\n            max-width: 800px;\n            margin: 0 auto;\n            padding: 20px;\n            background-color: #fff;\n            border-radius: 8px;\n            box-shadow: 0 4px 8px rgba(0,0,0,0.1);\n        }\n        @media (max-width: 600px) {\n            .container {\n                margin: 10px;\n                padding: 15px;\n            }\n            h1 { font-size: 1.5em; }\n        }\n    &lt;\/style&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;div class=\"container\"&gt;\n        &lt;h1&gt;Tebrikler! Ornek.com Nginx ile Ba\u015far\u0131yla Kuruldu!&lt;\/h1&gt;\n        &lt;p&gt;Bu sayfa, Nginx web sunucunuzun do\u011fru \u015fekilde yap\u0131land\u0131r\u0131ld\u0131\u011f\u0131n\u0131 g\u00f6stermektedir.&lt;\/p&gt;\n        &lt;p&gt;LEMP stack kurulumuna devam edebilirsiniz.&lt;\/p&gt;\n    &lt;\/div&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;\n    <\/code><\/pre>\n<p>Kaydedip kapat\u0131n (CTRL+X, Y, Enter).<\/p>\n<p>\u015eimdi bu web sitesi i\u00e7in bir Nginx server block dosyas\u0131 olu\u015ftural\u0131m:<\/p>\n<pre><code>\nsudo nano \/etc\/nginx\/sites-available\/ornek.com\n    <\/code><\/pre>\n<p>\u0130\u00e7ine a\u015fa\u011f\u0131daki yap\u0131land\u0131rmay\u0131 yap\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code>\nserver {\n    listen 80;\n    listen [::]:80;\n\n    root \/var\/www\/ornek.com\/html;\n    index index.html index.htm index.nginx-debian.html;\n\n    server_name ornek.com www.ornek.com;\n\n    location \/ {\n        try_files $uri $uri\/ =404;\n    }\n}\n    <\/code><\/pre>\n<p>Kaydedip kapat\u0131n. Bu yap\u0131land\u0131rma, Nginx&#8217;e &#8220;ornek.com&#8221; veya &#8220;www.ornek.com&#8221; alan ad\u0131na gelen istekleri <code>\/var\/www\/ornek.com\/html<\/code> dizininden sunmas\u0131n\u0131 s\u00f6yler.<\/p>\n<p>Bu server block dosyas\u0131n\u0131 etkinle\u015ftirmek i\u00e7in <code>sites-enabled<\/code> dizinine sembolik bir ba\u011flant\u0131 (symlink) olu\u015ftural\u0131m:<\/p>\n<pre><code>\nsudo ln -s \/etc\/nginx\/sites-available\/ornek.com \/etc\/nginx\/sites-enabled\/\n    <\/code><\/pre>\n<p>Nginx&#8217;in varsay\u0131lan yap\u0131land\u0131rmas\u0131 (<code>default<\/code> server block) ile \u00e7ak\u0131\u015fmalar\u0131 \u00f6nlemek i\u00e7in onu devre d\u0131\u015f\u0131 b\u0131rakmak iyi bir uygulamad\u0131r:<\/p>\n<pre><code>\nsudo rm \/etc\/nginx\/sites-enabled\/default\n    <\/code><\/pre>\n<p>Yap\u0131land\u0131rma dosyam\u0131zda herhangi bir s\u00f6zdizimi hatas\u0131 olup olmad\u0131\u011f\u0131n\u0131 kontrol edelim:<\/p>\n<pre><code>\nsudo nginx -t\n    <\/code><\/pre>\n<p>E\u011fer &#8220;test is successful&#8221; mesaj\u0131n\u0131 al\u0131rsan\u0131z, Nginx&#8217;i yeniden ba\u015flatarak yeni yap\u0131land\u0131rmay\u0131 uygulayabiliriz:<\/p>\n<pre><code>\nsudo systemctl restart nginx\n    <\/code><\/pre>\n<p>\u015eimdi, e\u011fer &#8220;ornek.com&#8221; alan ad\u0131n\u0131 sunucunuzun IP adresine y\u00f6nlendirdiyseniz (DNS ayarlar\u0131), taray\u0131c\u0131n\u0131zdan <code>http:\/\/ornek.com<\/code> adresine giderek olu\u015fturdu\u011funuz <code>index.html<\/code> sayfas\u0131n\u0131 g\u00f6rmelisiniz. E\u011fer alan ad\u0131n\u0131z yoksa, \u015fimdilik sunucunuzun IP adresini kullanarak varsay\u0131lan Nginx sayfas\u0131n\u0131 g\u00f6rmeye devam edersiniz. Bu, Nginx&#8217;in do\u011fru \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6sterir ve PHP entegrasyonuna ge\u00e7i\u015f i\u00e7in sa\u011flam bir temel olu\u015fturur.<\/p>\n<h2>MySQL Kurulumu ve G\u00fcvenli\u011fi: Veritaban\u0131 Y\u00f6netim Sistemi<\/h2>\n<p>Web uygulamalar\u0131n\u0131n \u00e7o\u011fu, kullan\u0131c\u0131 bilgileri, i\u00e7erik, \u00fcr\u00fcn detaylar\u0131 gibi dinamik verileri depolamak ve y\u00f6netmek i\u00e7in bir veritaban\u0131na ihtiya\u00e7 duyar. LEMP stack&#8217;in &#8220;M&#8221;si olan MySQL (veya MariaDB), bu g\u00f6rev i\u00e7in en pop\u00fcler ve g\u00fc\u00e7l\u00fc \u00e7\u00f6z\u00fcmlerden biridir. Bu b\u00f6l\u00fcmde MySQL&#8217;i Ubuntu sunucumuza kuracak ve temel g\u00fcvenlik yap\u0131land\u0131rmalar\u0131n\u0131 ger\u00e7ekle\u015ftirece\u011fiz.<\/p>\n<p><strong>1. MySQL Kurulumu:<\/strong> MySQL sunucusu ve istemci paketlerini Ubuntu&#8217;nun varsay\u0131lan depolar\u0131ndan kolayca kurabiliriz:<\/p>\n<pre><code>\nsudo apt install mysql-server -y\n    <\/code><\/pre>\n<p>Kurulum tamamland\u0131ktan sonra MySQL servisi otomatik olarak ba\u015flayacakt\u0131r. Servisin durumunu kontrol edelim:<\/p>\n<pre><code>\nsudo systemctl status mysql\n    <\/code><\/pre>\n<p>\u00c7\u0131kt\u0131da &#8220;active (running)&#8221; ifadesini g\u00f6rmelisiniz. E\u011fer de\u011filse, <code>sudo systemctl start mysql<\/code> komutuyla ba\u015flatabilirsiniz.<\/p>\n<div class=\"interactive-element\">\n<p>Uzman \u0130pucu: MySQL&#8217;in yerine MariaDB kullanmay\u0131 d\u00fc\u015f\u00fcnebilirsiniz. MariaDB, MySQL&#8217;in a\u00e7\u0131k kaynakl\u0131 bir fork&#8217;udur ve genellikle benzer performans ve \u00f6zellikler sunar. Kurulum komutu <code>sudo apt install mariadb-server -y<\/code> \u015feklinde olacakt\u0131r.<\/p>\n<\/p><\/div>\n<p><strong>2. MySQL G\u00fcvenlik Yap\u0131land\u0131rmas\u0131:<\/strong> MySQL&#8217;i kurduktan sonra, g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 kapatmak ve varsay\u0131lan ayarlar\u0131 g\u00fc\u00e7lendirmek i\u00e7in <code>mysql_secure_installation<\/code> beti\u011fini \u00e7al\u0131\u015ft\u0131rmak \u00e7ok \u00f6nemlidir. Bu betik, k\u00f6k (root) parolas\u0131n\u0131 ayarlaman\u0131za, anonim kullan\u0131c\u0131lar\u0131 kald\u0131rman\u0131za, uzaktan root giri\u015fini devre d\u0131\u015f\u0131 b\u0131rakman\u0131za ve test veritaban\u0131n\u0131 silmenize olanak tan\u0131r.<\/p>\n<pre><code>\nsudo mysql_secure_installation\n    <\/code><\/pre>\n<p>Betik size bir dizi soru soracakt\u0131r:<\/p>\n<ul>\n<li><strong>VALIDATE PASSWORD COMPONENT:<\/strong> G\u00fc\u00e7l\u00fc parola politikas\u0131 i\u00e7in bu \u00f6zelli\u011fi etkinle\u015ftirebilirsiniz. (Genellikle &#8216;y&#8217; veya &#8216;n&#8217; se\u00e7ene\u011fi ile devam edin, benim \u00f6nerim &#8216;y&#8217; ve orta d\u00fczey bir parola g\u00fcc\u00fc se\u00e7menizdir.)<\/li>\n<li><strong>Set root password? [Y\/n]:<\/strong> &#8216;Y&#8217; tu\u015funa basarak root parolas\u0131 belirleyin. G\u00fc\u00e7l\u00fc bir parola se\u00e7ti\u011finizden emin olun.<\/li>\n<li><strong>Remove anonymous users? [Y\/n]:<\/strong> &#8216;Y&#8217; tu\u015funa basarak anonim kullan\u0131c\u0131lar\u0131 kald\u0131r\u0131n. Bu, g\u00fcvenlik i\u00e7in \u00f6nemlidir.<\/li>\n<li><strong>Disallow root login remotely? [Y\/n]:<\/strong> &#8216;Y&#8217; tu\u015funa basarak root kullan\u0131c\u0131s\u0131n\u0131n uzaktan giri\u015f yapmas\u0131n\u0131 engelleyin. Bu, potansiyel sald\u0131r\u0131 y\u00fczeyini azalt\u0131r.<\/li>\n<li><strong>Remove test database and access to it? [Y\/n]:<\/strong> &#8216;Y&#8217; tu\u015funa basarak test veritaban\u0131n\u0131 kald\u0131r\u0131n. Bu veritaban\u0131 genellikle g\u00fcvenlik riski olu\u015fturur.<\/li>\n<li><strong>Reload privilege tables now? [Y\/n]:<\/strong> &#8216;Y&#8217; tu\u015funa basarak ayr\u0131cal\u0131k tablolar\u0131n\u0131 yeniden y\u00fckleyin. Bu, yapt\u0131\u011f\u0131n\u0131z de\u011fi\u015fikliklerin hemen etkili olmas\u0131n\u0131 sa\u011flar.<\/li>\n<\/ul>\n<p>Bu ad\u0131mlar\u0131 tamamlad\u0131ktan sonra MySQL kurulumunuz daha g\u00fcvenli hale gelecektir.<\/p>\n<p><strong>3. MySQL ile Veritaban\u0131 ve Kullan\u0131c\u0131 Olu\u015fturma:<\/strong> Web uygulamalar\u0131n\u0131z i\u00e7in genellikle \u00f6zel bir veritaban\u0131 ve bu veritaban\u0131na eri\u015fimi olan ayr\u0131 bir kullan\u0131c\u0131 olu\u015fturman\u0131z gerekir. Root kullan\u0131c\u0131s\u0131 ile do\u011frudan uygulama eri\u015fimi sa\u011flamak iyi bir g\u00fcvenlik uygulamas\u0131 de\u011fildir.<\/p>\n<p>MySQL kabu\u011funa root kullan\u0131c\u0131s\u0131 olarak giri\u015f yapal\u0131m:<\/p>\n<pre><code>\nsudo mysql -u root -p\n    <\/code><\/pre>\n<p>Parolan\u0131z\u0131 girdikten sonra MySQL komut istemine d\u00fc\u015feceksiniz. \u015eimdi yeni bir veritaban\u0131, bir kullan\u0131c\u0131 ve bu kullan\u0131c\u0131ya veritaban\u0131 \u00fczerinde ayr\u0131cal\u0131klar atayal\u0131m. \u00d6rne\u011fin, &#8220;ornek_db&#8221; ad\u0131nda bir veritaban\u0131 ve &#8220;ornek_user&#8221; ad\u0131nda bir kullan\u0131c\u0131 olu\u015ftural\u0131m:<\/p>\n<pre><code>\nCREATE DATABASE ornek_db DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;\nCREATE USER 'ornek_user'@'localhost' IDENTIFIED BY 'GucluParolanizBuraya!';\nGRANT ALL PRIVILEGES ON ornek_db.* TO 'ornek_user'@'localhost';\nFLUSH PRIVILEGES;\nEXIT;\n    <\/code><\/pre>\n<p>Yukar\u0131daki komutlar\u0131 a\u00e7\u0131klayal\u0131m:<\/p>\n<ul>\n<li><code>CREATE DATABASE ornek_db ...;<\/code>: &#8220;ornek_db&#8221; ad\u0131nda yeni bir veritaban\u0131 olu\u015fturur. <code>utf8_unicode_ci<\/code> karakter seti, T\u00fcrk\u00e7e karakterler de dahil olmak \u00fczere geni\u015f bir dil deste\u011fi sa\u011flar.<\/li>\n<li><code>CREATE USER 'ornek_user'@'localhost' ...;<\/code>: &#8220;ornek_user&#8221; ad\u0131nda, yaln\u0131zca &#8220;localhost&#8221; \u00fczerinden eri\u015febilecek yeni bir MySQL kullan\u0131c\u0131s\u0131 olu\u015fturur ve ona bir parola atar. Parolan\u0131z\u0131 g\u00fc\u00e7l\u00fc bir \u015fekilde de\u011fi\u015ftirdi\u011finizden emin olun.<\/li>\n<li><code>GRANT ALL PRIVILEGES ON ornek_db.* TO 'ornek_user'@'localhost';<\/code>: &#8220;ornek_user&#8221; kullan\u0131c\u0131s\u0131na &#8220;ornek_db&#8221; veritaban\u0131 \u00fczerindeki t\u00fcm ayr\u0131cal\u0131klar\u0131 verir.<\/li>\n<li><code>FLUSH PRIVILEGES;<\/code>: Ayr\u0131cal\u0131k tablolar\u0131n\u0131 yeniden y\u00fckleyerek de\u011fi\u015fikliklerin hemen etkili olmas\u0131n\u0131 sa\u011flar.<\/li>\n<li><code>EXIT;<\/code>: MySQL kabu\u011fundan \u00e7\u0131kar.<\/li>\n<\/ul>\n<p>Art\u0131k MySQL sunucunuz kurulmu\u015f, g\u00fcvenli\u011fi sa\u011flanm\u0131\u015f ve web uygulaman\u0131z\u0131n kullanabilece\u011fi bir veritaban\u0131 ve kullan\u0131c\u0131 haz\u0131r hale getirilmi\u015ftir. Bu ad\u0131mlar, LEMP stack&#8217;inizin veritaban\u0131 katman\u0131n\u0131 tamamlar ve dinamik i\u00e7erikli uygulamalar\u0131n\u0131z i\u00e7in gerekli altyap\u0131y\u0131 sa\u011flar.<\/p>\n<h2>PHP Kurulumu ve Nginx ile Entegrasyonu: Dinamik \u0130\u00e7erik \u0130\u015fleme<\/h2>\n<p>LEMP stack&#8217;in &#8220;P&#8221;si olan PHP, dinamik web sayfalar\u0131 olu\u015fturmak ve sunucu taraf\u0131 mant\u0131\u011f\u0131n\u0131 y\u00fcr\u00fctmek i\u00e7in kullan\u0131lan g\u00fc\u00e7l\u00fc bir betik dilidir. Nginx, PHP kodunu do\u011frudan \u00e7al\u0131\u015ft\u0131rmaz; bunun yerine PHP-FPM (FastCGI Process Manager) ad\u0131 verilen bir hizmet arac\u0131l\u0131\u011f\u0131yla PHP isteklerini i\u015fler. Bu b\u00f6l\u00fcmde PHP ve PHP-FPM&#8217;i kuracak ve Nginx ile entegre edece\u011fiz.<\/p>\n<p><strong>1. PHP ve PHP-FPM Kurulumu:<\/strong> Ubuntu depolar\u0131nda PHP&#8217;nin \u00e7e\u015fitli s\u00fcr\u00fcmleri bulunur. Genellikle en son kararl\u0131 s\u00fcr\u00fcm\u00fc kullanmak iyi bir tercihtir. Bu rehberde PHP 8.x s\u00fcr\u00fcm\u00fcn\u00fc kuraca\u011f\u0131z. Ayr\u0131ca, MySQL ile ileti\u015fim kurmak ve di\u011fer yayg\u0131n web uygulamas\u0131 i\u015flevlerini desteklemek i\u00e7in baz\u0131 ek PHP uzant\u0131lar\u0131na ihtiyac\u0131m\u0131z olacak:<\/p>\n<pre><code>\nsudo apt install php-fpm php-mysql php-cli php-gd php-curl php-mbstring php-xml php-zip -y\n    <\/code><\/pre>\n<p>Bu komut, PHP-FPM&#8217;i (Nginx ile PHP entegrasyonu i\u00e7in gerekli), MySQL uzant\u0131s\u0131n\u0131 ve di\u011fer s\u0131k kullan\u0131lan uzant\u0131lar\u0131 kurar. Kurulum tamamland\u0131ktan sonra PHP-FPM servisi otomatik olarak ba\u015flayacakt\u0131r. Servisin durumunu kontrol edelim:<\/p>\n<pre><code>\nsudo systemctl status php8.x-fpm # 'php8.x-fpm' yerine kurulu PHP s\u00fcr\u00fcm\u00fcn\u00fcze g\u00f6re \u00f6rn: php8.1-fpm yaz\u0131n\n    <\/code><\/pre>\n<p>\u00c7\u0131kt\u0131da &#8220;active (running)&#8221; ifadesini g\u00f6rmelisiniz. E\u011fer de\u011filse, <code>sudo systemctl start php8.x-fpm<\/code> komutuyla ba\u015flatabilirsiniz.<\/p>\n<p><strong>2. Nginx ile PHP-FPM Entegrasyonu:<\/strong> \u015eimdi Nginx&#8217;i, PHP dosyalar\u0131na gelen istekleri PHP-FPM&#8217;e iletmesi i\u00e7in yap\u0131land\u0131rmam\u0131z gerekiyor. Daha \u00f6nce olu\u015fturdu\u011fumuz &#8220;ornek.com&#8221; server block dosyas\u0131n\u0131 d\u00fczenleyece\u011fiz:<\/p>\n<pre><code>\nsudo nano \/etc\/nginx\/sites-available\/ornek.com\n    <\/code><\/pre>\n<p>Mevcut i\u00e7eri\u011fi a\u015fa\u011f\u0131daki gibi g\u00fcncelleyin. \u00d6zellikle <code>index<\/code> sat\u0131r\u0131na <code>index.php<\/code> ekleyin ve PHP i\u015fleme blo\u011funu (<code>location ~ \\.php$<\/code>) ekleyin:<\/p>\n<pre><code>\nserver {\n    listen 80;\n    listen [::]:80;\n\n    root \/var\/www\/ornek.com\/html;\n    index index.php index.html index.htm index.nginx-debian.html; # index.php'yi ekledik\n\n    server_name ornek.com www.ornek.com;\n\n    location \/ {\n        try_files $uri $uri\/ =404;\n    }\n\n    # PHP dosyalar\u0131n\u0131 PHP-FPM'e iletmek i\u00e7in blok\n    location ~ \\.php$ {\n        include snippets\/fastcgi-php.conf;\n        fastcgi_pass unix:\/run\/php\/php8.x-fpm.sock; # PHP s\u00fcr\u00fcm\u00fcn\u00fcze g\u00f6re g\u00fcncelleyin (\u00f6rn: php8.1-fpm.sock)\n    }\n\n    # .htaccess dosyalar\u0131n\u0131n web \u00fczerinden eri\u015fimini engelle\n    location ~ \/\\.ht {\n        deny all;\n    }\n}\n    <\/code><\/pre>\n<p><code>fastcgi_pass<\/code> sat\u0131r\u0131ndaki soket yolunu, kurdu\u011funuz PHP s\u00fcr\u00fcm\u00fcne g\u00f6re g\u00fcncelledi\u011finizden emin olun (\u00f6rn: <code>php8.1-fpm.sock<\/code> veya <code>php8.2-fpm.sock<\/code>). Kaydedip kapat\u0131n.<\/p>\n<p>Yap\u0131land\u0131rmada hata olup olmad\u0131\u011f\u0131n\u0131 kontrol edelim ve Nginx&#8217;i yeniden ba\u015flatal\u0131m:<\/p>\n<pre><code>\nsudo nginx -t\nsudo systemctl restart nginx\n    <\/code><\/pre>\n<p><strong>3. PHP&#8217;nin \u00c7al\u0131\u015ft\u0131\u011f\u0131n\u0131 Do\u011frulama (phpinfo):<\/strong> PHP&#8217;nin Nginx ile do\u011fru bir \u015fekilde entegre olup olmad\u0131\u011f\u0131n\u0131 test etmek i\u00e7in, web dizinimize basit bir PHP dosyas\u0131 olu\u015ftural\u0131m:<\/p>\n<pre><code>\nsudo nano \/var\/www\/ornek.com\/html\/info.php\n    <\/code><\/pre>\n<p>\u0130\u00e7ine a\u015fa\u011f\u0131daki PHP kodunu yap\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-php\">\n&lt;?php\nphpinfo();\n?&gt;\n    <\/code><\/pre>\n<p>Kaydedip kapat\u0131n. \u015eimdi taray\u0131c\u0131n\u0131zdan <code>http:\/\/ornek.com\/info.php<\/code> (veya sunucunuzun IP adresi\/info.php) adresine gidin. Kar\u015f\u0131n\u0131za PHP&#8217;nin yap\u0131land\u0131rma bilgilerini i\u00e7eren uzun bir sayfa gelmelidir. Bu sayfa, PHP&#8217;nin ba\u015far\u0131yla \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 ve Nginx ile entegre oldu\u011funu g\u00f6sterir.<\/p>\n<div class=\"interactive-element\">\n<p>\u00d6nemli G\u00fcvenlik Notu: <code>info.php<\/code> dosyas\u0131n\u0131 test ettikten sonra, g\u00fcvenlik nedeniyle sunucunuzdan silmeniz \u015fiddetle tavsiye edilir. Bu dosya, sunucunuz hakk\u0131nda hassas bilgiler i\u00e7erebilir.<\/p>\n<pre><code>\nsudo rm \/var\/www\/ornek.com\/html\/info.php\n        <\/code><\/pre>\n<\/p><\/div>\n<p>Bu ad\u0131mlarla birlikte LEMP stack&#8217;inizin t\u00fcm temel bile\u015fenleri ba\u015far\u0131yla kurulmu\u015f ve birbirleriyle entegre edilmi\u015f oldu. Art\u0131k Ubuntu sunucunuz, dinamik web uygulamalar\u0131n\u0131 bar\u0131nd\u0131rmak i\u00e7in tam te\u015fekk\u00fcll\u00fc bir platform haline geldi. S\u0131rada, bir web uygulamas\u0131n\u0131 da\u011f\u0131tmak ve stack&#8217;inizi optimize etmek var.<\/p>\n<h2>Vaka Analizi: Y\u00fcksek Trafikli Bir E-ticaret Sitesi i\u00e7in LEMP Optimizasyonu<\/h2>\n<p>Bir e-ticaret sitesi, y\u00fcksek trafik, anl\u0131k \u00fcr\u00fcn g\u00fcncellemeleri, g\u00fcvenli \u00f6deme i\u015flemleri ve h\u0131zl\u0131 sayfa y\u00fckleme s\u00fcreleri gibi \u00f6zel gereksinimlere sahiptir. LEMP stack, bu t\u00fcr senaryolar i\u00e7in m\u00fckemmel bir temel sunar, ancak optimum performans ve g\u00fcvenilirlik i\u00e7in do\u011fru optimizasyonlar ve g\u00fcvenlik \u00f6nlemleri \u015fartt\u0131r. Bu vaka analizinde, &#8220;TrendSepeti.com&#8221; adl\u0131 hayali bir e-ticaret sitesinin LEMP stack \u00fczerinde nas\u0131l optimize edildi\u011fini inceleyelim.<\/p>\n<h3>Senaryo: TrendSepeti.com&#8217;un Performans Sorunlar\u0131<\/h3>\n<p>TrendSepeti.com, pop\u00fcler bir e-ticaret platformu \u00fczerine kurulu ve LEMP stack \u00fczerinde \u00e7al\u0131\u015fan orta \u00f6l\u00e7ekli bir sitedir. Ba\u015flang\u0131\u00e7ta her \u015fey yolundayken, site b\u00fcy\u00fcd\u00fck\u00e7e ve kampanya d\u00f6nemlerinde trafik artt\u0131k\u00e7a a\u015fa\u011f\u0131daki sorunlar ya\u015fanmaya ba\u015fland\u0131:<\/p>\n<ul>\n<li><strong>Yava\u015f Sayfa Y\u00fckleme S\u00fcreleri:<\/strong> \u00d6zellikle \u00fcr\u00fcn sayfalar\u0131 ve \u00f6deme ad\u0131mlar\u0131 yava\u015f y\u00fcklendi.<\/li>\n<li><strong>Sunucu A\u015f\u0131r\u0131 Y\u00fcklenmesi:<\/strong> Y\u00fcksek trafik anlar\u0131nda CPU kullan\u0131m\u0131 %100&#8217;e ula\u015f\u0131yor, site yan\u0131t veremez hale geliyordu.<\/li>\n<li><strong>Veritaban\u0131 Kilitlenmeleri:<\/strong> Yo\u011fun yazma\/okuma i\u015flemleri s\u0131ras\u0131nda veritaban\u0131 ba\u011flant\u0131lar\u0131 d\u00fc\u015f\u00fcyor, hatalar meydana geliyordu.<\/li>\n<\/ul>\n<h3>LEMP Optimizasyon Ad\u0131mlar\u0131 ve Sonu\u00e7lar\u0131<\/h3>\n<p>Bu sorunlar\u0131 gidermek i\u00e7in TrendSepeti.com&#8217;un LEMP stack&#8217;i \u00fczerinde kapsaml\u0131 bir optimizasyon \u00e7al\u0131\u015fmas\u0131 yap\u0131ld\u0131:<\/p>\n<h4>1. Nginx Optimizasyonu<\/h4>\n<ul>\n<li><strong>\u00d6nbellekleme (Caching):<\/strong> Statik dosyalar (resimler, CSS, JS) i\u00e7in Nginx \u00f6nbelleklemesi etkinle\u015ftirildi. Ayr\u0131ca, s\u0131k eri\u015filen dinamik i\u00e7erikler i\u00e7in de FastCGI cache kullan\u0131ld\u0131.\n<pre><code>\n# \/etc\/nginx\/nginx.conf i\u00e7ine eklendi\nproxy_cache_path \/var\/cache\/nginx levels=1:2 keys_zone=my_cache:10m max_size=10g\n                 inactive=60m use_temp_path=off;\n\n# Server block i\u00e7inde\nlocation ~* \\.(jpg|jpeg|png|gif|ico|css|js)$ {\n    expires 30d;\n    add_header Cache-Control \"public, no-transform\";\n    access_log off;\n}\nlocation \/ {\n    try_files $uri $uri\/ \/index.php?$query_string;\n    proxy_cache my_cache;\n    proxy_cache_valid 200 302 10m;\n    proxy_cache_valid 404 1m;\n}\n            <\/code><\/pre>\n<\/li>\n<li><strong>Gzip S\u0131k\u0131\u015ft\u0131rma:<\/strong> Metin tabanl\u0131 i\u00e7eriklerin (HTML, CSS, JS) s\u0131k\u0131\u015ft\u0131r\u0131larak g\u00f6nderilmesi sa\u011fland\u0131, bu da bant geni\u015fli\u011fini azaltt\u0131 ve y\u00fckleme s\u00fcrelerini h\u0131zland\u0131rd\u0131.\n<pre><code>\n# \/etc\/nginx\/nginx.conf i\u00e7inde http blo\u011funa eklendi\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>Worker Proses Ayarlar\u0131:<\/strong> Nginx worker proses say\u0131s\u0131 sunucunun CPU \u00e7ekirdek say\u0131s\u0131na g\u00f6re ayarland\u0131 (<code>worker_processes auto;<\/code>).<\/li>\n<\/ul>\n<p><strong>Sonu\u00e7:<\/strong> Nginx optimizasyonlar\u0131 sayesinde statik i\u00e7eriklerin y\u00fckleme s\u00fcresi %60 oran\u0131nda azald\u0131. Dinamik i\u00e7erik \u00f6nbelleklemesi, sunucunun CPU y\u00fck\u00fcn\u00fc %30 d\u00fc\u015f\u00fcrd\u00fc.<\/p>\n<h4>2. MySQL Optimizasyonu<\/h4>\n<ul>\n<li><strong>Query Optimizasyonu:<\/strong> En yava\u015f \u00e7al\u0131\u015fan SQL sorgular\u0131 (slow queries) tespit edildi ve indeksler eklenerek veya sorgu yap\u0131s\u0131 de\u011fi\u015ftirilerek optimize edildi.\n<pre><code>\n# MySQL konsolunda \u00f6rnek indeks ekleme\nALTER TABLE products ADD INDEX idx_product_category (category_id);\n            <\/code><\/pre>\n<\/li>\n<li><strong>Yap\u0131land\u0131rma Ayarlar\u0131 (my.cnf):<\/strong> <code>\/etc\/mysql\/mysql.conf.d\/mysqld.cnf<\/code> dosyas\u0131nda <code>innodb_buffer_pool_size<\/code> (RAM&#8217;in %50-70&#8217;i), <code>query_cache_size<\/code> ve <code>max_connections<\/code> gibi parametreler sunucu kaynaklar\u0131na g\u00f6re ayarland\u0131.\n<pre><code>\n# \/etc\/mysql\/mysql.conf.d\/mysqld.cnf\n[mysqld]\ninnodb_buffer_pool_size = 4G # \u00d6rnek: 8GB RAM'li bir sunucu i\u00e7in\nquery_cache_size = 64M\nmax_connections = 200\n            <\/code><\/pre>\n<\/li>\n<li><strong>Slow Query Log:<\/strong> Yava\u015f sorgular\u0131 tespit etmek i\u00e7in slow query log etkinle\u015ftirildi.<\/li>\n<\/ul>\n<p><strong>Sonu\u00e7:<\/strong> Veritaban\u0131 sorgu s\u00fcreleri ortalama %40 k\u0131sald\u0131, kilitlenme sorunlar\u0131 b\u00fcy\u00fck \u00f6l\u00e7\u00fcde azald\u0131 ve sunucu yan\u0131t s\u00fcreleri iyile\u015fti.<\/p>\n<h4>3. PHP-FPM Optimizasyonu<\/h4>\n<ul>\n<li><strong>Process Y\u00f6netimi:<\/strong> PHP-FPM&#8217;in process y\u00f6netimi (<code>\/etc\/php\/8.x\/fpm\/pool.d\/www.conf<\/code>) dinamik olarak ayarland\u0131 (<code>pm = dynamic<\/code>), <code>pm.max_children<\/code>, <code>pm.start_servers<\/code>, <code>pm.min_spare_servers<\/code> ve <code>pm.max_spare_servers<\/code> de\u011ferleri sunucu RAM&#8217;ine ve beklenen trafik y\u00fck\u00fcne g\u00f6re optimize edildi.\n<pre><code>\n# \/etc\/php\/8.x\/fpm\/pool.d\/www.conf\npm = dynamic\npm.max_children = 50\npm.start_servers = 10\npm.min_spare_servers = 5\npm.max_spare_servers = 15\n            <\/code><\/pre>\n<\/li>\n<li><strong>Opcache:<\/strong> PHP&#8217;nin Opcache mod\u00fcl\u00fc etkinle\u015ftirildi. Bu, derlenmi\u015f PHP kodunu bellekte tutarak her istekte yeniden derleme ihtiyac\u0131n\u0131 ortadan kald\u0131r\u0131r.\n<pre><code>\n# \/etc\/php\/8.x\/fpm\/php.ini i\u00e7inde\nopcache.enable=1\nopcache.memory_consumption=128\nopcache.interned_strings_buffer=8\nopcache.max_accelerated_files=10000\nopcache.revalidate_freq=60\n            <\/code><\/pre>\n<\/li>\n<\/ul>\n<p><strong>Sonu\u00e7:<\/strong> PHP kodlar\u0131n\u0131n i\u015flenme s\u00fcresi h\u0131zland\u0131, sunucu CPU y\u00fck\u00fc azald\u0131 ve ayn\u0131 anda daha fazla iste\u011fin i\u015flenebilmesi sa\u011fland\u0131.<\/p>\n<h4>4. G\u00fcvenlik ve \u0130zleme<\/h4>\n<ul>\n<li><strong>SSL\/TLS (HTTPS):<\/strong> T\u00fcm site Let&#8217;s Encrypt ile \u00fccretsiz SSL sertifikas\u0131 kullan\u0131larak HTTPS&#8217;e ge\u00e7irildi. Bu, m\u00fc\u015fteri verilerinin g\u00fcvenli\u011fini sa\u011flad\u0131 ve SEO s\u0131ralamas\u0131na olumlu etki etti.<\/li>\n<li><strong>UFW G\u00fcvenlik Duvar\u0131:<\/strong> Sadece gerekli portlar (80, 443, 22) a\u00e7\u0131k b\u0131rak\u0131ld\u0131, di\u011fer t\u00fcm portlar engellendi.<\/li>\n<li><strong>Fail2ban:<\/strong> SSH ve Nginx i\u00e7in brute-force sald\u0131r\u0131lar\u0131na kar\u015f\u0131 Fail2ban kuruldu.<\/li>\n<li><strong>\u0130zleme Ara\u00e7lar\u0131:<\/strong> Prometheus ve Grafana gibi ara\u00e7larla sunucu kaynaklar\u0131 (CPU, RAM, Disk I\/O) ve Nginx\/MySQL\/PHP-FPM metrikleri s\u00fcrekli izlenerek olas\u0131 darbo\u011fazlar an\u0131nda tespit edildi.<\/li>\n<\/ul>\n<p><strong>Genel Sonu\u00e7:<\/strong> TrendSepeti.com&#8217;un sayfa y\u00fckleme s\u00fcreleri ortalama %50 azald\u0131, sunucu %70 daha fazla e\u015f zamanl\u0131 trafi\u011fi sorunsuz bir \u015fekilde y\u00f6netebilir hale geldi. G\u00fcvenlik seviyesi art\u0131r\u0131ld\u0131 ve kampanya d\u00f6nemlerinde dahi site performans\u0131 istikrarl\u0131 hale geldi. Bu vaka analizi, LEMP stack&#8217;in do\u011fru optimizasyon ve g\u00fcvenlik \u00f6nlemleriyle y\u00fcksek performansl\u0131 ve g\u00fcvenilir e-ticaret siteleri i\u00e7in ne kadar uygun oldu\u011funu g\u00f6stermektedir.<\/p>\n<h2>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h2>\n<p>LEMP stack kurulumu ve y\u00f6netimi hakk\u0131nda s\u0131k\u00e7a kar\u015f\u0131la\u015f\u0131lan baz\u0131 sorular\u0131 ve yan\u0131tlar\u0131n\u0131 a\u015fa\u011f\u0131da bulabilirsiniz:<\/p>\n<ol>\n<li>\n<h3>LEMP stack nedir ve neden Apache yerine Nginx tercih edilmelidir?<\/h3>\n<p>LEMP, Linux, Nginx, MySQL ve PHP bile\u015fenlerinin bir araya gelmesiyle olu\u015fan bir web sunucusu y\u0131\u011f\u0131n\u0131d\u0131r. Nginx, olay tabanl\u0131 (event-driven) mimarisi sayesinde \u00f6zellikle y\u00fcksek e\u015f zamanl\u0131 ba\u011flant\u0131 say\u0131lar\u0131nda ve statik i\u00e7erik sunumunda Apache&#8217;ye g\u00f6re daha verimlidir. Daha az kaynak t\u00fcketir ve ters proxy (reverse proxy) olarak m\u00fckemmel performans g\u00f6sterir, bu da onu modern, y\u00fcksek trafikli web uygulamalar\u0131 i\u00e7in ideal bir se\u00e7im yapar.<\/p>\n<\/li>\n<li>\n<h3>MySQL yerine ba\u015fka bir veritaban\u0131 kullanabilir miyim?<\/h3>\n<p>Evet, kesinlikle. LEMP stack&#8217;teki &#8216;M&#8217; genellikle MySQL&#8217;i temsil etse de, MariaDB (MySQL&#8217;in a\u00e7\u0131k kaynakl\u0131 bir fork&#8217;u) veya PostgreSQL gibi di\u011fer ili\u015fkisel veritabanlar\u0131n\u0131 da kullanabilirsiniz. Kurulum ad\u0131mlar\u0131 ve yap\u0131land\u0131rma y\u00f6ntemleri biraz farkl\u0131l\u0131k g\u00f6sterebilir, ancak genel entegrasyon mant\u0131\u011f\u0131 benzerdir. MariaDB, MySQL ile neredeyse tamamen uyumlu oldu\u011fu i\u00e7in ge\u00e7i\u015f yapmak olduk\u00e7a kolayd\u0131r.<\/p>\n<\/li>\n<li>\n<h3>PHP-FPM nedir ve neden Nginx ile birlikte kullan\u0131l\u0131r?<\/h3>\n<p>PHP-FPM (FastCGI Process Manager), PHP kodunu i\u015fleyen ve Nginx gibi web sunucular\u0131yla ileti\u015fim kuran bir FastCGI uygulamas\u0131d\u0131r. Nginx, PHP kodunu do\u011frudan \u00e7al\u0131\u015ft\u0131ramaz. Bunun yerine, PHP dosyalar\u0131na gelen istekleri PHP-FPM&#8217;e iletir. PHP-FPM, kodu i\u015fler ve sonucu Nginx&#8217;e geri g\u00f6nderir. Bu ayr\u0131m, Nginx&#8217;in statik i\u00e7erik sunumunda h\u0131zl\u0131 kalmas\u0131n\u0131 sa\u011flarken, PHP-FPM&#8217;in dinamik i\u00e7eri\u011fi verimli bir \u015fekilde i\u015flemesine olanak tan\u0131r, b\u00f6ylece daha iyi performans ve kararl\u0131l\u0131k elde edilir.<\/p>\n<\/li>\n<li>\n<h3>LEMP stack&#8217;imi nas\u0131l g\u00fcncelleyebilirim?<\/h3>\n<p>LEMP stack bile\u015fenlerini g\u00fcncellemek i\u00e7in Ubuntu&#8217;nun paket y\u00f6neticisi olan <code>apt<\/code>&#8216;i kullanmal\u0131s\u0131n\u0131z. D\u00fczenli olarak a\u015fa\u011f\u0131daki komutlar\u0131 \u00e7al\u0131\u015ft\u0131rmak, sisteminizi ve t\u00fcm kurulu paketleri g\u00fcncel tutar:<\/p>\n<pre><code>\nsudo apt update\nsudo apt upgrade -y\n            <\/code><\/pre>\n<p>B\u00fcy\u00fck s\u00fcr\u00fcm y\u00fckseltmeleri (\u00f6rne\u011fin PHP 7.x&#8217;ten 8.x&#8217;e ge\u00e7i\u015f) genellikle manuel yap\u0131land\u0131rma de\u011fi\u015fiklikleri ve ek ad\u0131mlar gerektirebilir.<\/p>\n<\/li>\n<li>\n<h3>Web sitem i\u00e7in SSL\/TLS (HTTPS) nas\u0131l etkinle\u015ftiririm?<\/h3>\n<p>Web siteniz i\u00e7in SSL\/TLS sertifikas\u0131 kurarak HTTPS&#8217;i etkinle\u015ftirmek g\u00fcvenlik i\u00e7in \u00e7ok \u00f6nemlidir. Let&#8217;s Encrypt, \u00fccretsiz SSL sertifikalar\u0131 sa\u011flayan pop\u00fcler bir hizmettir ve Certbot arac\u0131 ile kolayca kurulabilir. Ad\u0131mlar genellikle \u015funlar\u0131 i\u00e7erir:<\/p>\n<pre><code>\nsudo apt install certbot python3-certbot-nginx -y\nsudo certbot --nginx -d ornek.com -d www.ornek.com\n            <\/code><\/pre>\n<p>Certbot, Nginx yap\u0131land\u0131rman\u0131z\u0131 otomatik olarak g\u00fcncelleyecek ve sertifikalar\u0131n\u0131z\u0131 yenileyecektir. Bu, web sitenizin g\u00fcvenli\u011fini art\u0131r\u0131r ve SEO s\u0131ralaman\u0131za olumlu katk\u0131 sa\u011flar.<\/p>\n<\/li>\n<\/ol>\n<h2>Sonu\u00e7: G\u00fc\u00e7l\u00fc ve Esnek Bir Web Altyap\u0131s\u0131<\/h2>\n<p>Bu kapsaml\u0131 rehber boyunca, Ubuntu \u00fczerinde LEMP stack&#8217;in her bir bile\u015fenini ad\u0131m ad\u0131m nas\u0131l kuraca\u011f\u0131n\u0131z\u0131, yap\u0131land\u0131raca\u011f\u0131n\u0131z\u0131 ve optimize edece\u011finizi \u00f6\u011frendiniz. Linux&#8217;un sa\u011flam temelinden ba\u015flayarak, Nginx&#8217;in y\u00fcksek performansl\u0131 web sunuculu\u011fu, MySQL&#8217;in g\u00fcvenilir veritaban\u0131 y\u00f6netimi ve PHP&#8217;nin dinamik i\u00e7erik i\u015fleme yeteneklerini bir araya getirerek kendi g\u00fc\u00e7l\u00fc web altyap\u0131n\u0131z\u0131 olu\u015fturdunuz. Art\u0131k ki\u015fisel projelerinizden y\u00fcksek trafikli e-ticaret sitelerine kadar her t\u00fcrl\u00fc web uygulamas\u0131n\u0131 bar\u0131nd\u0131rabilecek donan\u0131ma sahipsiniz.<\/p>\n<p>LEMP stack, esnekli\u011fi, performans\u0131 ve a\u00e7\u0131k kaynak kodlu yap\u0131s\u0131yla modern web geli\u015ftirme d\u00fcnyas\u0131nda vazge\u00e7ilmez bir yer edinmi\u015ftir. Kurulumu tamamlamak sadece ba\u015flang\u0131\u00e7t\u0131r; ger\u00e7ek d\u00fcnya senaryolar\u0131nda kar\u015f\u0131la\u015fabilece\u011finiz performans darbo\u011fazlar\u0131n\u0131 a\u015fmak ve g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 kapatmak i\u00e7in s\u00fcrekli izleme, optimizasyon ve g\u00fcvenlik pratiklerini uygulamak hayati \u00f6nem ta\u015f\u0131r. Sundu\u011fumuz vaka analizi ve s\u0131k\u00e7a sorulan sorular b\u00f6l\u00fcm\u00fc, bu s\u00fcre\u00e7te size yol g\u00f6sterecek ek bilgiler ve ipu\u00e7lar\u0131 sa\u011flam\u0131\u015ft\u0131r.<\/p>\n<p>Unutmay\u0131n, web sunucusu y\u00f6netimi s\u00fcrekli \u00f6\u011frenme ve adapte olma gerektiren bir aland\u0131r. Bu rehberdeki bilgileri temel alarak, kendi projelerinizin \u00f6zel ihtiya\u00e7lar\u0131na g\u00f6re LEMP stack&#8217;inizi daha da \u00f6zelle\u015ftirebilir ve geli\u015ftirebilirsiniz. Kendi sunucunuzun kontrol\u00fcn\u00fc elinize almak, size sadece teknik beceriler kazand\u0131rmakla kalmayacak, ayn\u0131 zamanda dijital d\u00fcnyadaki varl\u0131\u011f\u0131n\u0131z\u0131 daha g\u00fcvenli ve verimli bir \u015fekilde y\u00f6netmenizi sa\u011flayacakt\u0131r. Ba\u015far\u0131lar dileriz!<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Ubuntu&#8217;da LEMP Stack Kurulumu: Ad\u0131m Ad\u0131m Rehber Web uygulamalar\u0131n\u0131z\u0131 veya sitelerinizi yay\u0131nlamak i\u00e7in g\u00fc\u00e7l\u00fc ve esnek bir altyap\u0131&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":[1],"tags":[],"class_list":{"0":"post-33498","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","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>Giri\u015f: Neden LEMP Stack&#039;e \u0130htiya\u00e7 Duyars\u0131n\u0131z?<\/title>\n<meta name=\"description\" content=\"Web uygulamalar\u0131n\u0131z\u0131 veya sitelerinizi yay\u0131nlamak i\u00e7in g\u00fc\u00e7l\u00fc ve esnek bir altyap\u0131 m\u0131 ar\u0131yorsunuz? Ubuntu sunucunuzda Linux, Nginx, MySQL ve PHP (LEMP) stack&#039;ini nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 \u00f6\u011frenin. Bu kapsaml\u0131 rehber, s\u0131f\u0131rdan ba\u015flayarak web projelerinizi h\u0131zla yay\u0131na alman\u0131z\u0131 sa\u011flayacak, performans ipu\u00e7lar\u0131 ve s\u0131k\u00e7a sorulan sorularla dolu.\" \/>\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\/giris-neden-lemp-stacke-ihtiyac-duyarsiniz\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Giri\u015f: Neden LEMP Stack&#039;e \u0130htiya\u00e7 Duyars\u0131n\u0131z?\" \/>\n<meta property=\"og:description\" content=\"Web uygulamalar\u0131n\u0131z\u0131 veya sitelerinizi yay\u0131nlamak i\u00e7in g\u00fc\u00e7l\u00fc ve esnek bir altyap\u0131 m\u0131 ar\u0131yorsunuz? Ubuntu sunucunuzda Linux, Nginx, MySQL ve PHP (LEMP) stack&#039;ini nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 \u00f6\u011frenin. Bu kapsaml\u0131 rehber, s\u0131f\u0131rdan ba\u015flayarak web projelerinizi h\u0131zla yay\u0131na alman\u0131z\u0131 sa\u011flayacak, performans ipu\u00e7lar\u0131 ve s\u0131k\u00e7a sorulan sorularla dolu.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/giris-neden-lemp-stacke-ihtiyac-duyarsiniz\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-03T13:23:03+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=\"28 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/giris-neden-lemp-stacke-ihtiyac-duyarsiniz\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/giris-neden-lemp-stacke-ihtiyac-duyarsiniz\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Giri\u015f: Neden LEMP Stack&#8217;e \u0130htiya\u00e7 Duyars\u0131n\u0131z?\",\"datePublished\":\"2025-11-03T13:23:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/giris-neden-lemp-stacke-ihtiyac-duyarsiniz\/\"},\"wordCount\":4643,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/giris-neden-lemp-stacke-ihtiyac-duyarsiniz\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/giris-neden-lemp-stacke-ihtiyac-duyarsiniz\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/giris-neden-lemp-stacke-ihtiyac-duyarsiniz\/\",\"name\":\"Giri\u015f: Neden LEMP Stack'e \u0130htiya\u00e7 Duyars\u0131n\u0131z?\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-11-03T13:23:03+00:00\",\"description\":\"Web uygulamalar\u0131n\u0131z\u0131 veya sitelerinizi yay\u0131nlamak i\u00e7in g\u00fc\u00e7l\u00fc ve esnek bir altyap\u0131 m\u0131 ar\u0131yorsunuz? Ubuntu sunucunuzda Linux, Nginx, MySQL ve PHP (LEMP) stack'ini nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 \u00f6\u011frenin. Bu kapsaml\u0131 rehber, s\u0131f\u0131rdan ba\u015flayarak web projelerinizi h\u0131zla yay\u0131na alman\u0131z\u0131 sa\u011flayacak, performans ipu\u00e7lar\u0131 ve s\u0131k\u00e7a sorulan sorularla dolu.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/giris-neden-lemp-stacke-ihtiyac-duyarsiniz\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/giris-neden-lemp-stacke-ihtiyac-duyarsiniz\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/giris-neden-lemp-stacke-ihtiyac-duyarsiniz\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Giri\u015f: Neden LEMP Stack&#8217;e \u0130htiya\u00e7 Duyars\u0131n\u0131z?\"}]},{\"@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":"Giri\u015f: Neden LEMP Stack'e \u0130htiya\u00e7 Duyars\u0131n\u0131z?","description":"Web uygulamalar\u0131n\u0131z\u0131 veya sitelerinizi yay\u0131nlamak i\u00e7in g\u00fc\u00e7l\u00fc ve esnek bir altyap\u0131 m\u0131 ar\u0131yorsunuz? Ubuntu sunucunuzda Linux, Nginx, MySQL ve PHP (LEMP) stack'ini nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 \u00f6\u011frenin. Bu kapsaml\u0131 rehber, s\u0131f\u0131rdan ba\u015flayarak web projelerinizi h\u0131zla yay\u0131na alman\u0131z\u0131 sa\u011flayacak, performans ipu\u00e7lar\u0131 ve s\u0131k\u00e7a sorulan sorularla dolu.","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\/giris-neden-lemp-stacke-ihtiyac-duyarsiniz\/","og_locale":"tr_TR","og_type":"article","og_title":"Giri\u015f: Neden LEMP Stack'e \u0130htiya\u00e7 Duyars\u0131n\u0131z?","og_description":"Web uygulamalar\u0131n\u0131z\u0131 veya sitelerinizi yay\u0131nlamak i\u00e7in g\u00fc\u00e7l\u00fc ve esnek bir altyap\u0131 m\u0131 ar\u0131yorsunuz? Ubuntu sunucunuzda Linux, Nginx, MySQL ve PHP (LEMP) stack'ini nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 \u00f6\u011frenin. Bu kapsaml\u0131 rehber, s\u0131f\u0131rdan ba\u015flayarak web projelerinizi h\u0131zla yay\u0131na alman\u0131z\u0131 sa\u011flayacak, performans ipu\u00e7lar\u0131 ve s\u0131k\u00e7a sorulan sorularla dolu.","og_url":"https:\/\/fatihsoysal.com\/blog\/giris-neden-lemp-stacke-ihtiyac-duyarsiniz\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-11-03T13:23:03+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"28 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/giris-neden-lemp-stacke-ihtiyac-duyarsiniz\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/giris-neden-lemp-stacke-ihtiyac-duyarsiniz\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Giri\u015f: Neden LEMP Stack&#8217;e \u0130htiya\u00e7 Duyars\u0131n\u0131z?","datePublished":"2025-11-03T13:23:03+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/giris-neden-lemp-stacke-ihtiyac-duyarsiniz\/"},"wordCount":4643,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/giris-neden-lemp-stacke-ihtiyac-duyarsiniz\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/giris-neden-lemp-stacke-ihtiyac-duyarsiniz\/","url":"https:\/\/fatihsoysal.com\/blog\/giris-neden-lemp-stacke-ihtiyac-duyarsiniz\/","name":"Giri\u015f: Neden LEMP Stack'e \u0130htiya\u00e7 Duyars\u0131n\u0131z?","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-11-03T13:23:03+00:00","description":"Web uygulamalar\u0131n\u0131z\u0131 veya sitelerinizi yay\u0131nlamak i\u00e7in g\u00fc\u00e7l\u00fc ve esnek bir altyap\u0131 m\u0131 ar\u0131yorsunuz? Ubuntu sunucunuzda Linux, Nginx, MySQL ve PHP (LEMP) stack'ini nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 \u00f6\u011frenin. Bu kapsaml\u0131 rehber, s\u0131f\u0131rdan ba\u015flayarak web projelerinizi h\u0131zla yay\u0131na alman\u0131z\u0131 sa\u011flayacak, performans ipu\u00e7lar\u0131 ve s\u0131k\u00e7a sorulan sorularla dolu.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/giris-neden-lemp-stacke-ihtiyac-duyarsiniz\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/giris-neden-lemp-stacke-ihtiyac-duyarsiniz\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/giris-neden-lemp-stacke-ihtiyac-duyarsiniz\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Giri\u015f: Neden LEMP Stack&#8217;e \u0130htiya\u00e7 Duyars\u0131n\u0131z?"}]},{"@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\/33498","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=33498"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/33498\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=33498"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=33498"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=33498"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}