{"id":34191,"date":"2025-11-12T13:31:29","date_gmt":"2025-11-12T10:31:29","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/otomatik-wordpress-lemp-sunucu-kurulumu-aws-ve-ansible-ile-ssl-entegrasyonu\/"},"modified":"2025-11-12T13:31:29","modified_gmt":"2025-11-12T10:31:29","slug":"otomatik-wordpress-lemp-sunucu-kurulumu-aws-ve-ansible-ile-ssl-entegrasyonu","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/otomatik-wordpress-lemp-sunucu-kurulumu-aws-ve-ansible-ile-ssl-entegrasyonu\/","title":{"rendered":"Otomatik WordPress LEMP Sunucu Kurulumu: AWS ve Ansible ile SSL Entegrasyonu"},"content":{"rendered":"<p><body><\/p>\n<p>\nManuel sunucu kurulumlar\u0131 zaman al\u0131c\u0131, hataya a\u00e7\u0131k ve s\u0131k\u0131c\u0131 olabilir. \u00d6zellikle bir WordPress sitesini LEMP (Linux, Nginx, MySQL, PHP-FPM) y\u0131\u011f\u0131n\u0131yla AWS \u00fczerine kurarken bu s\u00fcre\u00e7 daha da karma\u015f\u0131kla\u015f\u0131r. Peki, bu karma\u015f\u0131kl\u0131\u011f\u0131 tamamen otomatikle\u015ftirmek, SSL sertifikas\u0131n\u0131 bile tek bir komutla entegre etmek m\u00fcmk\u00fcn olsayd\u0131 ne d\u00fc\u015f\u00fcn\u00fcrd\u00fcn\u00fcz? \u0130\u015fte bu makale, AWS \u00fczerinde g\u00fc\u00e7l\u00fc, g\u00fcvenli ve performansl\u0131 bir WordPress LEMP sunucusunu Ansible kullanarak nas\u0131l tamamen otomatik bir \u015fekilde kuraca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m a\u00e7\u0131kl\u0131yor.\n<\/p>\n<p>\nBir web sitesi kurmak g\u00fcn\u00fcm\u00fczde her zamankinden daha kolay, ancak performanstan, g\u00fcvenlikten ve s\u00fcrd\u00fcr\u00fclebilirlikten \u00f6d\u00fcn vermeden bunu ba\u015farmak hala \u00f6nemli bir meydan okuma. Geleneksel olarak, bir WordPress sitesi i\u00e7in sunucu ortam\u0131 kurmak, bir\u00e7ok manuel ad\u0131m\u0131 i\u00e7eren uzun bir s\u00fcre\u00e7tir: i\u015fletim sistemi kurulumu, web sunucusu (Apache veya Nginx), veritaban\u0131 (MySQL\/MariaDB), PHP ve ilgili k\u00fct\u00fcphanelerin konfig\u00fcrasyonu, ard\u0131ndan WordPress&#8217;in kendisinin kurulumu ve son olarak SSL sertifikas\u0131n\u0131n entegrasyonu. Her bir ad\u0131mda potansiyel hata noktalar\u0131 bulunur ve bu s\u00fcre\u00e7, \u00f6zellikle birden fazla sunucu y\u00f6netiyorsan\u0131z veya s\u0131k s\u0131k yeni ortamlar kurman\u0131z gerekiyorsa, h\u0131zla bir kabusa d\u00f6n\u00fc\u015febilir.\n<\/p>\n<p>\n\u0130\u015fte bu noktada otomasyon devreye girer ve manuel s\u00fcre\u00e7lerin t\u00fcm dezavantajlar\u0131n\u0131 ortadan kald\u0131r\u0131r. Ansible gibi ara\u00e7larla sunucu kurulumunu otomatik hale getirmek, zamandan tasarruf etmenizi sa\u011flamakla kalmaz, ayn\u0131 zamanda insan kaynakl\u0131 hatalar\u0131 minimize eder. Her kurulumun ayn\u0131 \u015fekilde, ayn\u0131 konfig\u00fcrasyonlarla yap\u0131lmas\u0131n\u0131 garanti eder, bu da tutarl\u0131l\u0131k ve g\u00fcvenilirlik anlam\u0131na gelir. \u00d6rne\u011fin, yeni bir test ortam\u0131 kurman\u0131z gerekti\u011finde veya mevcut sunucunuzda bir sorun olu\u015ftu\u011funda h\u0131zla yeni bir sunucu aya\u011fa kald\u0131rabilirsiniz. Bu yetenek, i\u015f s\u00fcreklili\u011fi ve felaket kurtarma senaryolar\u0131nda hayati \u00f6nem ta\u015f\u0131r.\n<\/p>\n<p>\nLEMP y\u0131\u011f\u0131n\u0131 (Linux, Nginx, MySQL, PHP-FPM), \u00f6zellikle y\u00fcksek trafikli WordPress siteleri i\u00e7in m\u00fckemmel bir se\u00e7imdir. Nginx, hafifli\u011fi ve e\u015f zamanl\u0131 ba\u011flant\u0131lar\u0131 y\u00fcksek verimlilikle y\u00f6netebilme yetene\u011fi sayesinde, Apache&#8217;ye k\u0131yasla genellikle daha iyi performans sunar. PHP-FPM (FastCGI Process Manager) ise PHP uygulamalar\u0131n\u0131n daha h\u0131zl\u0131 \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flayarak WordPress performans\u0131n\u0131 do\u011frudan art\u0131r\u0131r. AWS (Amazon Web Services) platformu ise bu y\u0131\u011f\u0131n\u0131 bar\u0131nd\u0131rmak i\u00e7in s\u0131n\u0131rs\u0131z esneklik, \u00f6l\u00e7eklenebilirlik ve k\u00fcresel eri\u015fim sunar. \u0130htiya\u00e7lar\u0131n\u0131za g\u00f6re sunucu kaynaklar\u0131n\u0131 kolayca ayarlayabilir, y\u00fck dengeleme veya otomatik \u00f6l\u00e7eklendirme gibi ileri d\u00fczey \u00f6zellikleri sorunsuz bir \u015fekilde entegre edebilirsiniz. Son olarak, SSL sertifikas\u0131 (HTTPS), yaln\u0131zca site g\u00fcvenli\u011fi i\u00e7in de\u011fil, ayn\u0131 zamanda arama motoru optimizasyonu (SEO) ve kullan\u0131c\u0131 g\u00fcveni i\u00e7in de vazge\u00e7ilmezdir. Otomatik SSL entegrasyonu, web sitenizin modern web standartlar\u0131na uygun olmas\u0131n\u0131 garantiler. Bu kombinasyonla, manuel kurulumlar\u0131n getirdi\u011fi ba\u015f a\u011fr\u0131lar\u0131ndan kurtularak, sadece web sitenizin i\u00e7eri\u011fine ve b\u00fcy\u00fcmesine odaklanabilirsiniz.\n<\/p>\n<h2>Temel Ta\u015flar: LEMP, AWS ve Ansible Kavramlar\u0131na H\u0131zl\u0131 Bir Bak\u0131\u015f<\/h2>\n<p>\nTam otomatik bir WordPress LEMP sunucusu kurma yolculu\u011funa \u00e7\u0131kmadan \u00f6nce, projemizin temel yap\u0131 ta\u015flar\u0131n\u0131 olu\u015fturan teknolojileri anlamak \u00f6nemlidir. Bu b\u00f6l\u00fcmde, LEMP y\u0131\u011f\u0131n\u0131, AWS bulut platformu ve Ansible otomasyon arac\u0131n\u0131n ne anlama geldi\u011fini ve neden bu proje i\u00e7in ideal olduklar\u0131n\u0131 ke\u015ffedece\u011fiz.\n<\/p>\n<h3>LEMP Nedir ve Neden WordPress \u0130\u00e7in \u0130dealdir?<\/h3>\n<p>\nLEMP, d\u00f6rt ana a\u00e7\u0131k kaynak yaz\u0131l\u0131m bile\u015feninin ba\u015f harflerinden olu\u015fan bir akronimdir: <strong>L<\/strong>inux (i\u015fletim sistemi), <strong>E<\/strong>nginx (web sunucusu, &#8220;Engine-X&#8221; olarak telaffuz edilir), <strong>M<\/strong>ySQL\/MariaDB (veritaban\u0131 y\u00f6netim sistemi) ve <strong>P<\/strong>HP-FPM (PHP FastCGI Process Manager). Bu y\u0131\u011f\u0131n, dinamik web uygulamalar\u0131 sunmak i\u00e7in g\u00fc\u00e7l\u00fc, esnek ve y\u00fcksek performansl\u0131 bir ortam sa\u011flar.\n<\/p>\n<ul>\n<li>\n        <strong>Linux:<\/strong> Sa\u011flaml\u0131\u011f\u0131, g\u00fcvenli\u011fi ve geni\u015f topluluk deste\u011fiyle bilinen a\u00e7\u0131k kaynakl\u0131 bir i\u015fletim sistemidir. Ubuntu Server gibi da\u011f\u0131t\u0131mlar, LEMP y\u0131\u011f\u0131n\u0131 i\u00e7in pop\u00fcler ve g\u00fcvenilir bir temel olu\u015fturur.\n    <\/li>\n<li>\n        <strong>Nginx:<\/strong> Geleneksel web sunucusu Apache&#8217;ye alternatif olarak ortaya \u00e7\u0131km\u0131\u015ft\u0131r. Nginx, olay tabanl\u0131 (event-driven) mimarisi sayesinde, y\u00fcksek e\u015f zamanl\u0131 ba\u011flant\u0131 say\u0131lar\u0131n\u0131 d\u00fc\u015f\u00fck bellek t\u00fcketimiyle i\u015fleyebilir. Bu, \u00f6zellikle WordPress gibi dinamik ve i\u00e7erik yo\u011fun sitelerde, ziyaret\u00e7i y\u00fck\u00fc artt\u0131\u011f\u0131nda bile sitenizin h\u0131zl\u0131 ve duyarl\u0131 kalmas\u0131n\u0131 sa\u011flar. Nginx ayr\u0131ca bir ters proxy (reverse proxy) olarak da kullan\u0131labilir, bu da \u00f6nbellekleme ve y\u00fck dengeleme gibi ileri d\u00fczey konfig\u00fcrasyonlara olanak tan\u0131r.\n    <\/li>\n<li>\n        <strong>MySQL\/MariaDB:<\/strong> D\u00fcnya genelinde en pop\u00fcler a\u00e7\u0131k kaynak ili\u015fkisel veritaban\u0131 y\u00f6netim sistemidir. WordPress, t\u00fcm site i\u00e7eri\u011fini, kullan\u0131c\u0131 bilgilerini ve ayarlar\u0131n\u0131 bu veritaban\u0131nda depolar. MariaDB, MySQL&#8217;in topluluk taraf\u0131ndan geli\u015ftirilen bir fork&#8217;udur ve genellikle MySQL&#8217;e k\u0131yasla daha iyi performans ve ek \u00f6zellikler sunar.\n    <\/li>\n<li>\n        <strong>PHP-FPM:<\/strong> PHP&#8217;nin web sunucusuyla etkile\u015fime girmesini sa\u011flayan FastCGI uygulamas\u0131n\u0131n bir y\u00f6neticisidir. Geleneksel PHP mod\u00fcllerine g\u00f6re daha verimli kaynak kullan\u0131m\u0131 ve daha iyi performans sunar. Nginx do\u011frudan PHP&#8217;yi \u00e7al\u0131\u015ft\u0131ramad\u0131\u011f\u0131 i\u00e7in, PHP-FPM, Nginx&#8217;in PHP betiklerini i\u015flemesi i\u00e7in bir aray\u00fcz g\u00f6revi g\u00f6r\u00fcr, her PHP iste\u011fi i\u00e7in ayr\u0131 bir i\u015flem havuzu (pool) olu\u015fturarak izolasyon ve daha iyi performans sa\u011flar.\n    <\/li>\n<\/ul>\n<p>\nWordPress, PHP ve MySQL&#8217;e dayand\u0131\u011f\u0131 i\u00e7in LEMP y\u0131\u011f\u0131n\u0131yla m\u00fckemmel bir uyum i\u00e7indedir. Nginx&#8217;in h\u0131zl\u0131 statik i\u00e7erik sunumu ve PHP-FPM&#8217;in dinamik i\u00e7eri\u011fi etkin bir \u015fekilde i\u015flemesi, WordPress sitenizin ziyaret\u00e7iler i\u00e7in h\u0131zl\u0131 ve ak\u0131c\u0131 bir deneyim sunmas\u0131n\u0131 sa\u011flar.\n<\/p>\n<h3>AWS (Amazon Web Services) Bize Ne Sunuyor?<\/h3>\n<p>\nAWS, d\u00fcnyan\u0131n en kapsaml\u0131 ve yayg\u0131n olarak benimsenen bulut platformudur. Sunuculardan (EC2) veritabanlar\u0131na, depolamadan a\u011f hizmetlerine kadar binlerce farkl\u0131 hizmet sunar. Projemiz i\u00e7in \u00f6zellikle \u00f6nemli olan AWS hizmetleri \u015funlard\u0131r:\n<\/p>\n<ul>\n<li>\n        <strong>Amazon EC2 (Elastic Compute Cloud):<\/strong> AWS&#8217;nin sanal sunucu hizmetidir. \u0130htiyac\u0131n\u0131z olan i\u015flem g\u00fcc\u00fcn\u00fc, belle\u011fi ve depolama alan\u0131n\u0131 se\u00e7erek saniyeler i\u00e7inde bir Linux sunucusu ba\u015flatabilirsiniz. Esnekli\u011fi sayesinde, sunucunuzun boyutunu ve \u00f6zelliklerini kolayca de\u011fi\u015ftirebilirsiniz.\n    <\/li>\n<li>\n        <strong>Amazon VPC (Virtual Private Cloud):<\/strong> Kendi sanal a\u011f\u0131n\u0131z\u0131 AWS \u00fczerinde olu\u015fturman\u0131z\u0131 sa\u011flar. Bu sayede sunucular\u0131n\u0131z\u0131n a\u011f yap\u0131land\u0131rmas\u0131n\u0131, IP adres aral\u0131klar\u0131n\u0131, alt a\u011flar\u0131 ve y\u00f6nlendirme tablolar\u0131n\u0131 kontrol edebilirsiniz. G\u00fcvenli ve izole bir ortam sunar.\n    <\/li>\n<li>\n        <strong>AWS Security Groups:<\/strong> Sanal g\u00fcvenlik duvarlar\u0131d\u0131r. EC2 \u00f6rneklerinize gelen ve giden trafi\u011fi kontrol etmenizi sa\u011flar. Yaln\u0131zca belirli portlardan (\u00f6rn. SSH i\u00e7in 22, HTTP i\u00e7in 80, HTTPS i\u00e7in 443) ve belirli IP adreslerinden gelen ba\u011flant\u0131lara izin vererek sunucunuzu g\u00fcvende tutabilirsiniz.\n    <\/li>\n<li>\n        <strong>Elastic IP:<\/strong> Dinamik IP adreslerinin aksine, bir Elastic IP adresi AWS hesab\u0131n\u0131za atan\u0131r ve bir EC2 \u00f6rne\u011fi yeniden ba\u015flat\u0131lsa bile de\u011fi\u015fmez. Bu, alan ad\u0131n\u0131z\u0131 kal\u0131c\u0131 bir IP adresine y\u00f6nlendirmenizi sa\u011flar.\n    <\/li>\n<\/ul>\n<p>\nAWS, &#8220;kulland\u0131\u011f\u0131n kadar \u00f6de&#8221; modeliyle \u00e7al\u0131\u015f\u0131r, bu da ba\u015flang\u0131\u00e7 maliyetlerini d\u00fc\u015f\u00fcr\u00fcr ve sadece kulland\u0131\u011f\u0131n\u0131z kaynaklar i\u00e7in \u00f6deme yapars\u0131n\u0131z. Bu, \u00f6zellikle k\u00fc\u00e7\u00fck ve orta \u00f6l\u00e7ekli i\u015fletmeler i\u00e7in maliyet etkin bir \u00e7\u00f6z\u00fcmd\u00fcr.\n<\/p>\n<h3>Ansible ile Otomasyonun G\u00fcc\u00fc<\/h3>\n<p>\nAnsible, BT otomasyonu, konfig\u00fcrasyon y\u00f6netimi ve uygulama da\u011f\u0131t\u0131m\u0131 i\u00e7in tasarlanm\u0131\u015f a\u00e7\u0131k kaynakl\u0131 bir ara\u00e7t\u0131r. Python ile yaz\u0131lm\u0131\u015ft\u0131r ve en b\u00fcy\u00fck avantajlar\u0131ndan biri, y\u00f6netilen sunucularda herhangi bir arac\u0131 (agent) kurma gereksinimi olmamas\u0131d\u0131r. Bunun yerine, SSH protokol\u00fc \u00fczerinden sunuculara ba\u011flan\u0131r ve komutlar\u0131 \u00e7al\u0131\u015ft\u0131r\u0131r.\n<\/p>\n<p>\nAnsible&#8217;\u0131n temel \u00f6zellikleri:\n<\/p>\n<ul>\n<li>\n        <strong>Agentless (Arac\u0131s\u0131z):<\/strong> Hedef sunucularda \u00f6zel bir yaz\u0131l\u0131m \u00e7al\u0131\u015ft\u0131rman\u0131za gerek kalmaz. Bu, kurulumu basitle\u015ftirir ve g\u00fcvenlik risklerini azalt\u0131r.\n    <\/li>\n<li>\n        <strong>Basit ve Okunabilir:<\/strong> Konfig\u00fcrasyonlar, playbook&#8217;lar ad\u0131 verilen YAML dosyalar\u0131 arac\u0131l\u0131\u011f\u0131yla tan\u0131mlan\u0131r. Bu dosyalar olduk\u00e7a okunabilir ve insan dostudur.\n    <\/li>\n<li>\n        <strong>\u0130dempotent (Tekrar Tekrar Uygulanabilir):<\/strong> Bir Ansible playbook&#8217;unu birden \u00e7ok kez \u00e7al\u0131\u015ft\u0131rmak, her zaman ayn\u0131 sonuca yol a\u00e7ar. Yani, bir kaynak zaten istenen durumdaysa, Ansible herhangi bir de\u011fi\u015fiklik yapmaz. Bu, konfig\u00fcrasyonlar\u0131n\u0131z\u0131 g\u00fcvenle uygulaman\u0131z\u0131 sa\u011flar.\n    <\/li>\n<li>\n        <strong>Mod\u00fcler Yap\u0131:<\/strong> Ansible, \u00e7ok say\u0131da yerle\u015fik mod\u00fclle gelir (\u00f6rn. <code>apt<\/code>, <code>yum<\/code>, <code>service<\/code>, <code>copy<\/code>, <code>template<\/code>). Bu mod\u00fcller, \u00e7e\u015fitli g\u00f6revleri ger\u00e7ekle\u015ftirmek i\u00e7in kullan\u0131labilir.\n    <\/li>\n<\/ul>\n<p>\nAnsible ile, bir sunucunun kurulumunu, yaz\u0131l\u0131m paketlerini, konfig\u00fcrasyon dosyalar\u0131n\u0131 ve hatta bir WordPress sitesini u\u00e7tan uca tamamen otomatik hale getirebilirsiniz. Bu, manuel m\u00fcdahaleye olan ihtiyac\u0131 ortadan kald\u0131r\u0131r ve sunucu y\u00f6netimini daha verimli ve hatas\u0131z hale getirir.\n<\/p>\n<h2>AWS Ortam\u0131n\u0131n Haz\u0131rlanmas\u0131 ve Ansible Kurulumu: Ad\u0131m Ad\u0131m<\/h2>\n<p>\nOtomatik LEMP sunucunuzu kurmaya ba\u015flamadan \u00f6nce, temel AWS altyap\u0131s\u0131n\u0131 haz\u0131rlamam\u0131z ve Ansible&#8217;\u0131 yerel makinemize kurmam\u0131z gerekiyor. Bu ad\u0131mlar, playbook&#8217;umuzun sorunsuz bir \u015fekilde \u00e7al\u0131\u015fabilmesi i\u00e7in kritik \u00f6neme sahiptir.\n<\/p>\n<h3>AWS EC2 Sanal Sunucu Olu\u015fturma<\/h3>\n<p>\n\u0130lk olarak, WordPress sitemizi bar\u0131nd\u0131racak sanal sunucuyu (EC2 instance) AWS \u00fczerinde yap\u0131land\u0131raca\u011f\u0131z.\n<\/p>\n<ol>\n<li>\n        <strong>AWS Hesab\u0131 Olu\u015fturma\/Giri\u015f Yapma:<\/strong> AWS y\u00f6netim konsoluna giri\u015f yap\u0131n. Hen\u00fcz bir hesab\u0131n\u0131z yoksa, AWS Free Tier ile \u00fccretsiz bir hesap olu\u015fturabilirsiniz.\n    <\/li>\n<li>\n        <strong>EC2 Hizmetine Gitme:<\/strong> Konsol arama \u00e7ubu\u011funa &#8220;EC2&#8221; yaz\u0131n ve hizmeti se\u00e7in. Ard\u0131ndan sol men\u00fcden &#8220;Instances&#8221; (\u00d6rnekler) se\u00e7ene\u011fine t\u0131klay\u0131n ve &#8220;Launch instances&#8221; (\u00d6rnekleri ba\u015flat) d\u00fc\u011fmesine bas\u0131n.\n    <\/li>\n<li>\n        <strong>AMI (Amazon Machine Image) Se\u00e7imi:<\/strong> &#8220;Ubuntu Server 22.04 LTS (HVM), SSD Volume Type&#8221; gibi g\u00fcncel bir Ubuntu AMI se\u00e7in. Bu, LEMP y\u0131\u011f\u0131n\u0131 i\u00e7in pop\u00fcler ve iyi desteklenen bir temeldir.\n    <\/li>\n<li>\n        <strong>Instance Tipi Se\u00e7imi:<\/strong> Free Tier kapsam\u0131nda &#8220;t2.micro&#8221; veya &#8220;t3.micro&#8221; gibi bir tipi se\u00e7ebilirsiniz. Ger\u00e7ek bir site i\u00e7in, trafi\u011fe ba\u011fl\u0131 olarak daha g\u00fc\u00e7l\u00fc bir tip (\u00f6rn. &#8220;t3.medium&#8221;) tercih edilebilir.\n    <\/li>\n<li>\n        <strong>A\u011f Yap\u0131land\u0131rmas\u0131 (Network Settings):<\/strong><\/p>\n<ul>\n<li>\n                <strong>VPC:<\/strong> Varsay\u0131lan VPC&#8217;yi kullanabilir veya kendi VPC&#8217;nizi olu\u015fturabilirsiniz.\n            <\/li>\n<li>\n                <strong>Subnet:<\/strong> Public Subnet&#8217;i se\u00e7in, b\u00f6ylece sunucunuz internetten eri\u015filebilir olur.\n            <\/li>\n<li>\n                <strong>Auto-assign Public IP:<\/strong> &#8220;Enable&#8221; (Etkinle\u015ftir) oldu\u011fundan emin olun, b\u00f6ylece sunucunuza bir genel IP adresi atan\u0131r.\n            <\/li>\n<li>\n                <strong>Security Group (G\u00fcvenlik Grubu):<\/strong> Yeni bir g\u00fcvenlik grubu olu\u015fturun veya mevcut bir tanesini kullan\u0131n. Bu g\u00fcvenlik grubu i\u00e7in a\u015fa\u011f\u0131daki kurallar\u0131 ekleyin:<\/p>\n<ul>\n<li><strong>SSH (Port 22):<\/strong> Kendi IP adresinizden (veya <code>0.0.0.0\/0<\/code> test ama\u00e7l\u0131, ancak \u00fcretim i\u00e7in \u00f6nerilmez) eri\u015fime izin verin.<\/li>\n<li><strong>HTTP (Port 80):<\/strong> <code>0.0.0.0\/0<\/code> (Her yerden) eri\u015fime izin verin.<\/li>\n<li><strong>HTTPS (Port 443):<\/strong> <code>0.0.0.0\/0<\/code> (Her yerden) eri\u015fime izin verin.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n        <strong>Depolama (Storage):<\/strong> Varsay\u0131lan depolama (8GB GP2 SSD) \u00e7o\u011fu WordPress sitesi i\u00e7in yeterlidir. \u0130htiyac\u0131n\u0131za g\u00f6re art\u0131rabilirsiniz.\n    <\/li>\n<li>\n        <strong>Key Pair (Anahtar \u00c7ifti) Olu\u015fturma:<\/strong> Sunucunuza SSH ile ba\u011flanmak i\u00e7in bir anahtar \u00e7ifti olu\u015fturman\u0131z gerekecek. &#8220;Create new key pair&#8221; (Yeni anahtar \u00e7ifti olu\u015ftur) se\u00e7ene\u011fini se\u00e7in, bir isim verin ve <code>.pem<\/code> dosyas\u0131n\u0131 bilgisayar\u0131n\u0131za indirin. Bu dosyay\u0131 g\u00fcvende tutun, \u00e7\u00fcnk\u00fc sunucuya eri\u015fim i\u00e7in tek yolunuz bu olacakt\u0131r.\n    <\/li>\n<li>\n        <strong>Ba\u015flatma:<\/strong> &#8220;Launch instance&#8221; d\u00fc\u011fmesine t\u0131klayarak sunucunuzu ba\u015flat\u0131n. Birka\u00e7 dakika i\u00e7inde sunucunuz haz\u0131r olacakt\u0131r. Sunucunuzun genel IP adresini veya DNS ad\u0131n\u0131 not edin.\n    <\/li>\n<li>\n        <strong>Elastic IP Atamas\u0131 (Opsiyonel ama \u00d6nerilir):<\/strong> EC2 kontrol panelinde &#8220;Elastic IPs&#8221; b\u00f6l\u00fcm\u00fcne gidin ve yeni bir Elastic IP adresi tahsis edin. Bu IP adresini yeni ba\u015flatt\u0131\u011f\u0131n\u0131z EC2 \u00f6rne\u011fine atay\u0131n. B\u00f6ylece, sunucunuz yeniden ba\u015flat\u0131lsa bile IP adresi de\u011fi\u015fmeyecektir.\n    <\/li>\n<\/ol>\n<div class=\"expert-tip\">\n    Uzman \u0130pucu: G\u00fcvenlik grubunuzdaki SSH portunu (22) sadece kendi IP adresinize a\u00e7mak, sunucunuza y\u00f6nelik kaba kuvvet sald\u0131r\u0131lar\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde azaltacakt\u0131r. E\u011fer dinamik bir IP adresiniz varsa, bir VPN veya AWS Systems Manager Session Manager gibi alternatif ba\u011flant\u0131 y\u00f6ntemlerini d\u00fc\u015f\u00fcnebilirsiniz.\n<\/div>\n<h3>Yerel Makinenizde Ansible Kurulumu<\/h3>\n<p>\n\u015eimdi s\u0131ra yerel geli\u015ftirme makinemizde Ansible&#8217;\u0131 kurmaya geldi. Ansible, Python ile \u00e7al\u0131\u015ft\u0131\u011f\u0131 i\u00e7in, sisteminizde Python ve pip (Python paket y\u00f6neticisi) kurulu olmal\u0131d\u0131r.\n<\/p>\n<ol>\n<li>\n        <strong>Python ve pip Kurulumu (Gerekliyse):<\/strong><\/p>\n<p>\u00c7o\u011fu Linux ve macOS sisteminde Python ve pip \u00f6nceden y\u00fckl\u00fcd\u00fcr. Kontrol etmek i\u00e7in:<\/p>\n<pre><code>\npython3 --version\npip3 --version\n        <\/pre>\n<p><\/code><\/p>\n<p>E\u011fer kurulu de\u011fillerse, i\u015fletim sisteminize g\u00f6re kurun. Ubuntu i\u00e7in:<\/p>\n<pre><code>\nsudo apt update\nsudo apt install python3 python3-pip\n        <\/pre>\n<p><\/code>\n    <\/li>\n<li>\n        <strong>Ansible Kurulumu:<\/strong><\/p>\n<p>pip kullanarak Ansible'\u0131 kolayca kurabilirsiniz:<\/p>\n<pre><code>\npip3 install ansible\n        <\/pre>\n<p><\/code><\/p>\n<p>Kurulumun ba\u015far\u0131l\u0131 olup olmad\u0131\u011f\u0131n\u0131 kontrol etmek i\u00e7in:<\/p>\n<pre><code>\nansible --version\n        <\/pre>\n<p><\/code>\n    <\/li>\n<li>\n        <strong>SSH Anahtar\u0131n\u0131n Haz\u0131r Olmas\u0131:<\/strong><\/p>\n<p>AWS'den indirdi\u011finiz <code>.pem<\/code> dosyas\u0131n\u0131 SSH anahtar dizininize (<code>~\/.ssh\/<\/code>) ta\u015f\u0131y\u0131n ve izinlerini ayarlay\u0131n:<\/p>\n<pre><code>\nmv \/path\/to\/your\/key.pem ~\/.ssh\/your-key-name.pem\nchmod 400 ~\/.ssh\/your-key-name.pem\n        <\/pre>\n<p><\/code>\n    <\/li>\n<li>\n        <strong>SSH Yap\u0131land\u0131rmas\u0131 (Opsiyonel ama Tavsiye Edilir):<\/strong><\/p>\n<p><code>~\/.ssh\/config<\/code> dosyan\u0131z\u0131 d\u00fczenleyerek veya olu\u015fturarak sunucunuza daha kolay ba\u011flanabilirsiniz. Bu, Ansible'\u0131n da anahtar\u0131n\u0131z\u0131 otomatik olarak bulmas\u0131na yard\u0131mc\u0131 olur.<\/p>\n<pre><code>\nHost your_aws_server\n    HostName YOUR_EC2_PUBLIC_IP_OR_DNS\n    User ubuntu\n    IdentityFile ~\/.ssh\/your-key-name.pem\n    StrictHostKeyChecking no # Sadece ilk ba\u011flant\u0131da kolayl\u0131k i\u00e7in, sonra kald\u0131r\u0131lmal\u0131 veya yes yap\u0131lmal\u0131\n        <\/pre>\n<p><\/code><\/p>\n<p><code>YOUR_EC2_PUBLIC_IP_OR_DNS<\/code> yerine EC2 sunucunuzun Genel IP adresini veya DNS ad\u0131n\u0131, <code>your-key-name.pem<\/code> yerine anahtar dosyan\u0131z\u0131n ad\u0131n\u0131 yaz\u0131n. Art\u0131k sunucunuza <code>ssh your_aws_server<\/code> komutuyla ba\u011flanabilirsiniz.<\/p>\n<\/li>\n<\/ol>\n<p>\nBu ad\u0131mlarla, AWS \u00fczerinde bir sanal sunucu olu\u015fturduk ve Ansible'\u0131 yerel makinemize kurarak sunucuya ba\u011flanmaya haz\u0131r hale getirdik. \u015eimdi s\u0131ra, LEMP y\u0131\u011f\u0131n\u0131n\u0131 ve WordPress'i otomatik olarak kuracak Ansible playbook'umuzu yazmaya geldi.\n<\/p>\n<h2>Ansible Playbook ile Otomatik LEMP Y\u0131\u011f\u0131n\u0131 ve WordPress Kurulumu<\/h2>\n<p>\n\u015eimdi i\u015fin kalbine, yani Ansible playbook'lar\u0131na odaklanma zaman\u0131. Bu b\u00f6l\u00fcm, LEMP bile\u015fenlerini ve WordPress'i otomatik olarak kurmak i\u00e7in ad\u0131m ad\u0131m bir Ansible playbook'u nas\u0131l olu\u015fturaca\u011f\u0131m\u0131z\u0131 detayland\u0131racakt\u0131r. Amac\u0131m\u0131z, tek bir Ansible komutuyla bir sunucuyu s\u0131f\u0131rdan \u00e7al\u0131\u015fan bir WordPress sitesine d\u00f6n\u00fc\u015ft\u00fcrmektir.\n<\/p>\n<h3>Ansible Envanter Dosyas\u0131n\u0131n Olu\u015fturulmas\u0131<\/h3>\n<p>\nAnsible'\u0131n hangi sunucular\u0131 y\u00f6netece\u011fini bilmesi i\u00e7in bir envanter dosyas\u0131na ihtiyac\u0131 vard\u0131r. Genellikle bu dosya <code>hosts<\/code> veya <code>inventory.ini<\/code> olarak adland\u0131r\u0131l\u0131r. Projenizin ana dizininde bu dosyay\u0131 olu\u015ftural\u0131m:\n<\/p>\n<pre><code class=\"language-ini\">\n# hosts dosyas\u0131\n[webservers]\nyour_aws_server ansible_host=YOUR_EC2_PUBLIC_IP_OR_DNS ansible_user=ubuntu ansible_ssh_private_key_file=~\/.ssh\/your-key-name.pem\n\n[all:vars]\nansible_python_interpreter=\/usr\/bin\/python3\n<\/pre>\n<p><\/code><\/p>\n<p>\nYukar\u0131daki dosyada:\n<\/p>\n<ul>\n<li>\n        <code>[webservers]<\/code>: Bu, bir grup sunucuyu tan\u0131mlar. Playbook'unuzda bu grubu hedefleyebilirsiniz.\n    <\/li>\n<li>\n        <code>your_aws_server<\/code>: Sunucunuz i\u00e7in verdi\u011finiz takma add\u0131r.\n    <\/li>\n<li>\n        <code>ansible_host<\/code>: EC2 sunucunuzun genel IP adresi veya DNS ad\u0131.\n    <\/li>\n<li>\n        <code>ansible_user<\/code>: SSH ba\u011flant\u0131s\u0131 i\u00e7in kullan\u0131lacak kullan\u0131c\u0131 ad\u0131 (Ubuntu AMI'leri i\u00e7in genellikle <code>ubuntu<\/code>).\n    <\/li>\n<li>\n        <code>ansible_ssh_private_key_file<\/code>: AWS'den indirdi\u011finiz <code>.pem<\/code> dosyas\u0131n\u0131n yolu.\n    <\/li>\n<li>\n        <code>[all:vars]<\/code>: T\u00fcm sunucular i\u00e7in global de\u011fi\u015fkenleri tan\u0131mlar. Burada Python yorumlay\u0131c\u0131s\u0131n\u0131n yolunu belirtiyoruz.\n    <\/li>\n<\/ul>\n<p>\nBu dosya ile Ansible, sunucunuza nas\u0131l ba\u011flanaca\u011f\u0131n\u0131 bilecek.\n<\/p>\n<h3>Temel LEMP Y\u0131\u011f\u0131n\u0131 Kurulum Playbook'u<\/h3>\n<p>\n\u015eimdi <code>lemp-wordpress.yml<\/code> ad\u0131nda bir Ansible playbook dosyas\u0131 olu\u015ftural\u0131m. Bu playbook, t\u00fcm LEMP bile\u015fenlerini kuracak ve WordPress i\u00e7in veritaban\u0131n\u0131 ve dosyalar\u0131 ayarlayacakt\u0131r.\n<\/p>\n<pre><code class=\"language-yaml\">\n---\n- name: WordPress LEMP Sunucusu Kurulumu\n  hosts: webservers\n  become: yes # T\u00fcm g\u00f6revleri root yetkileriyle \u00e7al\u0131\u015ft\u0131r\n  vars:\n    mysql_root_password: \"YOUR_MARIADB_ROOT_PASSWORD\" # G\u00fc\u00e7l\u00fc bir \u015fifre belirleyin\n    wordpress_db_name: \"wordpress_db\"\n    wordpress_db_user: \"wordpress_user\"\n    wordpress_db_password: \"YOUR_WORDPRESS_DB_PASSWORD\" # G\u00fc\u00e7l\u00fc bir \u015fifre belirleyin\n    wordpress_site_name: \"example.com\" # Alan ad\u0131n\u0131z\u0131 girin\n    wordpress_install_path: \"\/var\/www\/{{ wordpress_site_name }}\"\n\n  tasks:\n    - name: Sistem paketlerini g\u00fcncelle\n      apt:\n        update_cache: yes\n        upgrade: dist\n\n    - name: Gerekli LEMP paketlerini ve PHP eklentilerini kur\n      apt:\n        name:\n          - nginx\n          - mariadb-server\n          - php-fpm\n          - php-mysql\n          - php-cli\n          - php-curl\n          - php-gd\n          - php-mbstring\n          - php-xml\n          - php-zip\n        state: present\n\n    - name: MariaDB hizmetinin ba\u015flad\u0131\u011f\u0131ndan ve etkin oldu\u011fundan emin ol\n      service:\n        name: mariadb\n        state: started\n        enabled: yes\n\n    - name: MariaDB root \u015fifresini ayarla ve gereksiz test veritabanlar\u0131n\u0131 kald\u0131r\n      community.mysql.mysql_user:\n        name: root\n        password: \"{{ mysql_root_password }}\"\n        host: \"{{ item }}\"\n        state: present\n        login_unix_socket: \/var\/run\/mysqld\/mysqld.sock\n      loop:\n        - \"{{ ansible_hostname }}\"\n        - 127.0.0.1\n        - ::1\n    - community.mysql.mysql_db:\n        name: test\n        state: absent\n        login_user: root\n        login_password: \"{{ mysql_root_password }}\"\n\n    - name: WordPress veritaban\u0131n\u0131 olu\u015ftur\n      community.mysql.mysql_db:\n        name: \"{{ wordpress_db_name }}\"\n        state: present\n        login_user: root\n        login_password: \"{{ mysql_root_password }}\"\n\n    - name: WordPress veritaban\u0131 kullan\u0131c\u0131s\u0131n\u0131 olu\u015ftur ve yetkileri ver\n      community.mysql.mysql_user:\n        name: \"{{ wordpress_db_user }}\"\n        password: \"{{ wordpress_db_password }}\"\n        priv: \"{{ wordpress_db_name }}.*:ALL\"\n        state: present\n        login_user: root\n        login_password: \"{{ mysql_root_password }}\"\n\n    - name: Nginx hizmetinin ba\u015flad\u0131\u011f\u0131ndan ve etkin oldu\u011fundan emin ol\n      service:\n        name: nginx\n        state: started\n        enabled: yes\n\n    - name: PHP-FPM hizmetinin ba\u015flad\u0131\u011f\u0131ndan ve etkin oldu\u011fundan emin ol\n      service:\n        name: php{{ ansible_facts['php_fpm']['version']['major'] }}-fpm\n        state: started\n        enabled: yes\n      vars:\n        ansible_php_fpm_version: \"{{ lookup('pipe', 'php-fpm -v | head -n 1 | cut -d \\' \\' -f 2 | cut -d \\'.\\' -f 1-2') }}\" # PHP-FPM versiyonunu otomatik bul\n\n    - name: Nginx varsay\u0131lan siteyi kald\u0131r\n      file:\n        path: \/etc\/nginx\/sites-enabled\/default\n        state: absent\n      notify: Reload Nginx\n\n    - name: WordPress dizinini olu\u015ftur\n      ansible.builtin.file:\n        path: \"{{ wordpress_install_path }}\"\n        state: directory\n        mode: '0755'\n        owner: www-data\n        group: www-data\n\n    - name: WordPress'i indir ve \u00e7\u0131kar\n      ansible.builtin.unarchive:\n        src: https:\/\/wordpress.org\/latest.tar.gz\n        dest: \"{{ wordpress_install_path }}\"\n        remote_src: yes\n        extra_opts: [--strip-components=1] # Alt klas\u00f6rden \u00e7\u0131kar\n        owner: www-data\n        group: www-data\n\n    - name: WordPress wp-config.php dosyas\u0131n\u0131 olu\u015ftur\n      template:\n        src: templates\/wp-config.php.j2 # Daha sonra olu\u015fturaca\u011f\u0131m\u0131z template dosyas\u0131\n        dest: \"{{ wordpress_install_path }}\/wp-config.php\"\n        owner: www-data\n        group: www-data\n        mode: '0644'\n      notify: Restart Nginx\n\n    - name: Nginx i\u00e7in WordPress site yap\u0131land\u0131rma dosyas\u0131n\u0131 kopyala\n      template:\n        src: templates\/nginx_wordpress.conf.j2 # Daha sonra olu\u015fturaca\u011f\u0131m\u0131z template dosyas\u0131\n        dest: \"\/etc\/nginx\/sites-available\/{{ wordpress_site_name }}\"\n        owner: root\n        group: root\n        mode: '0644'\n      notify: Reload Nginx\n\n    - name: Nginx site yap\u0131land\u0131rmas\u0131n\u0131 etkinle\u015ftir\n      file:\n        src: \"\/etc\/nginx\/sites-available\/{{ wordpress_site_name }}\"\n        dest: \"\/etc\/nginx\/sites-enabled\/{{ wordpress_site_name }}\"\n        state: link\n      notify: Reload Nginx\n\n  handlers:\n    - name: Reload Nginx\n      service:\n        name: nginx\n        state: reloaded\n\n    - name: Restart Nginx\n      service:\n        name: nginx\n        state: restarted\n\n    - name: Restart PHP-FPM\n      service:\n        name: php{{ ansible_facts['php_fpm']['version']['major'] }}-fpm\n        state: restarted\n<\/pre>\n<p><\/code><\/p>\n<p>\n<strong>Not:<\/strong> <code>YOUR_MARIADB_ROOT_PASSWORD<\/code>, <code>YOUR_WORDPRESS_DB_PASSWORD<\/code> ve <code>example.com<\/code> gibi de\u011fi\u015fkenleri kendi de\u011ferlerinizle de\u011fi\u015ftirin. G\u00fcvenlik i\u00e7in g\u00fc\u00e7l\u00fc, karma\u015f\u0131k \u015fifreler kullanman\u0131z \u00f6nemlidir.\n<\/p>\n<h3>Template Dosyalar\u0131n\u0131n Olu\u015fturulmas\u0131<\/h3>\n<p>\nPlaybook'umuzda iki template dosyas\u0131na (<code>.j2<\/code> uzant\u0131l\u0131) at\u0131fta bulunduk: <code>wp-config.php.j2<\/code> ve <code>nginx_wordpress.conf.j2<\/code>. Bunlar\u0131 playbook dosyan\u0131zla ayn\u0131 dizinde \"templates\" ad\u0131nda bir klas\u00f6r olu\u015fturup i\u00e7ine yerle\u015ftirin.\n<\/p>\n<p>\n<strong>1. <code>templates\/wp-config.php.j2<\/code>:<\/strong>\n<\/p>\n<pre><code class=\"language-php\">\n<?php\n\/**\n * The base configuration for WordPress\n *\n * The wp-config.php creation script uses this file to generate a wp-config.php file.\n *\n * @link https:\/\/wordpress.org\/support\/article\/editing-wp-config-php\/\n *\n * @package WordPress\n *\/\n\n\/\/ <strong> Database settings - You can get this info from your web host <\/strong> \/\/\n\/** The name of the database for WordPress *\/\ndefine( 'DB_NAME', '{{ wordpress_db_name }}' );\n\n\/** MySQL database username *\/\ndefine( 'DB_USER', '{{ wordpress_db_user }}' );\n\n\/** MySQL database password *\/\ndefine( 'DB_PASSWORD', '{{ wordpress_db_password }}' );\n\n\/** MySQL hostname *\/\ndefine( 'DB_HOST', 'localhost' );\n\n\/** Database Charset to use in creating database tables. *\/\ndefine( 'DB_CHARSET', 'utf8mb4' );\n\n\/** The Database Collate type. Don't change this if in doubt. *\/\ndefine( 'DB_COLLATE', '' );\n\n\/**#@+\n * Authentication Unique Keys and Salts.\n *\n * Change these to different unique phrases!\n * You can generate these using the {@link https:\/\/api.wordpress.org\/secret-key\/1.1\/salt\/ WordPress.org secret-key service}\n * You can change these at any point in time to invalidate all existing cookies. This will force all users to have to log in again.\n *\n * @since 2.6.0\n *\/\ndefine('AUTH_KEY',         '{{ lookup('community.general.random_string', length=64, special=True) }}');\ndefine('SECURE_AUTH_KEY',  '{{ lookup('community.general.random_string', length=64, special=True) }}');\ndefine('LOGGED_IN_KEY',    '{{ lookup('community.general.random_string', length=64, special=True) }}');\ndefine('NONCE_KEY',        '{{ lookup('community.general.random_string', length=64, special=True) }}');\ndefine('AUTH_SALT',        '{{ lookup('community.general.random_string', length=64, special=True) }}');\ndefine('SECURE_AUTH_SALT', '{{ lookup('community.general.random_string', length=64, special=True) }}');\ndefine('LOGGED_IN_SALT',   '{{ lookup('community.general.random_string', length=64, special=True) }}');\ndefine('NONCE_SALT',       '{{ lookup('community.general.random_string', length=64, special=True) }}');\n\n\/**#@-*\/\n\n\/**\n * WordPress Database Table prefix.\n *\n * You can have multiple installations in one database if you give each\n * a unique prefix. Only numbers, letters, and underscores please!\n *\/\n$table_prefix = 'wp_'; \/\/ You might want to change this for security\n\n\/**\n * For developers: WordPress debugging mode.\n *\n * Change this to true to enable the display of notices during development.\n * It is strongly recommended that plugin and theme developers use WP_DEBUG\n * in their development environments.\n *\n * For information on other constants that can be used for debugging,\n * visit the documentation.\n *\n * @link https:\/\/wordpress.org\/support\/article\/debugging-in-wordpress\/\n *\/\ndefine( 'WP_DEBUG', false );\n\n\/* Add any custom values between this line and the \"Happy blogging!\" line. *\/\n\n\n\n\/* That's all, stop editing! Happy blogging. *\/\n\n\/** Absolute path to the WordPress directory. *\/\nif ( ! defined( 'ABSPATH' ) ) {\n\tdefine( 'ABSPATH', __DIR__ . '\/' );\n}\n\n\/** Sets up WordPress vars and included files. *\/\nrequire_once ABSPATH . 'wp-settings.php';\n<\/pre>\n<p><\/code><\/p>\n<p>\nBu template, Ansible de\u011fi\u015fkenlerini kullanarak veritaban\u0131 bilgilerini otomatik olarak dolduracak ve <code>community.general.random_string<\/code> lookup plugin'i ile WordPress g\u00fcvenlik anahtarlar\u0131n\u0131 rastgele olu\u015fturacakt\u0131r. Bu, kurulumunuzu daha g\u00fcvenli hale getirir.\n<\/p>\n<p>\n<strong>2. <code>templates\/nginx_wordpress.conf.j2<\/code>:<\/strong>\n<\/p>\n<pre><code class=\"language-nginx\">\nserver {\n    listen 80;\n    listen [::]:80;\n    server_name {{ wordpress_site_name }} www.{{ wordpress_site_name }};\n    root {{ wordpress_install_path }};\n    index index.php index.html index.htm;\n\n    error_log \/var\/log\/nginx\/{{ wordpress_site_name }}_error.log error;\n    access_log \/var\/log\/nginx\/{{ wordpress_site_name }}_access.log;\n\n    location \/ {\n        try_files $uri $uri\/ \/index.php?$args;\n    }\n\n    location ~ \\.php$ {\n        include snippets\/fastcgi-php.conf;\n        fastcgi_pass unix:\/var\/run\/php\/php{{ ansible_facts['php_fpm']['version']['major'] }}-fpm.sock;\n        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\n        include fastcgi_params;\n    }\n\n    # Statik dosyalar i\u00e7in \u00f6nbellekleme\n    location ~* \\.(jpg|jpeg|png|gif|ico|css|js|woff|woff2|ttf|svg|eot)$ {\n        expires 365d;\n        log_not_found off;\n    }\n\n    # favicon.ico i\u00e7in log kayd\u0131 tutma\n    location = \/favicon.ico {\n        log_not_found off;\n        access_log off;\n    }\n\n    # robots.txt i\u00e7in log kayd\u0131 tutma\n    location = \/robots.txt {\n        allow all;\n        log_not_found off;\n        access_log off;\n    }\n\n    # PHP FPM ile g\u00fcvenlik\n    location ~ \/\\.ht {\n        deny all;\n    }\n\n    # .git gibi gizli dosyalar\u0131 engelle\n    location ~ \/\\. {\n        deny all;\n        access_log off;\n        log_not_found off;\n    }\n\n    # WordPress g\u00fcvenlik kurallar\u0131\n    location ~* \/(?:wp-content|wp-includes|wp-json)\/.*\\.php$ {\n        deny all;\n    }\n}\n<\/pre>\n<p><\/code><\/p>\n<p>\nBu Nginx yap\u0131land\u0131rmas\u0131, WordPress'i do\u011fru \u015fekilde \u00e7al\u0131\u015ft\u0131rmak i\u00e7in gerekli t\u00fcm ayarlar\u0131 i\u00e7erir: PHP-FPM ile entegrasyon, rewrite kurallar\u0131, statik dosya \u00f6nbelleklemesi ve temel g\u00fcvenlik optimizasyonlar\u0131. <code>ansible_facts['php_fpm']['version']['major']<\/code> de\u011fi\u015fkeni, sunucudaki kurulu PHP-FPM s\u00fcr\u00fcm\u00fcn\u00fc dinamik olarak bulup kullanacakt\u0131r.\n<\/p>\n<p>\nPlaybook'u ve template dosyalar\u0131n\u0131 haz\u0131rlad\u0131ktan sonra, tek yapman\u0131z gereken Ansible'\u0131 \u00e7al\u0131\u015ft\u0131rmak:\n<\/p>\n<pre><code class=\"language-bash\">\nansible-playbook -i hosts lemp-wordpress.yml\n<\/pre>\n<p><\/code><\/p>\n<p>\nBu komut, t\u00fcm g\u00f6revleri s\u0131rayla ger\u00e7ekle\u015ftirecek ve sunucunuzu otomatik olarak yap\u0131land\u0131racakt\u0131r. Kurulum tamamland\u0131\u011f\u0131nda, web taray\u0131c\u0131n\u0131zdan alan ad\u0131n\u0131z\u0131 (veya EC2 genel IP adresinizi) ziyaret ederek WordPress kurulum sihirbaz\u0131n\u0131 g\u00f6rmelisiniz.\n<\/p>\n<h2>Certbot ile Otomatik SSL (HTTPS) Entegrasyonu<\/h2>\n<p>\nWeb g\u00fcvenli\u011fi g\u00fcn\u00fcm\u00fczde bir tercih de\u011fil, bir zorunluluktur. SSL (Secure Sockets Layer) sertifikalar\u0131, web siteniz ile ziyaret\u00e7ileriniz aras\u0131ndaki ileti\u015fimi \u015fifreleyerek hassas bilgilerin korunmas\u0131n\u0131 sa\u011flar. Ayr\u0131ca, HTTPS (SSL kullanan HTTP), arama motoru s\u0131ralamalar\u0131nda (SEO) bir avantaj sunar ve modern taray\u0131c\u0131lar, SSL olmayan siteleri \"G\u00fcvenli De\u011fil\" olarak i\u015faretleyerek kullan\u0131c\u0131 g\u00fcvenini zedeler. Bu b\u00f6l\u00fcmde, \u00fccretsiz ve otomatik SSL sertifikalar\u0131 sa\u011flayan Certbot ve Let's Encrypt'i Ansible ile nas\u0131l entegre edece\u011fimizi g\u00f6rece\u011fiz.\n<\/p>\n<h3>SSL Neden Vazge\u00e7ilmezdir?<\/h3>\n<p>\nBir web sitesi i\u00e7in SSL sertifikas\u0131 kullanman\u0131n bir\u00e7ok \u00f6nemli nedeni vard\u0131r:\n<\/p>\n<ul>\n<li>\n        <strong>Veri \u015eifreleme:<\/strong> SSL, sunucu ile istemci (taray\u0131c\u0131) aras\u0131ndaki t\u00fcm veri ak\u0131\u015f\u0131n\u0131 \u015fifreler. Bu, \u00f6zellikle kullan\u0131c\u0131 ad\u0131, \u015fifre, kredi kart\u0131 bilgileri gibi hassas verilerin iletimi s\u0131ras\u0131nda \u00f6nemlidir ve \u00fc\u00e7\u00fcnc\u00fc taraflar\u0131n bu verilere eri\u015fmesini engeller.\n    <\/li>\n<li>\n        <strong>Veri B\u00fct\u00fcnl\u00fc\u011f\u00fc:<\/strong> SSL, iletilen verilerin de\u011fi\u015ftirilmedi\u011fini garanti eder. Bu, k\u00f6t\u00fc niyetli sald\u0131rganlar\u0131n veriyi manip\u00fcle etmesini \u00f6nler.\n    <\/li>\n<li>\n        <strong>Kimlik Do\u011frulama:<\/strong> SSL sertifikalar\u0131, bir web sitesinin iddia etti\u011fi gibi oldu\u011funu do\u011frular. Bu, kullan\u0131c\u0131lar\u0131n sahte siteler yerine ger\u00e7ek siteye ba\u011fland\u0131\u011f\u0131ndan emin olmalar\u0131n\u0131 sa\u011flar.\n    <\/li>\n<li>\n        <strong>SEO \u0130yile\u015ftirmesi:<\/strong> Google gibi arama motorlar\u0131, HTTPS kullanan sitelere s\u0131ralamalarda hafif bir avantaj tan\u0131r. Bu, sitenizin daha fazla organik trafik \u00e7ekmesine yard\u0131mc\u0131 olabilir.\n    <\/li>\n<li>\n        <strong>Kullan\u0131c\u0131 G\u00fcveni:<\/strong> Taray\u0131c\u0131larda g\u00f6r\u00fcnen kilit simgesi ve \"G\u00fcvenli\" etiketi, kullan\u0131c\u0131lara sitenizin g\u00fcvenli oldu\u011funu g\u00f6sterir ve bu da onlar\u0131n sitenizle etkile\u015fim kurma olas\u0131l\u0131\u011f\u0131n\u0131 art\u0131r\u0131r. SSL olmayan sitelerde g\u00f6r\u00fclen \"G\u00fcvenli De\u011fil\" uyar\u0131s\u0131 ise kullan\u0131c\u0131lar\u0131 uzakla\u015ft\u0131rabilir.\n    <\/li>\n<\/ul>\n<p>\nBu nedenlerden dolay\u0131, herhangi bir modern web sitesi i\u00e7in SSL bir zorunluluk haline gelmi\u015ftir. Let's Encrypt, bu ihtiyac\u0131 \u00fccretsiz ve otomatik sertifikalarla kar\u015f\u0131layarak eri\u015fimi herkes i\u00e7in kolayla\u015ft\u0131rm\u0131\u015ft\u0131r.\n<\/p>\n<h3>Certbot ve Let's Encrypt ile SSL Kurulumu<\/h3>\n<p>\nCertbot, Let's Encrypt sertifikalar\u0131n\u0131 sunucular\u0131n\u0131za kurmak ve y\u00f6netmek i\u00e7in geli\u015ftirilmi\u015f kullan\u0131m\u0131 kolay bir ara\u00e7t\u0131r. Ansible playbook'umuza Certbot kurulumunu ve sertifika edinme ad\u0131mlar\u0131n\u0131 ekleyelim.\n<\/p>\n<p>\nMevcut <code>lemp-wordpress.yml<\/code> playbook dosyan\u0131z\u0131 d\u00fczenleyerek SSL ile ilgili g\u00f6revleri ekleyebilirsiniz. \u0130\u015fte bu g\u00f6revlerin nas\u0131l g\u00f6r\u00fcnece\u011fi:\n<\/p>\n<pre><code class=\"language-yaml\">\n---\n- name: WordPress LEMP Sunucusu ve SSL Kurulumu\n  hosts: webservers\n  become: yes\n  vars:\n    # ... (\u00f6nceki de\u011fi\u015fkenler buraya)\n    wordpress_site_email: \"admin@example.com\" # Certbot i\u00e7in kullan\u0131lacak ge\u00e7erli bir e-posta adresi\n\n  tasks:\n    # ... (\u00f6nceki LEMP ve WordPress kurulum g\u00f6revleri buraya)\n\n    - name: Certbot'u kur\n      apt:\n        name:\n          - certbot\n          - python3-certbot-nginx\n        state: present\n\n    - name: Certbot ile SSL sertifikas\u0131n\u0131 al ve Nginx'i yap\u0131land\u0131r\n      ansible.builtin.command: \"certbot --nginx --non-interactive --agree-tos -m {{ wordpress_site_email }} -d {{ wordpress_site_name }} -d www.{{ wordpress_site_name }}\"\n      args:\n        creates: \"\/etc\/letsencrypt\/live\/{{ wordpress_site_name }}\/fullchain.pem\" # Sadece sertifika hen\u00fcz al\u0131nmad\u0131ysa \u00e7al\u0131\u015ft\u0131r\n      notify: Restart Nginx\n\n    - name: Certbot otomatik yenileme cron i\u015fini test et\n      ansible.builtin.cron:\n        name: \"Certbot renew\"\n        minute: \"0\"\n        hour: \"3\"\n        day: \"*\"\n        weekday: \"*\"\n        job: \"certbot renew --quiet\"\n        state: present\n<\/pre>\n<p><\/code><\/p>\n<p>\nBu yeni g\u00f6revler dizisi a\u015fa\u011f\u0131daki ad\u0131mlar\u0131 ger\u00e7ekle\u015ftirecektir:\n<\/p>\n<ol>\n<li>\n        <strong>Certbot ve Nginx Eklentisini Kurma:<\/strong> <code>certbot<\/code> ve <code>python3-certbot-nginx<\/code> paketleri, Ubuntu'nun varsay\u0131lan depolar\u0131ndan kurulur. <code>python3-certbot-nginx<\/code>, Certbot'un Nginx konfig\u00fcrasyonunu otomatik olarak de\u011fi\u015ftirmesine olanak tan\u0131yan eklentidir.\n    <\/li>\n<li>\n        <strong>SSL Sertifikas\u0131n\u0131 Alma:<\/strong> <code>ansible.builtin.command<\/code> mod\u00fcl\u00fc kullan\u0131larak <code>certbot<\/code> komutu \u00e7al\u0131\u015ft\u0131r\u0131l\u0131r.<\/p>\n<ul>\n<li>\n                <code>--nginx<\/code>: Certbot'a Nginx ile entegrasyon yapmas\u0131n\u0131 s\u00f6yler.\n            <\/li>\n<li>\n                <code>--non-interactive<\/code>: Kullan\u0131c\u0131dan herhangi bir etkile\u015fim beklemeden komutun \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar.\n            <\/li>\n<li>\n                <code>--agree-tos<\/code>: Let's Encrypt hizmet \u015fartlar\u0131n\u0131 otomatik olarak kabul eder.\n            <\/li>\n<li>\n                <code>-m {{ wordpress_site_email }}<\/code>: Sertifika bildirimleri i\u00e7in kullan\u0131lacak e-posta adresini belirtir.\n            <\/li>\n<li>\n                <code>-d {{ wordpress_site_name }} -d www.{{ wordpress_site_name }}<\/code>: Sertifikan\u0131n ge\u00e7erli olaca\u011f\u0131 alan adlar\u0131n\u0131 belirtir. Hem ana alan ad\u0131 hem de <code>www<\/code> alt alan ad\u0131 i\u00e7in sertifika alman\u0131z \u00f6nerilir.\n            <\/li>\n<li>\n                <code>args: creates: ...<\/code>: Bu, Ansible'\u0131n bir g\u00f6revi yaln\u0131zca belirtilen dosya hen\u00fcz yoksa \u00e7al\u0131\u015ft\u0131rmas\u0131n\u0131 sa\u011flayan bir \u00f6zelliktir. B\u00f6ylece, playbook'u tekrar \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda zaten mevcut olan bir sertifikay\u0131 yeniden almaya \u00e7al\u0131\u015fmaz.\n            <\/li>\n<li>\n                <code>notify: Restart Nginx<\/code>: Sertifika ba\u015far\u0131yla al\u0131nd\u0131ktan ve Nginx konfig\u00fcrasyonu g\u00fcncellendikten sonra Nginx hizmetinin yeniden ba\u015flat\u0131lmas\u0131n\u0131 tetikler.\n            <\/li>\n<\/ul>\n<\/li>\n<li>\n        <strong>Otomatik Yenileme Cron \u0130\u015fi Olu\u015fturma:<\/strong> Let's Encrypt sertifikalar\u0131 90 g\u00fcn ge\u00e7erlidir ve d\u00fczenli olarak yenilenmeleri gerekir. Certbot, bu yenileme i\u015flemini otomatikle\u015ftiren bir mekanizma sa\u011flar. <code>ansible.builtin.cron<\/code> mod\u00fcl\u00fc ile her g\u00fcn sabah 3'te \u00e7al\u0131\u015fan bir cron i\u015fi ayarlar\u0131z. <code>certbot renew --quiet<\/code> komutu, yaln\u0131zca sertifikalar\u0131n yenilenmesi gerekiyorsa sessizce yenileme yapar. Bu sayede sitenizin SSL sertifikas\u0131n\u0131n s\u00fcresi hi\u00e7bir zaman dolmaz.\n    <\/li>\n<\/ol>\n<p>\nBu g\u00f6revleri playbook'unuza ekledikten sonra, alan ad\u0131n\u0131z\u0131n AWS EC2 sunucunuzun genel IP adresine do\u011fru \u015fekilde y\u00f6nlendirildi\u011finden emin olun (DNS kay\u0131tlar\u0131n\u0131z\u0131 g\u00fcncelleyin). A kayd\u0131 olu\u015fturarak ana alan ad\u0131n\u0131z\u0131 ve CNAME kayd\u0131 olu\u015fturarak <code>www<\/code> alt alan ad\u0131n\u0131z\u0131 y\u00f6nlendirebilirsiniz. Ard\u0131ndan, playbook'u tekrar \u00e7al\u0131\u015ft\u0131r\u0131n:\n<\/p>\n<pre><code class=\"language-bash\">\nansible-playbook -i hosts lemp-wordpress.yml\n<\/pre>\n<p><\/code><\/p>\n<p>\nPlaybook ba\u015far\u0131yla tamamland\u0131\u011f\u0131nda, web sitenizi taray\u0131c\u0131n\u0131zdan ziyaret etti\u011finizde URL'nin ba\u015f\u0131nda bir kilit simgesi g\u00f6rmelisiniz, bu da SSL sertifikan\u0131z\u0131n do\u011fru \u015fekilde entegre edildi\u011fini g\u00f6sterir. Bu otomasyon sayesinde, manuel SSL kurulumu ve yenileme zahmetinden tamamen kurtulmu\u015f olursunuz.\n<\/p>\n<h2>Performans, G\u00fcvenlik ve Mobil Uyum \u0130\u00e7in \u0130pu\u00e7lar\u0131<\/h2>\n<p>\nWordPress sitenizi kurmak sadece ba\u015flang\u0131\u00e7t\u0131r. Ger\u00e7ek d\u00fcnya senaryolar\u0131nda ba\u015far\u0131l\u0131 olmak i\u00e7in sitenizin performans\u0131n\u0131, g\u00fcvenli\u011fini ve mobil uyumlulu\u011funu optimize etmeniz gerekir. Bu b\u00f6l\u00fcmde, sitenizi daha iyi hale getirecek ileri d\u00fczey ipu\u00e7lar\u0131n\u0131 ve Ansible ile nas\u0131l otomatikle\u015ftirebilece\u011finizi ke\u015ffedece\u011fiz.\n<\/p>\n<h3>WordPress Optimizasyonu ve G\u00fcvenlik Best Practice'leri<\/h3>\n<p>\nBir WordPress sitesinin performans\u0131n\u0131 ve g\u00fcvenli\u011fini art\u0131rmak, kullan\u0131c\u0131 deneyimi ve SEO i\u00e7in kritik \u00f6neme sahiptir. \u0130\u015fte uygulayabilece\u011finiz baz\u0131 stratejiler:\n<\/p>\n<ul>\n<li>\n        <strong>\u00d6nbellekleme (Caching):<\/strong> En b\u00fcy\u00fck performans art\u0131r\u0131c\u0131d\u0131r. W3 Total Cache veya WP Super Cache gibi eklentiler, dinamik WordPress sayfalar\u0131n\u0131 statik HTML dosyalar\u0131na d\u00f6n\u00fc\u015ft\u00fcrerek sunucu y\u00fck\u00fcn\u00fc azalt\u0131r ve sayfa y\u00fckleme s\u00fcrelerini h\u0131zland\u0131r\u0131r. Nginx'in kendi fastcgi_cache mekanizmas\u0131n\u0131 da kullanabilirsiniz. Ansible ile Nginx yap\u0131land\u0131rman\u0131za \u00f6nbellekleme direktifleri ekleyebilirsiniz.\n    <\/li>\n<li>\n        <strong>Resim Optimizasyonu:<\/strong> Y\u00fcksek \u00e7\u00f6z\u00fcn\u00fcrl\u00fckl\u00fc, s\u0131k\u0131\u015ft\u0131r\u0131lmam\u0131\u015f resimler sitenizi yava\u015flat\u0131r. Smush veya EWWW Image Optimizer gibi eklentilerle resimleri otomatik olarak s\u0131k\u0131\u015ft\u0131r\u0131n ve WebP format\u0131na d\u00f6n\u00fc\u015ft\u00fcr\u00fcn.\n    <\/li>\n<li>\n        <strong>Veritaban\u0131 Optimizasyonu:<\/strong> WordPress veritaban\u0131 zamanla \u015fi\u015febilir. WP-Optimize gibi eklentiler, gereksiz revizyonlar\u0131, spam yorumlar\u0131 ve ge\u00e7ici verileri temizleyerek veritaban\u0131 boyutunu k\u00fc\u00e7\u00fclt\u00fcr ve sorgu performans\u0131n\u0131 art\u0131r\u0131r.\n    <\/li>\n<li>\n        <strong>G\u00fcvenlik Eklentileri:<\/strong> Wordfence Security, Sucuri Security gibi eklentiler k\u00f6t\u00fc ama\u00e7l\u0131 yaz\u0131l\u0131mlar\u0131 tarar, g\u00fcvenlik duvar\u0131 sa\u011flar, kaba kuvvet sald\u0131r\u0131lar\u0131n\u0131 engeller ve sitenizi g\u00fcvende tutar. Ansible ile bu eklentileri (CLI kullanarak) otomatik olarak kurabilir ve varsay\u0131lan ayarlar\u0131n\u0131 yap\u0131land\u0131rabilirsiniz.\n    <\/li>\n<li>\n        <strong>G\u00fcncel Tutma:<\/strong> WordPress \u00e7ekirde\u011fi, temalar ve eklentileri d\u00fczenli olarak g\u00fcncellemek, g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 kapatmak ve performans iyile\u015ftirmelerinden yararlanmak i\u00e7in hayati \u00f6neme sahiptir. Ansible ile d\u00fczenli olarak WordPress CLI (<code>wp-cli<\/code>) kullanarak g\u00fcncelleme g\u00f6revleri \u00e7al\u0131\u015ft\u0131rabilirsiniz.\n    <\/li>\n<li>\n        <strong>DDoS Korumas\u0131 ve CDN:<\/strong> Cloudflare gibi CDN (\u0130\u00e7erik Da\u011f\u0131t\u0131m A\u011f\u0131) hizmetleri, sitenizin statik i\u00e7eri\u011fini co\u011frafi olarak yak\u0131n sunuculardan sunarak y\u00fckleme s\u00fcrelerini h\u0131zland\u0131r\u0131r ve DDoS (Da\u011f\u0131t\u0131k Hizmet Reddi) sald\u0131r\u0131lar\u0131na kar\u015f\u0131 bir kalkan g\u00f6revi g\u00f6r\u00fcr. Bu entegrasyonlar genellikle DNS seviyesinde yap\u0131l\u0131r ve Ansible ile DNS kay\u0131tlar\u0131n\u0131z\u0131 y\u00f6neten bir playbook yaz\u0131labilir.\n    <\/li>\n<\/ul>\n<div class=\"expert-tip\">\n    Uzman \u0130pucu: Nginx'in performans\u0131n\u0131 art\u0131rmak i\u00e7in Gzip s\u0131k\u0131\u015ft\u0131rmas\u0131n\u0131 ve \u00f6nbellekleme ba\u015fl\u0131klar\u0131n\u0131 etkinle\u015ftirin. Bu, \u00f6zellikle statik varl\u0131klar\u0131n\u0131z i\u00e7in bant geni\u015fli\u011fini ve y\u00fckleme s\u00fcrelerini \u00f6nemli \u00f6l\u00e7\u00fcde azaltacakt\u0131r. Ansible playbook'unuzda Nginx yap\u0131land\u0131rma dosyan\u0131za ilgili direktifleri ekleyebilirsiniz.\n<\/div>\n<h3>Mobil Uyumlu Tasar\u0131m ve Sunucu \u0130li\u015fkisi<\/h3>\n<p>\nMobil cihazlardan gelen trafik, g\u00fcn\u00fcm\u00fczde web trafi\u011finin b\u00fcy\u00fck bir k\u0131sm\u0131n\u0131 olu\u015fturmaktad\u0131r. Bu nedenle, web sitenizin mobil uyumlu olmas\u0131 sadece iyi bir pratik de\u011fil, ayn\u0131 zamanda SEO i\u00e7in de kritik bir fakt\u00f6rd\u00fcr.\n<\/p>\n<ul>\n<li>\n        <strong>Responsive Temalar:<\/strong> WordPress i\u00e7in mobil uyumlu (responsive) temalar se\u00e7mek esast\u0131r. Bu temalar, farkl\u0131 ekran boyutlar\u0131na ve \u00e7\u00f6z\u00fcn\u00fcrl\u00fcklerine otomatik olarak uyum sa\u011flar. Teman\u0131z\u0131n mobil uyumlu oldu\u011fundan emin olun.\n    <\/li>\n<li>\n        <strong>H\u0131zl\u0131 Y\u00fckleme S\u00fcreleri:<\/strong> Mobil cihazlarda internet ba\u011flant\u0131s\u0131 h\u0131z\u0131 de\u011fi\u015febilir. Bu nedenle, sunucunuzun sitenizi h\u0131zl\u0131 bir \u015fekilde sunmas\u0131 hayati \u00f6nem ta\u015f\u0131r. LEMP y\u0131\u011f\u0131n\u0131n\u0131n performans optimizasyonlar\u0131 (Nginx, PHP-FPM, \u00f6nbellekleme) burada devreye girer. H\u0131zl\u0131 bir sunucu, mobil kullan\u0131c\u0131 deneyimini do\u011frudan etkiler.\n    <\/li>\n<li>\n        <strong>Media Query \u00d6rnekleri:<\/strong> Bir web sitesinin mobil uyumlu olmas\u0131n\u0131 sa\u011flayan temel CSS tekni\u011fi <code>@media<\/code> kurallar\u0131d\u0131r. Bu kurallar, ekran boyutuna g\u00f6re farkl\u0131 stil tan\u0131mlamalar\u0131 yapman\u0131z\u0131 sa\u011flar. \u0130\u015fte basit bir \u00f6rnek:<\/p>\n<pre><code class=\"language-css\">\n\/* Genel stil tan\u0131mlamalar\u0131 *\/\n.container {\n    width: 960px;\n    margin: 0 auto;\n    padding: 20px;\n}\n.main-navigation ul {\n    display: flex;\n    justify-content: space-around;\n}\n\n\/* Mobil cihazlar i\u00e7in (ekran geni\u015fli\u011fi 768 pikselden az) *\/\n@media screen and (max-width: 768px) {\n    .container {\n        width: 100%; \/* Mobil cihazlarda tam geni\u015flik *\/\n        padding: 10px;\n    }\n    .main-navigation ul {\n        flex-direction: column; \/* Men\u00fc \u00f6\u011felerini alt alta s\u0131rala *\/\n        text-align: center;\n    }\n    .main-navigation li {\n        margin-bottom: 10px;\n    }\n}\n        <\/pre>\n<p><\/code><br \/>\n        Bu \u00f6rnekte, taray\u0131c\u0131 geni\u015fli\u011fi 768 pikselin alt\u0131na d\u00fc\u015ft\u00fc\u011f\u00fcnde, <code>.container<\/code> elementinin geni\u015fli\u011fi de\u011fi\u015fir ve men\u00fc (<code>.main-navigation ul<\/code>) dikey olarak s\u0131ralan\u0131r. WordPress temalar\u0131 genellikle bu t\u00fcr kurallar\u0131 i\u00e7erir, ancak kendi \u00f6zel CSS'inizi ekliyorsan\u0131z bu prensibi ak\u0131lda tutmal\u0131s\u0131n\u0131z.\n    <\/li>\n<\/ul>\n<h3>Otomatik Yedekleme Stratejileri<\/h3>\n<p>\nFelaketler her zaman beklenmedik anlarda gelir. Bu nedenle, d\u00fczenli ve otomatik yedeklemeler, sitenizin verilerinin g\u00fcvende oldu\u011fundan emin olman\u0131n tek yoludur.\n<\/p>\n<ul>\n<li>\n        <strong>Veritaban\u0131 Yedeklemesi:<\/strong> MariaDB'nin <code>mysqldump<\/code> komutu ile veritaban\u0131n\u0131z\u0131 bir dosyaya yedekleyebilirsiniz. Ansible ile bu komutu d\u00fczenli olarak \u00e7al\u0131\u015ft\u0131ran bir g\u00f6rev olu\u015fturup yedekleme dosyas\u0131n\u0131 uzak bir depolama alan\u0131na (\u00f6rn. AWS S3) g\u00f6nderebilirsiniz.<\/p>\n<pre><code class=\"language-yaml\">\n- name: MariaDB veritaban\u0131n\u0131 yedekle\n  community.mysql.mysql_db:\n    name: \"{{ wordpress_db_name }}\"\n    state: dump\n    target: \"\/tmp\/{{ wordpress_db_name }}_$(date +%%Y%%m%%d%%H%%M).sql\"\n    login_user: root\n    login_password: \"{{ mysql_root_password }}\"\n\n- name: Yedekleme dosyas\u0131n\u0131 S3'e y\u00fckle (\u00f6rnek, AWS CLI kurulu olmal\u0131)\n  ansible.builtin.command: \"aws s3 cp \/tmp\/{{ wordpress_db_name }}_$(date +%%Y%%m%%d%%H%%M).sql s3:\/\/your-s3-bucket-name\/backups\/\"\n  args:\n    removes: \"\/tmp\/{{ wordpress_db_name }}_$(date +%%Y%%m%%d%%H%%M).sql\" # Y\u00fckledikten sonra yerelden sil\n        <\/pre>\n<p><\/code>\n    <\/li>\n<li>\n        <strong>Dosya Yedeklemesi:<\/strong> WordPress dosyalar\u0131n\u0131 (<code>wp-content<\/code> klas\u00f6r\u00fc dahil) d\u00fczenli olarak yedeklemek de \u00f6nemlidir. <code>tar<\/code> komutu ile t\u00fcm site dizinini s\u0131k\u0131\u015ft\u0131rabilir ve yine AWS S3 gibi g\u00fcvenli bir konuma y\u00fckleyebilirsiniz.\n    <\/li>\n<li>\n        <strong>AWS S3 Entegrasyonu:<\/strong> AWS S3, web sitenizin yedeklerini depolamak i\u00e7in ideal, uygun maliyetli ve y\u00fcksek d\u00fczeyde dayan\u0131kl\u0131 bir depolama \u00e7\u00f6z\u00fcm\u00fcd\u00fcr. Ansible ile AWS CLI'y\u0131 kullanarak yedekleme dosyalar\u0131n\u0131 S3'e otomatik olarak y\u00fckleyebilirsiniz. Bir cron g\u00f6revi ile bu Ansible playbook'u d\u00fczenli olarak \u00e7al\u0131\u015ft\u0131rarak tam otomatik bir yedekleme sistemi kurabilirsiniz.\n    <\/li>\n<\/ul>\n<p>\nBu ileri d\u00fczey ipu\u00e7lar\u0131 ve otomasyon stratejileri, WordPress sitenizin sadece \u00e7al\u0131\u015f\u0131r durumda olmas\u0131n\u0131 de\u011fil, ayn\u0131 zamanda y\u00fcksek performansl\u0131, g\u00fcvenli ve s\u00fcrd\u00fcr\u00fclebilir olmas\u0131n\u0131 sa\u011flayacakt\u0131r.\n<\/p>\n<h2>Sonu\u00e7 ve S\u0131k\u00e7a Sorulan Sorular<\/h2>\n<p>\nBu makale boyunca, AWS \u00fczerinde bir WordPress LEMP sunucusunu Ansible ile tamamen otomatik bir \u015fekilde nas\u0131l kuraca\u011f\u0131m\u0131z\u0131, SSL sertifikas\u0131n\u0131 nas\u0131l entegre edece\u011fimizi ve ard\u0131ndan performans, g\u00fcvenlik ve mobil uyumluluk i\u00e7in ileri d\u00fczey ipu\u00e7lar\u0131n\u0131 nas\u0131l uygulayaca\u011f\u0131m\u0131z\u0131 \u00f6\u011frendik. Manuel kurulumlar\u0131n getirdi\u011fi karma\u015f\u0131kl\u0131\u011f\u0131 ve hata pay\u0131n\u0131 ortadan kald\u0131rarak, da\u011f\u0131t\u0131m s\u00fcre\u00e7lerimizi h\u0131zland\u0131rmak ve tutarl\u0131l\u0131\u011f\u0131 art\u0131rmak i\u00e7in otomasyonun g\u00fcc\u00fcnden faydaland\u0131k.\n<\/p>\n<p>\nAnsible'\u0131n deklaratif yap\u0131s\u0131 ve idempotence \u00f6zelli\u011fi sayesinde, sunucu yap\u0131land\u0131rman\u0131z\u0131 bir kod olarak tan\u0131mlayabilir ve bu kodu tekrar tekrar, g\u00fcvenle \u00e7al\u0131\u015ft\u0131rabilirsiniz. Bu, DevOps yakla\u015f\u0131mlar\u0131n\u0131n temelini olu\u015fturur ve g\u00fcn\u00fcm\u00fcz\u00fcn modern BT altyap\u0131 y\u00f6netiminde vazge\u00e7ilmez bir ara\u00e7 haline gelmi\u015ftir. Art\u0131k sunucular\u0131n\u0131z\u0131 birka\u00e7 dakika i\u00e7inde s\u0131f\u0131rdan kurabilir, SSL'inizi entegre edebilir ve hatta yedekleme i\u015flemlerinizi otomatikle\u015ftirerek i\u015f y\u00fck\u00fcn\u00fcz\u00fc \u00f6nemli \u00f6l\u00e7\u00fcde azaltabilirsiniz. Bu yakla\u015f\u0131m, sadece zamandan ve emekten tasarruf sa\u011flamakla kalmaz, ayn\u0131 zamanda altyap\u0131n\u0131z\u0131n daha g\u00fcvenli, daha kararl\u0131 ve daha \u00f6l\u00e7eklenebilir olmas\u0131n\u0131 da garanti eder.\n<\/p>\n<p>\nUmar\u0131z bu rehber, kendi otomatik WordPress LEMP sunucunuzu AWS \u00fczerinde ba\u015far\u0131yla kurman\u0131za yard\u0131mc\u0131 olmu\u015ftur. Unutmay\u0131n, otomasyon s\u00fcrekli bir s\u00fcre\u00e7tir; playbook'lar\u0131n\u0131z\u0131 geli\u015ftirmeye ve yeni \u00f6zellikler eklemeye devam edin!\n<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular<\/h3>\n<ol>\n<li>\n        <strong>LEMP yerine LAMP kullanmak m\u00fcmk\u00fcn m\u00fc?<\/strong><\/p>\n<p>Evet, elbette m\u00fcmk\u00fcn. LAMP (Linux, Apache, MySQL, PHP) y\u0131\u011f\u0131n\u0131 da WordPress i\u00e7in olduk\u00e7a pop\u00fcler ve yayg\u0131n olarak kullan\u0131lan bir kombinasyondur. Apache'nin <code>.htaccess<\/code> dosyalar\u0131 gibi baz\u0131 \u00f6zellikleri, WordPress eklentileriyle daha iyi entegrasyon sa\u011flayabilir. Ancak Nginx (LEMP'teki \"E\"), \u00f6zellikle y\u00fcksek trafikli sitelerde ve statik i\u00e7erik sunumunda genellikle daha iyi performans ve kaynak verimlili\u011fi sunar. Tercihiniz Apache y\u00f6n\u00fcndeyse, Ansible playbook'unuzdaki Nginx ile ilgili g\u00f6revleri Apache kurulumu ve yap\u0131land\u0131rmas\u0131yla de\u011fi\u015ftirmeniz gerekir.<\/p>\n<\/li>\n<li>\n        <strong>Ansible playbook'lar\u0131m\u0131 nas\u0131l s\u00fcr\u00fcm kontrol\u00fcnde tutar\u0131m?<\/strong><\/p>\n<p>Ansible playbook'lar\u0131n\u0131z\u0131, envanter dosyalar\u0131n\u0131z\u0131 ve template'lerinizi Git gibi bir s\u00fcr\u00fcm kontrol sisteminde (\u00f6rn. GitHub, GitLab, Bitbucket) saklaman\u0131z \u015fiddetle tavsiye edilir. Bu, de\u011fi\u015fiklikleri takip etmenizi, farkl\u0131 versiyonlar aras\u0131nda ge\u00e7i\u015f yapman\u0131z\u0131, ekip i\u00e7inde i\u015fbirli\u011fi yapman\u0131z\u0131 ve bir sorun durumunda kolayca \u00f6nceki bir s\u00fcr\u00fcme geri d\u00f6nmenizi sa\u011flar. Her bir de\u011fi\u015fiklik i\u00e7in anlaml\u0131 commit mesajlar\u0131 kullanmak da iyi bir pratik olacakt\u0131r.<\/p>\n<\/li>\n<li>\n        <strong>Birden fazla WordPress sitesi kurabilir miyim?<\/strong><\/p>\n<p>Evet, kesinlikle. Ansible playbook'unuzu, Nginx'te birden fazla <code>server<\/code> blo\u011fu ve her site i\u00e7in ayr\u0131 veritaban\u0131\/kullan\u0131c\u0131 olu\u015fturacak \u015fekilde geni\u015fletebilirsiniz. Bu, Ansible'daki d\u00f6ng\u00fcler (loops) ve de\u011fi\u015fkenler kullan\u0131larak kolayca yap\u0131labilir. Her site i\u00e7in farkl\u0131 de\u011fi\u015fken dosyalar\u0131 (<code>group_vars<\/code> veya <code>host_vars<\/code>) kullanarak konfig\u00fcrasyonlar\u0131 ay\u0131rabilirsiniz. Ayr\u0131ca, WordPress'in multisite \u00f6zelli\u011fini de d\u00fc\u015f\u00fcnebilirsiniz.<\/p>\n<\/li>\n<li>\n        <strong>SSL sertifikas\u0131 neden otomatik yenilenmeli?<\/strong><\/p>\n<p>Let's Encrypt taraf\u0131ndan sa\u011flanan SSL sertifikalar\u0131, \u00fccretsiz olmalar\u0131 kar\u015f\u0131l\u0131\u011f\u0131nda 90 g\u00fcnl\u00fck k\u0131sa bir ge\u00e7erlilik s\u00fcresine sahiptir. Bu s\u00fcre zarf\u0131nda sertifika yenilenmezse, siteniz tekrar \"G\u00fcvenli De\u011fil\" uyar\u0131s\u0131 g\u00f6sterecek ve ziyaret\u00e7ileriniz siteye eri\u015fimde sorun ya\u015fayacakt\u0131r. Certbot'un otomatik yenileme \u00f6zelli\u011fi sayesinde bu manuel yenileme derdinden kurtulur ve sitenizin kesintisiz HTTPS eri\u015fimi sa\u011flamaya devam etti\u011finden emin olursunuz. Yenileme i\u015flemi genellikle son 30 g\u00fcn i\u00e7inde yap\u0131l\u0131r.<\/p>\n<\/li>\n<li>\n        <strong>AWS d\u0131\u015f\u0131nda ba\u015fka bulut sa\u011flay\u0131c\u0131larda bu y\u00f6ntem ge\u00e7erli mi?<\/strong><\/p>\n<p>Evet, genel olarak bu y\u00f6ntem AWS d\u0131\u015f\u0131nda DigitalOcean, Google Cloud Platform (GCP), Microsoft Azure gibi di\u011fer bulut sa\u011flay\u0131c\u0131larda da ge\u00e7erlidir. Ansible, SSH \u00fczerinden \u00e7al\u0131\u015ft\u0131\u011f\u0131 i\u00e7in altta yatan bulut platformundan ba\u011f\u0131ms\u0131zd\u0131r. Tek fark, sunucu (instance) olu\u015fturma ad\u0131mlar\u0131 ve Ansible envanter dosyas\u0131nda sunucuya ba\u011flanmak i\u00e7in kullanaca\u011f\u0131n\u0131z kimlik do\u011frulama bilgileri (genel IP, kullan\u0131c\u0131 ad\u0131 ve SSH anahtar\u0131) olacakt\u0131r. Playbook'un \u00e7o\u011fu k\u0131sm\u0131 (paket kurulumu, Nginx\/MariaDB\/PHP konfig\u00fcrasyonu) ayn\u0131 kalacakt\u0131r.<\/p>\n<\/li>\n<\/ol>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Manuel sunucu kurulumlar\u0131 zaman al\u0131c\u0131, hataya a\u00e7\u0131k ve s\u0131k\u0131c\u0131 olabilir. \u00d6zellikle bir WordPress sitesini LEMP (Linux, Nginx, MySQL,&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":[1406],"tags":[],"class_list":{"0":"post-34191","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-aws","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>Otomatik WordPress LEMP Sunucu Kurulumu: AWS ve Ansible ile SSL Entegrasyonu<\/title>\n<meta name=\"description\" content=\"Manuel sunucu kurulumlar\u0131 zaman al\u0131c\u0131, hataya a\u00e7\u0131k ve s\u0131k\u0131c\u0131 olabilir. \u00d6zellikle bir WordPress sitesini LEMP (Linux, Nginx, MySQL, PHP-FPM) y\u0131\u011f\u0131n\u0131yla AWS \u00fczerine kurarken bu s\u00fcre\u00e7 daha da karma\u015f\u0131kla\u015f\u0131r. Peki, bu karma\u015f\u0131kl\u0131\u011f\u0131 tamamen otomatikle\u015ftirmek, SSL sertifikas\u0131n\u0131 bile tek bir komutla entegre etmek m\u00fcmk\u00fcn olsayd\u0131 ne d\u00fc\u015f\u00fcn\u00fcrd\u00fcn\u00fcz? \u0130\u015fte bu makale, AWS \u00fczerinde g\u00fc\u00e7l\u00fc, g\u00fcvenli ve performansl\u0131 bir WordPress LEMP sunucusunu Ansible kullanarak nas\u0131l tamamen otomatik bir \u015fekilde kuraca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m a\u00e7\u0131kl\u0131yor.\" \/>\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\/otomatik-wordpress-lemp-sunucu-kurulumu-aws-ve-ansible-ile-ssl-entegrasyonu\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Otomatik WordPress LEMP Sunucu Kurulumu: AWS ve Ansible ile SSL Entegrasyonu\" \/>\n<meta property=\"og:description\" content=\"Manuel sunucu kurulumlar\u0131 zaman al\u0131c\u0131, hataya a\u00e7\u0131k ve s\u0131k\u0131c\u0131 olabilir. \u00d6zellikle bir WordPress sitesini LEMP (Linux, Nginx, MySQL, PHP-FPM) y\u0131\u011f\u0131n\u0131yla AWS \u00fczerine kurarken bu s\u00fcre\u00e7 daha da karma\u015f\u0131kla\u015f\u0131r. Peki, bu karma\u015f\u0131kl\u0131\u011f\u0131 tamamen otomatikle\u015ftirmek, SSL sertifikas\u0131n\u0131 bile tek bir komutla entegre etmek m\u00fcmk\u00fcn olsayd\u0131 ne d\u00fc\u015f\u00fcn\u00fcrd\u00fcn\u00fcz? \u0130\u015fte bu makale, AWS \u00fczerinde g\u00fc\u00e7l\u00fc, g\u00fcvenli ve performansl\u0131 bir WordPress LEMP sunucusunu Ansible kullanarak nas\u0131l tamamen otomatik bir \u015fekilde kuraca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m a\u00e7\u0131kl\u0131yor.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/otomatik-wordpress-lemp-sunucu-kurulumu-aws-ve-ansible-ile-ssl-entegrasyonu\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-12T10:31:29+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"16 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/otomatik-wordpress-lemp-sunucu-kurulumu-aws-ve-ansible-ile-ssl-entegrasyonu\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/otomatik-wordpress-lemp-sunucu-kurulumu-aws-ve-ansible-ile-ssl-entegrasyonu\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Otomatik WordPress LEMP Sunucu Kurulumu: AWS ve Ansible ile SSL Entegrasyonu\",\"datePublished\":\"2025-11-12T10:31:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/otomatik-wordpress-lemp-sunucu-kurulumu-aws-ve-ansible-ile-ssl-entegrasyonu\/\"},\"wordCount\":5037,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"AWS\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/otomatik-wordpress-lemp-sunucu-kurulumu-aws-ve-ansible-ile-ssl-entegrasyonu\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/otomatik-wordpress-lemp-sunucu-kurulumu-aws-ve-ansible-ile-ssl-entegrasyonu\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/otomatik-wordpress-lemp-sunucu-kurulumu-aws-ve-ansible-ile-ssl-entegrasyonu\/\",\"name\":\"Otomatik WordPress LEMP Sunucu Kurulumu: AWS ve Ansible ile SSL Entegrasyonu\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-11-12T10:31:29+00:00\",\"description\":\"Manuel sunucu kurulumlar\u0131 zaman al\u0131c\u0131, hataya a\u00e7\u0131k ve s\u0131k\u0131c\u0131 olabilir. \u00d6zellikle bir WordPress sitesini LEMP (Linux, Nginx, MySQL, PHP-FPM) y\u0131\u011f\u0131n\u0131yla AWS \u00fczerine kurarken bu s\u00fcre\u00e7 daha da karma\u015f\u0131kla\u015f\u0131r. Peki, bu karma\u015f\u0131kl\u0131\u011f\u0131 tamamen otomatikle\u015ftirmek, SSL sertifikas\u0131n\u0131 bile tek bir komutla entegre etmek m\u00fcmk\u00fcn olsayd\u0131 ne d\u00fc\u015f\u00fcn\u00fcrd\u00fcn\u00fcz? \u0130\u015fte bu makale, AWS \u00fczerinde g\u00fc\u00e7l\u00fc, g\u00fcvenli ve performansl\u0131 bir WordPress LEMP sunucusunu Ansible kullanarak nas\u0131l tamamen otomatik bir \u015fekilde kuraca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m a\u00e7\u0131kl\u0131yor.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/otomatik-wordpress-lemp-sunucu-kurulumu-aws-ve-ansible-ile-ssl-entegrasyonu\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/otomatik-wordpress-lemp-sunucu-kurulumu-aws-ve-ansible-ile-ssl-entegrasyonu\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/otomatik-wordpress-lemp-sunucu-kurulumu-aws-ve-ansible-ile-ssl-entegrasyonu\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Otomatik WordPress LEMP Sunucu Kurulumu: AWS ve Ansible ile SSL Entegrasyonu\"}]},{\"@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":"Otomatik WordPress LEMP Sunucu Kurulumu: AWS ve Ansible ile SSL Entegrasyonu","description":"Manuel sunucu kurulumlar\u0131 zaman al\u0131c\u0131, hataya a\u00e7\u0131k ve s\u0131k\u0131c\u0131 olabilir. \u00d6zellikle bir WordPress sitesini LEMP (Linux, Nginx, MySQL, PHP-FPM) y\u0131\u011f\u0131n\u0131yla AWS \u00fczerine kurarken bu s\u00fcre\u00e7 daha da karma\u015f\u0131kla\u015f\u0131r. Peki, bu karma\u015f\u0131kl\u0131\u011f\u0131 tamamen otomatikle\u015ftirmek, SSL sertifikas\u0131n\u0131 bile tek bir komutla entegre etmek m\u00fcmk\u00fcn olsayd\u0131 ne d\u00fc\u015f\u00fcn\u00fcrd\u00fcn\u00fcz? \u0130\u015fte bu makale, AWS \u00fczerinde g\u00fc\u00e7l\u00fc, g\u00fcvenli ve performansl\u0131 bir WordPress LEMP sunucusunu Ansible kullanarak nas\u0131l tamamen otomatik bir \u015fekilde kuraca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m a\u00e7\u0131kl\u0131yor.","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\/otomatik-wordpress-lemp-sunucu-kurulumu-aws-ve-ansible-ile-ssl-entegrasyonu\/","og_locale":"tr_TR","og_type":"article","og_title":"Otomatik WordPress LEMP Sunucu Kurulumu: AWS ve Ansible ile SSL Entegrasyonu","og_description":"Manuel sunucu kurulumlar\u0131 zaman al\u0131c\u0131, hataya a\u00e7\u0131k ve s\u0131k\u0131c\u0131 olabilir. \u00d6zellikle bir WordPress sitesini LEMP (Linux, Nginx, MySQL, PHP-FPM) y\u0131\u011f\u0131n\u0131yla AWS \u00fczerine kurarken bu s\u00fcre\u00e7 daha da karma\u015f\u0131kla\u015f\u0131r. Peki, bu karma\u015f\u0131kl\u0131\u011f\u0131 tamamen otomatikle\u015ftirmek, SSL sertifikas\u0131n\u0131 bile tek bir komutla entegre etmek m\u00fcmk\u00fcn olsayd\u0131 ne d\u00fc\u015f\u00fcn\u00fcrd\u00fcn\u00fcz? \u0130\u015fte bu makale, AWS \u00fczerinde g\u00fc\u00e7l\u00fc, g\u00fcvenli ve performansl\u0131 bir WordPress LEMP sunucusunu Ansible kullanarak nas\u0131l tamamen otomatik bir \u015fekilde kuraca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m a\u00e7\u0131kl\u0131yor.","og_url":"https:\/\/fatihsoysal.com\/blog\/otomatik-wordpress-lemp-sunucu-kurulumu-aws-ve-ansible-ile-ssl-entegrasyonu\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-11-12T10:31:29+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"16 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/otomatik-wordpress-lemp-sunucu-kurulumu-aws-ve-ansible-ile-ssl-entegrasyonu\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/otomatik-wordpress-lemp-sunucu-kurulumu-aws-ve-ansible-ile-ssl-entegrasyonu\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Otomatik WordPress LEMP Sunucu Kurulumu: AWS ve Ansible ile SSL Entegrasyonu","datePublished":"2025-11-12T10:31:29+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/otomatik-wordpress-lemp-sunucu-kurulumu-aws-ve-ansible-ile-ssl-entegrasyonu\/"},"wordCount":5037,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["AWS"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/otomatik-wordpress-lemp-sunucu-kurulumu-aws-ve-ansible-ile-ssl-entegrasyonu\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/otomatik-wordpress-lemp-sunucu-kurulumu-aws-ve-ansible-ile-ssl-entegrasyonu\/","url":"https:\/\/fatihsoysal.com\/blog\/otomatik-wordpress-lemp-sunucu-kurulumu-aws-ve-ansible-ile-ssl-entegrasyonu\/","name":"Otomatik WordPress LEMP Sunucu Kurulumu: AWS ve Ansible ile SSL Entegrasyonu","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-11-12T10:31:29+00:00","description":"Manuel sunucu kurulumlar\u0131 zaman al\u0131c\u0131, hataya a\u00e7\u0131k ve s\u0131k\u0131c\u0131 olabilir. \u00d6zellikle bir WordPress sitesini LEMP (Linux, Nginx, MySQL, PHP-FPM) y\u0131\u011f\u0131n\u0131yla AWS \u00fczerine kurarken bu s\u00fcre\u00e7 daha da karma\u015f\u0131kla\u015f\u0131r. Peki, bu karma\u015f\u0131kl\u0131\u011f\u0131 tamamen otomatikle\u015ftirmek, SSL sertifikas\u0131n\u0131 bile tek bir komutla entegre etmek m\u00fcmk\u00fcn olsayd\u0131 ne d\u00fc\u015f\u00fcn\u00fcrd\u00fcn\u00fcz? \u0130\u015fte bu makale, AWS \u00fczerinde g\u00fc\u00e7l\u00fc, g\u00fcvenli ve performansl\u0131 bir WordPress LEMP sunucusunu Ansible kullanarak nas\u0131l tamamen otomatik bir \u015fekilde kuraca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m a\u00e7\u0131kl\u0131yor.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/otomatik-wordpress-lemp-sunucu-kurulumu-aws-ve-ansible-ile-ssl-entegrasyonu\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/otomatik-wordpress-lemp-sunucu-kurulumu-aws-ve-ansible-ile-ssl-entegrasyonu\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/otomatik-wordpress-lemp-sunucu-kurulumu-aws-ve-ansible-ile-ssl-entegrasyonu\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Otomatik WordPress LEMP Sunucu Kurulumu: AWS ve Ansible ile SSL Entegrasyonu"}]},{"@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\/34191","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=34191"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/34191\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=34191"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=34191"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=34191"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}