{"id":37149,"date":"2025-12-28T02:40:52","date_gmt":"2025-12-27T23:40:52","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=37149"},"modified":"2025-12-28T02:40:52","modified_gmt":"2025-12-27T23:40:52","slug":"wordpress-yerel-gelistirme-ortami-kurulumu-vagrant-ile-neden-ve-nasil","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/wordpress-yerel-gelistirme-ortami-kurulumu-vagrant-ile-neden-ve-nasil\/","title":{"rendered":"WordPress Yerel Geli\u015ftirme Ortam\u0131 Kurulumu: Vagrant ile Neden ve Nas\u0131l?"},"content":{"rendered":"<p><body><\/p>\n<h2>WordPress Yerel Geli\u015ftirme Ortam\u0131 Kurulumu: Vagrant ile Neden ve Nas\u0131l?<\/h2>\n<p>Modern web geli\u015ftirme s\u00fcre\u00e7lerinde, \u00f6zellikle WordPress gibi dinamik ve veritaban\u0131 tabanl\u0131 sistemlerde, sa\u011flam ve tutarl\u0131 bir geli\u015ftirme ortam\u0131na sahip olmak hayati \u00f6neme sahiptir. &#8220;Makinede \u00e7al\u0131\u015f\u0131yor ama sunucuda \u00e7al\u0131\u015fm\u0131yor&#8221; sendromundan ka\u00e7\u0131nmak, farkl\u0131 geli\u015ftiriciler aras\u0131nda i\u015fbirli\u011fini kolayla\u015ft\u0131rmak ve \u00fcretim ortam\u0131na yak\u0131n bir deneyim sunmak i\u00e7in yerel geli\u015ftirme ortamlar\u0131 vazge\u00e7ilmezdir. Geleneksel olarak XAMPP, MAMP veya WAMP gibi paketler kullan\u0131lsa da, bu \u00e7\u00f6z\u00fcmler genellikle esneklik, izolasyon ve tekrarlanabilirlik konusunda yetersiz kalabilir. \u0130\u015fte bu noktada Vagrant devreye girerek, sanalla\u015ft\u0131rma teknolojisinin g\u00fcc\u00fcn\u00fc kullanarak geli\u015ftiricilere tutarl\u0131, ta\u015f\u0131nabilir ve otomatize edilmi\u015f yerel geli\u015ftirme ortamlar\u0131 kurma imkan\u0131 sunar.<\/p>\n<p>Bu makalede, Vagrant&#8217;\u0131n ne oldu\u011funu, WordPress geli\u015ftirme s\u00fcre\u00e7lerinizde neden bu kadar \u00f6nemli oldu\u011funu ve ad\u0131m ad\u0131m nas\u0131l bir WordPress yerel geli\u015ftirme ortam\u0131 kuraca\u011f\u0131n\u0131z\u0131 ayr\u0131nt\u0131l\u0131 bir \u015fekilde inceleyece\u011fiz. Ayr\u0131ca, en iyi uygulamalar, geli\u015fmi\u015f yap\u0131land\u0131rmalar ve kar\u015f\u0131la\u015fabilece\u011finiz olas\u0131 sorunlara y\u00f6nelik \u00e7\u00f6z\u00fcmlere de de\u011finece\u011fiz.<\/p>\n<h3>Neden Vagrant ile Yerel Geli\u015ftirme Ortam\u0131 Kurmal\u0131s\u0131n\u0131z?<\/h3>\n<p>Vagrant, geli\u015ftirme ortamlar\u0131n\u0131 sanal makineler (VM&#8217;ler) \u00fczerinde otomatik olarak yap\u0131land\u0131rmak ve y\u00f6netmek i\u00e7in tasarlanm\u0131\u015f bir ara\u00e7t\u0131r. VirtualBox, VMware veya Hyper-V gibi sanalla\u015ft\u0131rma yaz\u0131l\u0131mlar\u0131yla entegre \u00e7al\u0131\u015farak, her projeye \u00f6zel izole edilmi\u015f ve tutarl\u0131 bir ortam sa\u011flar. WordPress geli\u015ftiricileri i\u00e7in Vagrant&#8217;\u0131n sundu\u011fu temel avantajlar \u015funlard\u0131r:<\/p>\n<h4>Tutarl\u0131l\u0131k (Consistency)<\/h4>\n<p>*   <strong>Geli\u015ftirici ve \u00dcretim Ortam\u0131 Aras\u0131nda:<\/strong> Vagrant, yerel ortam\u0131n\u0131z\u0131 \u00fcretim sunucunuzun yap\u0131land\u0131rmas\u0131na (i\u015fletim sistemi, PHP s\u00fcr\u00fcm\u00fc, veritaban\u0131 s\u00fcr\u00fcm\u00fc vb.) m\u00fcmk\u00fcn oldu\u011funca yak\u0131n bir \u015fekilde ayarlaman\u0131za olanak tan\u0131r. Bu, &#8220;benim makinemde \u00e7al\u0131\u015f\u0131yordu&#8221; sorunlar\u0131n\u0131 ortadan kald\u0131r\u0131r ve da\u011f\u0131t\u0131m s\u0131ras\u0131nda beklenmedik hatalar\u0131 en aza indirir.<br \/>\n*   <strong>Ekip \u0130\u00e7inde Tutarl\u0131l\u0131k:<\/strong> Bir ekipte birden fazla geli\u015ftirici \u00e7al\u0131\u015ft\u0131\u011f\u0131nda, herkesin ayn\u0131 geli\u015ftirme ortam\u0131na sahip olmas\u0131 kritik \u00f6neme sahiptir. Vagrantfile, projenin s\u00fcr\u00fcm kontrol sistemine (Git gibi) eklendi\u011finde, yeni bir geli\u015ftirici veya mevcut bir geli\u015ftirici makine de\u011fi\u015ftirdi\u011finde, ortam\u0131 saniyeler i\u00e7inde tamamen ayn\u0131 \u015fekilde kurabilir.<\/p>\n<h4>Ta\u015f\u0131nabilirlik (Portability)<\/h4>\n<p>*   Vagrant ortamlar\u0131 ta\u015f\u0131nabilirdir. Bir projeyi bir bilgisayardan di\u011ferine ta\u015f\u0131mak veya yeni bir projeye ba\u015flamak, sadece proje dizinini kopyalamak ve <code>vagrant up<\/code> komutunu \u00e7al\u0131\u015ft\u0131rmak kadar kolayd\u0131r. Bu, kurulum ve yap\u0131land\u0131rma s\u00fcre\u00e7lerine harcanan zaman\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde azalt\u0131r.<\/p>\n<h4>\u0130zolasyon (Isolation)<\/h4>\n<p>*   Her Vagrant ortam\u0131 kendi sanal makinesinde \u00e7al\u0131\u015ft\u0131\u011f\u0131 i\u00e7in, projeler birbirinden tamamen izole edilmi\u015ftir. Bu, farkl\u0131 WordPress projelerinin farkl\u0131 PHP s\u00fcr\u00fcmleri, Apache\/Nginx yap\u0131land\u0131rmalar\u0131 veya veritaban\u0131 sistemleri gerektirdi\u011finde b\u00fcy\u00fck bir avantajd\u0131r. Ana i\u015fletim sisteminizdeki yaz\u0131l\u0131mlarla \u00e7ak\u0131\u015fma riski ortadan kalkar.<br \/>\n*   Ana sisteminizde herhangi bir yaz\u0131l\u0131m kurman\u0131za gerek kalmaz, bu da ana sisteminizi temiz ve d\u00fczenli tutman\u0131z\u0131 sa\u011flar.<\/p>\n<h4>Tekrarlanabilirlik (Reproducibility)<\/h4>\n<p>*   Vagrantfile, ortam\u0131n t\u00fcm yap\u0131land\u0131rmas\u0131n\u0131 kod olarak tan\u0131mlar. Bu, ortam\u0131 istedi\u011finiz zaman yok edip (destroy) yeniden olu\u015fturabilece\u011finiz anlam\u0131na gelir. Bu, \u00f6zellikle karma\u015f\u0131k bir yap\u0131land\u0131rmay\u0131 test ederken veya bir \u015feylerin ters gitti\u011fi durumlarda \u00e7ok faydal\u0131d\u0131r.<\/p>\n<h4>\u0130\u015fbirli\u011fi (Collaboration)<\/h4>\n<p>*   Vagrantfile&#8217;\u0131 s\u00fcr\u00fcm kontrol sistemine dahil ederek, t\u00fcm ekibin ayn\u0131 ortam tan\u0131m\u0131n\u0131 kullanmas\u0131n\u0131 sa\u011flars\u0131n\u0131z. Bir ortam yap\u0131land\u0131rmas\u0131nda yap\u0131lan de\u011fi\u015fiklikler, herkesin kolayca g\u00fcncelleyebilece\u011fi ve uygulayabilece\u011fi \u015fekilde payla\u015f\u0131l\u0131r.<\/p>\n<h4>Felaket Kurtarma (Disaster Recovery)<\/h4>\n<p>*   Ana i\u015fletim sisteminiz \u00e7\u00f6kse veya yeniden y\u00fcklemeniz gerekse bile, Vagrantfile&#8217;\u0131n\u0131z ve proje dosyalar\u0131n\u0131z g\u00fcvende oldu\u011fu s\u00fcrece, geli\u015ftirme ortam\u0131n\u0131z\u0131 dakikalar i\u00e7inde yeniden kurabilirsiniz.<\/p>\n<h4>Maliyet Etkinli\u011fi (Cost-Effectiveness)<\/h4>\n<p>*   Vagrant ve VirtualBox gibi temel ara\u00e7lar a\u00e7\u0131k kaynak ve \u00fccretsizdir. Bu, geli\u015ftirme ortam\u0131 altyap\u0131s\u0131 i\u00e7in herhangi bir lisans maliyeti \u00f6demeyece\u011finiz anlam\u0131na gelir. Ayr\u0131ca, kurulum ve bak\u0131m s\u00fcrelerinden tasarruf ederek dolayl\u0131 maliyetleri de d\u00fc\u015f\u00fcr\u00fcr.<\/p>\n<p>Bu avantajlar g\u00f6z \u00f6n\u00fcne al\u0131nd\u0131\u011f\u0131nda, Vagrant&#8217;\u0131n WordPress geli\u015ftirme s\u00fcre\u00e7lerinizi nas\u0131l daha verimli, g\u00fcvenilir ve keyifli hale getirebilece\u011fi a\u00e7\u0131kt\u0131r. \u015eimdi, bu g\u00fc\u00e7l\u00fc arac\u0131 nas\u0131l kuraca\u011f\u0131m\u0131za ve WordPress i\u00e7in bir LAMP (Linux, Apache, MySQL, PHP) y\u0131\u011f\u0131n\u0131 olu\u015fturaca\u011f\u0131m\u0131za ge\u00e7elim.<\/p>\n<h3>\u00d6n Gereksinimler<\/h3>\n<p>Vagrant ile bir WordPress yerel geli\u015ftirme ortam\u0131 kurmaya ba\u015flamadan \u00f6nce, bilgisayar\u0131n\u0131zda baz\u0131 temel yaz\u0131l\u0131mlar\u0131n y\u00fckl\u00fc olmas\u0131 gerekir:<\/p>\n<p>1.  <strong>Sanalla\u015ft\u0131rma Yaz\u0131l\u0131m\u0131 (Virtualization Software):<\/strong> Vagrant, sanal makineleri \u00e7al\u0131\u015ft\u0131rmak i\u00e7in bir sanalla\u015ft\u0131rma sa\u011flay\u0131c\u0131s\u0131na ihtiya\u00e7 duyar. En pop\u00fcler ve \u00fccretsiz se\u00e7enek VirtualBox&#8217;t\u0131r. VMware Workstation\/Fusion veya Hyper-V (Windows Pro kullan\u0131c\u0131lar\u0131 i\u00e7in) de kullan\u0131labilir, ancak genellikle VirtualBox tercih edilir.<br \/>\n    *   <strong>VirtualBox Kurulumu:<\/strong> VirtualBox&#8217;\u0131n resmi web sitesinden (virtualbox.org) i\u015fletim sisteminize uygun s\u00fcr\u00fcm\u00fc indirip kurun. Kurulum s\u0131ras\u0131nda varsay\u0131lan se\u00e7enekleri kabul edebilirsiniz.<br \/>\n2.  <strong>Vagrant:<\/strong> Vagrant&#8217;\u0131n kendisi.<br \/>\n    *   <strong>Vagrant Kurulumu:<\/strong> Vagrant&#8217;\u0131n resmi web sitesinden (vagrantup.com) i\u015fletim sisteminize uygun s\u00fcr\u00fcm\u00fc indirip kurun. Kurulum genellikle basittir ve varsay\u0131lan se\u00e7eneklerle ilerleyebilirsiniz. Kurulumdan sonra bir komut istemcisi (Terminal veya Komut \u0130stemi) a\u00e7arak <code>vagrant --version<\/code> komutunu \u00e7al\u0131\u015ft\u0131rarak do\u011fru \u015fekilde kurulup kurulmad\u0131\u011f\u0131n\u0131 kontrol edebilirsiniz.<br \/>\n3.  <strong>Metin D\u00fczenleyici veya IDE:<\/strong> Vagrantfile ve di\u011fer yap\u0131land\u0131rma dosyalar\u0131n\u0131 d\u00fczenlemek i\u00e7in bir metin d\u00fczenleyiciye (VS Code, Sublime Text, Atom) veya bir IDE&#8217;ye (PhpStorm) ihtiyac\u0131n\u0131z olacak.<br \/>\n4.  <strong>Terminal\/Komut \u0130stemi:<\/strong> Vagrant komutlar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rmak i\u00e7in bir komut istemcisi kullanman\u0131z gerekecek.<\/p>\n<p>Bu \u00f6n gereksinimleri tamamlad\u0131ktan sonra, Vagrant ile WordPress ortam\u0131n\u0131z\u0131 kurmaya haz\u0131rs\u0131n\u0131z.<\/p>\n<h3>Vagrant ile WordPress Yerel Geli\u015ftirme Ortam\u0131 Nas\u0131l Kurulur?<\/h3>\n<p>Bu b\u00f6l\u00fcmde, ad\u0131m ad\u0131m bir WordPress yerel geli\u015ftirme ortam\u0131n\u0131 Vagrant kullanarak nas\u0131l kuraca\u011f\u0131m\u0131z\u0131 anlataca\u011f\u0131z. Temel olarak bir Linux sanal makinesi (Ubuntu), Apache web sunucusu, MySQL veritaban\u0131 ve PHP&#8217;den olu\u015fan bir LAMP y\u0131\u011f\u0131n\u0131 olu\u015fturaca\u011f\u0131z.<\/p>\n<h4>1. Ad\u0131m: Proje Dizini Olu\u015fturma ve Vagrantfile Ba\u015flatma<\/h4>\n<p>\u0130lk olarak, WordPress projeniz i\u00e7in bir dizin olu\u015fturun ve bu dizine gidin. Ard\u0131ndan Vagrant&#8217;\u0131 bu dizinde ba\u015flat\u0131n.<\/p>\n<pre><code class=\"language-bash\">mkdir my-wordpress-project\ncd my-wordpress-project\nvagrant init ubuntu\/bionic64<\/code><\/pre>\n<p>*   <code>mkdir my-wordpress-project<\/code>: Projeniz i\u00e7in <code>my-wordpress-project<\/code> ad\u0131nda bir dizin olu\u015fturur.<br \/>\n*   <code>cd my-wordpress-project<\/code>: Olu\u015fturdu\u011funuz dizine ge\u00e7i\u015f yapar.<br \/>\n*   <code>vagrant init ubuntu\/bionic64<\/code>: Bu komut, <code>ubuntu\/bionic64<\/code> adl\u0131 bir Vagrant kutusunu temel alarak yeni bir <code>Vagrantfile<\/code> olu\u015fturur. <code>ubuntu\/bionic64<\/code>, Ubuntu 18.04 LTS (Bionic Beaver) s\u00fcr\u00fcm\u00fcn\u00fc i\u00e7eren pop\u00fcler bir Vagrant kutusudur. Bu komutu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, dizininizde <code>Vagrantfile<\/code> ad\u0131nda bir dosya olu\u015facakt\u0131r.<\/p>\n<h4>2. Ad\u0131m: Vagrantfile Yap\u0131land\u0131rmas\u0131<\/h4>\n<p><code>Vagrantfile<\/code>, sanal makinenizin t\u00fcm yap\u0131land\u0131rmas\u0131n\u0131 i\u00e7erir. Bu dosyay\u0131 bir metin d\u00fczenleyici ile a\u00e7\u0131n ve a\u015fa\u011f\u0131daki de\u011fi\u015fiklikleri yap\u0131n. A\u00e7\u0131klamalar\u0131 dikkatlice okuyun.<\/p>\n<pre><code class=\"language-ruby\"># -<em>- mode: ruby -<\/em>-\n<h2>vi: set ft=ruby :<\/h2>\n\nVagrant.configure(\"2\") do |config|\n  # Sanal makine i\u00e7in kullan\u0131lacak kutu (i\u015fletim sistemi)\n  config.vm.box = \"ubuntu\/bionic64\"\n\n  # Sanal makineye \u00f6zel bir IP adresi atay\u0131n. Bu IP \u00fczerinden taray\u0131c\u0131n\u0131zdan eri\u015febileceksiniz.\n  config.vm.network \"private_network\", ip: \"192.168.33.10\"\n\n  # Host (ana bilgisayar) ve Guest (sanal makine) aras\u0131nda payla\u015f\u0131lan klas\u00f6r.\n  # Bu, host makinenizdeki proje dizininizi sanal makinedeki \/var\/www\/html diziniyle senkronize eder.\n  # WordPress dosyalar\u0131n\u0131z\u0131 host makinenizde d\u00fczenleyip, de\u011fi\u015fiklikleri an\u0131nda sanal makinede g\u00f6rebileceksiniz.\n  config.vm.synced_folder \".\", \"\/var\/www\/html\"\n\n  # Sanal makineye kaynak atamas\u0131 (iste\u011fe ba\u011fl\u0131 ama \u00f6nerilir)\n  config.vm.provider \"virtualbox\" do |vb|\n    vb.name = \"WordPressDev\" # VirtualBox'ta VM'in ad\u0131\n    vb.memory = \"1024\"       # 1 GB RAM\n    vb.cpus = \"1\"            # 1 CPU \u00e7ekirde\u011fi\n  end\n\n  # Sanal makineyi otomatik olarak yap\u0131land\u0131rmak i\u00e7in provisioning (sa\u011flama) beti\u011fi.\n  # Bu betik, VM ilk kez ba\u015flat\u0131ld\u0131\u011f\u0131nda veya <code>vagrant provision<\/code> komutu \u00e7al\u0131\u015ft\u0131r\u0131ld\u0131\u011f\u0131nda \u00e7al\u0131\u015f\u0131r.\n  config.vm.provision \"shell\", path: \"bootstrap.sh\"\nend<\/code><\/pre>\n<p>*   <strong><code>config.vm.box = \"ubuntu\/bionic64\"<\/code><\/strong>: Kullan\u0131lacak i\u015fletim sistemi kutusunu belirtir. E\u011fer bu kutu yerel olarak y\u00fckl\u00fc de\u011filse, Vagrant ilk <code>vagrant up<\/code> komutunda otomatik olarak indirecektir.<br \/>\n*   <strong><code>config.vm.network \"private_network\", ip: \"192.168.33.10\"<\/code><\/strong>: Sanal makinenize statik bir \u00f6zel IP adresi atar. Bu IP adresi, ana bilgisayar\u0131n\u0131zdan sanal makineye eri\u015fmenizi sa\u011flar. Taray\u0131c\u0131n\u0131zda <code>http:\/\/192.168.33.10<\/code> adresini yazarak WordPress sitenize ula\u015facaks\u0131n\u0131z.<br \/>\n*   <strong><code>config.vm.synced_folder \".\", \"\/var\/www\/html\"<\/code><\/strong>: Bu sat\u0131r, ana bilgisayar\u0131n\u0131zdaki mevcut proje dizininizi (<code>.<\/code>) sanal makinedeki <code>\/var\/www\/html<\/code> diziniyle senkronize eder. Bu, WordPress dosyalar\u0131n\u0131z\u0131 ana bilgisayar\u0131n\u0131zda favori metin d\u00fczenleyicinizle d\u00fczenleyebilece\u011finiz ve de\u011fi\u015fikliklerin sanal makinede an\u0131nda yans\u0131mas\u0131n\u0131 sa\u011flayabilece\u011finiz anlam\u0131na gelir.<br \/>\n*   <strong><code>config.vm.provider \"virtualbox\" do |vb| ... end<\/code><\/strong>: Bu blok, VirtualBox&#8217;a \u00f6zel ayarlar\u0131 yap\u0131land\u0131rman\u0131za olanak tan\u0131r. Burada sanal makineye 1GB RAM ve 1 CPU \u00e7ekirde\u011fi atad\u0131k. Projenizin ihtiya\u00e7lar\u0131na g\u00f6re bu de\u011ferleri art\u0131rabilirsiniz.<br \/>\n*   <strong><code>config.vm.provision \"shell\", path: \"bootstrap.sh\"<\/code><\/strong>: Bu sat\u0131r, sanal makine ilk kez ba\u015flat\u0131ld\u0131\u011f\u0131nda veya <code>vagrant provision<\/code> komutuyla manuel olarak \u00e7al\u0131\u015ft\u0131r\u0131ld\u0131\u011f\u0131nda bir <code>bootstrap.sh<\/code> beti\u011finin \u00e7al\u0131\u015ft\u0131r\u0131laca\u011f\u0131n\u0131 belirtir. Bu betik, LAMP y\u0131\u011f\u0131n\u0131n\u0131 ve WordPress&#8217;i kurmak i\u00e7in kullan\u0131lacakt\u0131r.<\/p>\n<h4>3. Ad\u0131m: Provisioning Beti\u011fi Olu\u015fturma (bootstrap.sh)<\/h4>\n<p><code>Vagrantfile<\/code> ile ayn\u0131 dizine <code>bootstrap.sh<\/code> ad\u0131nda yeni bir dosya olu\u015fturun ve i\u00e7ine a\u015fa\u011f\u0131daki komutlar\u0131 ekleyin. Bu betik, sanal makine i\u00e7inde Apache, MySQL, PHP ve WordPress&#8217;i kuracakt\u0131r.<\/p>\n<pre><code class=\"language-bash\">#!\/usr\/bin\/env bash\n\n<h2>Sanal makineyi g\u00fcncelle<\/h2>\necho \"Updating apt packages...\"\nsudo apt-get update -y\nsudo apt-get upgrade -y\n\n<h2>Apache Web Sunucusu Kurulumu<\/h2>\necho \"Installing Apache...\"\nsudo apt-get install -y apache2\n\n<h2>Apache'yi payla\u015f\u0131lan klas\u00f6r\u00fc kullanacak \u015fekilde yap\u0131land\u0131r<\/h2>\n<h2>default sites-available dosyas\u0131n\u0131 d\u00fczenliyoruz<\/h2>\necho \"Configuring Apache for \/var\/www\/html...\"\nsudo rm -rf \/var\/www\/html\/* # Varsay\u0131lan index.html'yi kald\u0131r\nsudo chown -R vagrant:www-data \/var\/www\/html # Dizin sahibini de\u011fi\u015ftir\nsudo chmod -R 775 \/var\/www\/html # Dizin izinlerini ayarla\n\n<h2>Apache yap\u0131land\u0131rma dosyas\u0131n\u0131 d\u00fczenle (\u00f6rne\u011fin 000-default.conf)<\/h2>\n<h2>DocumentRoot'u \/var\/www\/html olarak ayarla ve AllowOverride All ekle<\/h2>\nAPACHE_CONFIG=\"\/etc\/apache2\/sites-available\/000-default.conf\"\nif [ -f \"$APACHE_CONFIG\" ]; then\n    sudo sed -i 's|DocumentRoot \/var\/www\/html|DocumentRoot \/var\/www\/html\\n\\n\\t<Directory \/var\/www\/html>\\n\\t\\tOptions Indexes FollowSymLinks MultiViews\\n\\t\\tAllowOverride All\\n\\t\\tRequire all granted\\n\\t<\/Directory>|' \"$APACHE_CONFIG\"\n    echo \"Apache DocumentRoot updated and AllowOverride All added.\"\nelse\n    echo \"Warning: Apache default config file not found at $APACHE_CONFIG.\"\nfi\n\n<h2>Apache rewrite mod\u00fcl\u00fcn\u00fc etkinle\u015ftir (WordPress permalinkleri i\u00e7in gerekli)<\/h2>\necho \"Enabling Apache rewrite module...\"\nsudo a2enmod rewrite\n\n<h2>Apache servisini yeniden ba\u015flat<\/h2>\necho \"Restarting Apache service...\"\nsudo systemctl restart apache2\n\n<h2>MySQL Veritaban\u0131 Sunucusu Kurulumu<\/h2>\necho \"Installing MySQL server...\"\n<h2><code>DEBIAN_FRONTEND=noninteractive<\/code> ile kurulum s\u0131ras\u0131nda \u015fifre sormadan devam et<\/h2>\nsudo debconf-set-selections <<< 'mysql-server mysql-server\/root_password password root'\nsudo debconf-set-selections <<< 'mysql-server mysql-server\/root_password_again password root'\nsudo apt-get install -y mysql-server\n\n<h2>WordPress i\u00e7in veritaban\u0131 ve kullan\u0131c\u0131 olu\u015ftur<\/h2>\necho \"Creating WordPress database and user...\"\nsudo mysql -u root -proot -e \"CREATE DATABASE IF NOT EXISTS wordpress_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\"\nsudo mysql -u root -proot -e \"CREATE USER IF NOT EXISTS 'wp_user'@'localhost' IDENTIFIED BY 'password';\"\nsudo mysql -u root -proot -e \"GRANT ALL PRIVILEGES ON wordpress_db.* TO 'wp_user'@'localhost';\"\nsudo mysql -u root -proot -e \"FLUSH PRIVILEGES;\"\necho \"WordPress database 'wordpress_db' and user 'wp_user' created.\"\n\n<h2>PHP ve Gerekli Mod\u00fcllerin Kurulumu<\/h2>\necho \"Installing PHP and necessary modules...\"\nsudo apt-get install -y php libapache2-mod-php php-mysql php-cli php-curl php-gd php-mbstring php-xml php-zip\n\n<h2>PHP ayarlar\u0131n\u0131 d\u00fczenle (iste\u011fe ba\u011fl\u0131, performans\u0131 art\u0131rabilir)<\/h2>\n<h2>\u00d6rne\u011fin, bellek limitini art\u0131rma<\/h2>\nPHP_INI=\"\/etc\/php\/7.2\/apache2\/php.ini\" # Ubuntu 18.04 varsay\u0131lan PHP 7.2 kullan\u0131r\nif [ -f \"$PHP_INI\" ]; then\n    sudo sed -i 's\/memory_limit = 128M\/memory_limit = 256M\/g' \"$PHP_INI\"\n    echo \"PHP memory_limit updated to 256M.\"\nelse\n    echo \"Warning: PHP ini file not found at $PHP_INI.\"\nfi\n\n<h2>Apache servisini PHP de\u011fi\u015fiklikleri i\u00e7in yeniden ba\u015flat<\/h2>\necho \"Restarting Apache service for PHP changes...\"\nsudo systemctl restart apache2\n\n<h2>WordPress Kurulumu<\/h2>\necho \"Downloading and installing WordPress...\"\ncd \/var\/www\/html\n\n<h2>E\u011fer zaten bir WordPress kurulumu yoksa devam et<\/h2>\nif [ ! -f \"wp-config.php\" ]; then\n    # \u00d6nceki dosyalar\u0131 temizle (e\u011fer varsa)\n    sudo rm -rf index.html\n    sudo wget https:\/\/wordpress.org\/latest.tar.gz\n    sudo tar -xzvf latest.tar.gz\n    sudo mv wordpress\/* .\n    sudo rm -rf latest.tar.gz wordpress\n\n    # wp-config.php dosyas\u0131n\u0131 olu\u015ftur ve veritaban\u0131 bilgilerini ekle\n    sudo cp wp-config-sample.php wp-config.php\n    sudo sed -i \"s\/database_name_here\/wordpress_db\/g\" wp-config.php\n    sudo sed -i \"s\/username_here\/wp_user\/g\" wp-config.php\n    sudo sed -i \"s\/password_here\/password\/g\" wp-config.php\n    sudo sed -i \"s\/localhost\/localhost\/g\" wp-config.php # Zaten localhost, yine de \u00f6rnek i\u00e7in b\u0131rak\u0131ld\u0131\n\n    # WordPress g\u00fcvenlik anahtarlar\u0131n\u0131 otomatik olarak olu\u015ftur ve ekle\n    # Bu ad\u0131m, daha g\u00fcvenli bir wp-config.php olu\u015fturur.\n    SALT=$(wget -qO- https:\/\/api.wordpress.org\/secret-key\/1.1\/salt\/)\n    printf '%s\\n' \"$SALT\" | awk '\/define\/{printf \"define(%s);\\n\", $2}' | sudo tee -a wp-config.php > \/dev\/null\n\n    echo \"WordPress downloaded and wp-config.php configured.\"\nelse\n    echo \"WordPress already seems to be installed.\"\nfi\n\n<h2>Dosya izinlerini ayarla (WordPress'in yazma iznine ihtiyac\u0131 var)<\/h2>\necho \"Setting file permissions for WordPress...\"\nsudo chown -R www-data:www-data \/var\/www\/html\nsudo find \/var\/www\/html -type d -exec chmod 755 {} \\;\nsudo find \/var\/www\/html -type f -exec chmod 644 {} \\;\necho \"File permissions set.\"\n\necho \"Vagrant provisioning complete. Your WordPress site should be accessible at http:\/\/192.168.33.10\"<\/code><\/pre>\n<p>Bu betik \u015funlar\u0131 yapar:<br \/>\n*   Ubuntu paket listesini g\u00fcnceller.<br \/>\n*   Apache2&#8217;yi kurar ve <code>DocumentRoot<\/code>&#8216;u <code>\/var\/www\/html<\/code> olarak ayarlar. Ayr\u0131ca <code>AllowOverride All<\/code> ekleyerek <code>.htaccess<\/code> dosyalar\u0131n\u0131n \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar ve <code>mod_rewrite<\/code>&#8216;\u0131 etkinle\u015ftirir.<br \/>\n*   MySQL sunucusunu kurar ve root \u015fifresini <code>root<\/code> olarak ayarlar (yaln\u0131zca geli\u015ftirme i\u00e7in g\u00fcvenlidir).<br \/>\n*   WordPress i\u00e7in <code>wordpress_db<\/code> ad\u0131nda bir veritaban\u0131 ve <code>wp_user<\/code> ad\u0131nda <code>password<\/code> \u015fifresiyle bir kullan\u0131c\u0131 olu\u015fturur.<br \/>\n*   PHP ve WordPress&#8217;in ihtiya\u00e7 duydu\u011fu gerekli PHP mod\u00fcllerini (php-mysql, php-cli, php-curl vb.) kurar.<br \/>\n*   PHP <code>memory_limit<\/code>&#8216;i 256M&#8217;ye y\u00fckseltir (iste\u011fe ba\u011fl\u0131).<br \/>\n*   Apache servisini yeniden ba\u015flat\u0131r.<br \/>\n*   <code>\/var\/www\/html<\/code> dizinine WordPress&#8217;in en son s\u00fcr\u00fcm\u00fcn\u00fc indirir, ar\u015fivden \u00e7\u0131kar\u0131r ve ana dizine ta\u015f\u0131r.<br \/>\n*   <code>wp-config.php<\/code> dosyas\u0131n\u0131 <code>wp-config-sample.php<\/code>&#8216;den kopyalar ve veritaban\u0131 bilgilerini (veritaban\u0131 ad\u0131, kullan\u0131c\u0131 ad\u0131, \u015fifre) otomatik olarak doldurur. Ayr\u0131ca, WordPress g\u00fcvenlik anahtarlar\u0131n\u0131 da otomatik olarak olu\u015fturur ve ekler.<br \/>\n*   WordPress dosyalar\u0131 i\u00e7in do\u011fru dosya ve dizin izinlerini ayarlar (<code>www-data<\/code> kullan\u0131c\u0131s\u0131 ve grubu).<\/p>\n<h4>4. Ad\u0131m: Sanal Makineyi Ba\u015flatma<\/h4>\n<p><code>Vagrantfile<\/code> ve <code>bootstrap.sh<\/code> dosyalar\u0131n\u0131 olu\u015fturduktan sonra, proje dizininizde bir komut istemcisi a\u00e7\u0131n ve a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">vagrant up<\/code><\/pre>\n<p>Bu komut \u015funlar\u0131 yapacakt\u0131r:<br \/>\n1.  <code>ubuntu\/bionic64<\/code> kutusunu indirir (e\u011fer daha \u00f6nce indirilmediyse).<br \/>\n2.  VirtualBox&#8217;ta sanal makineyi olu\u015fturur ve ba\u015flat\u0131r.<br \/>\n3.  <code>Vagrantfile<\/code>&#8216;da belirtilen a\u011f ayarlar\u0131n\u0131 ve payla\u015f\u0131lan klas\u00f6rleri yap\u0131land\u0131r\u0131r.<br \/>\n4.  <code>bootstrap.sh<\/code> beti\u011fini \u00e7al\u0131\u015ft\u0131rarak Apache, MySQL, PHP ve WordPress kurulumunu otomatik olarak ger\u00e7ekle\u015ftirir.<\/p>\n<p>Bu i\u015flem biraz zaman alabilir (internet h\u0131z\u0131n\u0131za ve bilgisayar\u0131n\u0131z\u0131n performans\u0131na ba\u011fl\u0131 olarak 10-20 dakika). T\u00fcm ad\u0131mlar ba\u015far\u0131yla tamamland\u0131\u011f\u0131nda, terminalde &#8220;Vagrant provisioning complete&#8230;&#8221; mesaj\u0131n\u0131 g\u00f6rmelisiniz.<\/p>\n<h4>5. Ad\u0131m: WordPress Kurulumunu Tamamlama<\/h4>\n<p>Sanal makine ba\u015far\u0131yla ba\u015flat\u0131l\u0131p yap\u0131land\u0131r\u0131ld\u0131ktan sonra, web taray\u0131c\u0131n\u0131z\u0131 a\u00e7\u0131n ve <code>http:\/\/192.168.33.10<\/code> adresine gidin. WordPress&#8217;in ho\u015f geldiniz ekran\u0131n\u0131 g\u00f6rmelisiniz. Burada sitenizin ba\u015fl\u0131\u011f\u0131n\u0131, y\u00f6netici kullan\u0131c\u0131 ad\u0131n\u0131, \u015fifresini ve e-posta adresini girerek WordPress kurulumunu tamamlayabilirsiniz.<\/p>\n<p>Tebrikler! Vagrant ile tamamen i\u015flevsel bir WordPress yerel geli\u015ftirme ortam\u0131 kurdunuz.<\/p>\n<h4>6. Ad\u0131m: Sanal Makine Y\u00f6netimi<\/h4>\n<p>Sanal makineyi y\u00f6netmek i\u00e7in baz\u0131 temel Vagrant komutlar\u0131:<\/p>\n<p>*   <strong><code>vagrant ssh<\/code><\/strong>: Sanal makineye SSH ile ba\u011flan\u0131r. Bu, sanal makine i\u00e7inde komut \u00e7al\u0131\u015ft\u0131rman\u0131za olanak tan\u0131r.<br \/>\n*   <strong><code>vagrant suspend<\/code><\/strong>: Sanal makineyi ask\u0131ya al\u0131r (RAM durumunu kaydeder). H\u0131zl\u0131 bir \u015fekilde durdurup ba\u015flatmak i\u00e7in idealdir.<br \/>\n*   <strong><code>vagrant resume<\/code><\/strong>: Ask\u0131ya al\u0131nm\u0131\u015f bir sanal makineyi devam ettirir.<br \/>\n*   <strong><code>vagrant halt<\/code><\/strong>: Sanal makineyi d\u00fczg\u00fcn bir \u015fekilde kapat\u0131r.<br \/>\n*   <strong><code>vagrant reload<\/code><\/strong>: <code>Vagrantfile<\/code>&#8216;da yap\u0131lan de\u011fi\u015fiklikleri uygulamak i\u00e7in sanal makineyi yeniden ba\u015flat\u0131r.<br \/>\n*   <strong><code>vagrant destroy<\/code><\/strong>: Sanal makineyi ve t\u00fcm verilerini kal\u0131c\u0131 olarak siler. Bu, ortam\u0131 tamamen s\u0131f\u0131rlamak istedi\u011finizde kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<h3>Geli\u015fmi\u015f Kavramlar ve En \u0130yi Uygulamalar<\/h3>\n<p>Temel kurulumu tamamlad\u0131ktan sonra, Vagrant deneyiminizi daha da geli\u015ftirecek baz\u0131 ileri d\u00fczey kavramlar ve en iyi uygulamalar bulunmaktad\u0131r:<\/p>\n<h4>Ana Bilgisayar Adlar\u0131 (Hostnames) ile \u00c7al\u0131\u015fma<\/h4>\n<p>IP adresi yerine daha anlaml\u0131 bir ana bilgisayar ad\u0131 (\u00f6rne\u011fin, <code>mywordpress.local<\/code>) kullanmak, birden fazla proje \u00fczerinde \u00e7al\u0131\u015f\u0131rken veya URL&#8217;leri hat\u0131rlarken daha kolayd\u0131r. Bunu yapmak i\u00e7in ana bilgisayar\u0131n\u0131z\u0131n <code>hosts<\/code> dosyas\u0131n\u0131 d\u00fczenlemeniz gerekir:<\/p>\n<p>*   <strong>Linux\/macOS:<\/strong> <code>\/etc\/hosts<\/code><br \/>\n*   <strong>Windows:<\/strong> <code>C:\\Windows\\System32\\drivers\\etc\\hosts<\/code><\/p>\n<p>Bu dosyaya a\u015fa\u011f\u0131daki sat\u0131r\u0131 ekleyin:<\/p>\n<pre><code class=\"language-\">192.168.33.10 mywordpress.local<\/code><\/pre>\n<p>Ard\u0131ndan, taray\u0131c\u0131n\u0131zda <code>http:\/\/mywordpress.local<\/code> adresini kullanarak WordPress sitenize eri\u015febilirsiniz.<\/p>\n<p><strong>Vagrant-Hostmanager Eklentisi:<\/strong> Bu i\u015flemi otomatikle\u015ftirmek i\u00e7in <code>vagrant-hostmanager<\/code> eklentisini kullanabilirsiniz.<\/p>\n<pre><code class=\"language-bash\">vagrant plugin install vagrant-hostmanager<\/code><\/pre>\n<p>Ard\u0131ndan <code>Vagrantfile<\/code>&#8216;\u0131n\u0131za \u015fu sat\u0131rlar\u0131 ekleyin:<\/p>\n<pre><code class=\"language-ruby\">config.vm.hostname = \"mywordpress.local\"\nconfig.vm.network \"private_network\", ip: \"192.168.33.10\", :virtualbox__intnet => true # virtualbox__intnet gerekebilir\nconfig.hostmanager.enabled = true\nconfig.hostmanager.manage_host = true\nconfig.hostmanager.manage_guest = true<\/code><\/pre>\n<p><code>vagrant up<\/code> veya <code>vagrant reload<\/code> \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, eklenti <code>hosts<\/code> dosyan\u0131z\u0131 otomatik olarak g\u00fcncelleyecektir.<\/p>\n<h4>Birden Fazla Sanal Makine ve Proje<\/h4>\n<p>Vagrantfile&#8217;da birden fazla <code>config.vm.define<\/code> blo\u011fu kullanarak tek bir Vagrantfile i\u00e7inde birden fazla sanal makine tan\u0131mlayabilirsiniz. Her VM i\u00e7in farkl\u0131 IP adresleri ve payla\u015f\u0131lan klas\u00f6rler atayarak birden fazla WordPress projesini ayn\u0131 anda \u00e7al\u0131\u015ft\u0131rabilirsiniz.<\/p>\n<pre><code class=\"language-ruby\">Vagrant.configure(\"2\") do |config|\n  config.vm.define \"wordpress1\" do |wordpress1|\n    wordpress1.vm.box = \"ubuntu\/bionic64\"\n    wordpress1.vm.network \"private_network\", ip: \"192.168.33.11\"\n    wordpress1.vm.hostname = \"wordpress1.local\"\n    wordpress1.vm.synced_folder \".\/wordpress1_data\", \"\/var\/www\/html\"\n    wordpress1.vm.provision \"shell\", path: \"bootstrap.sh\"\n  end\n\n  config.vm.define \"wordpress2\" do |wordpress2|\n    wordpress2.vm.box = \"ubuntu\/bionic64\"\n    wordpress2.vm.network \"private_network\", ip: \"192.168.33.12\"\n    wordpress2.vm.hostname = \"wordpress2.local\"\n    wordpress2.vm.synced_folder \".\/wordpress2_data\", \"\/var\/www\/html\"\n    wordpress2.vm.provision \"shell\", path: \"bootstrap.sh\"\n  end\nend<\/code><\/pre>\n<p>Her bir VM&#8217;i ayr\u0131 ayr\u0131 ba\u015flatmak i\u00e7in <code>vagrant up wordpress1<\/code> veya t\u00fcm\u00fcn\u00fc ba\u015flatmak i\u00e7in <code>vagrant up<\/code> kullanabilirsiniz.<\/p>\n<h4>Vagrant Eklentileri<\/h4>\n<p>Vagrant ekosistemi, i\u015flevselli\u011fi art\u0131ran bir\u00e7ok eklentiye sahiptir:<\/p>\n<p>*   <strong><code>vagrant-vbguest<\/code><\/strong>: VirtualBox Guest Additions&#8217;\u0131n her zaman g\u00fcncel olmas\u0131n\u0131 sa\u011flar, bu da payla\u015f\u0131lan klas\u00f6rler ve performans i\u00e7in \u00f6nemlidir.<br \/>\n*   <strong><code>vagrant-triggers<\/code><\/strong>: Sanal makine ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fcn belirli noktalar\u0131nda (\u00f6rne\u011fin, <code>up<\/code> veya <code>destroy<\/code> \u00f6ncesi\/sonras\u0131) komutlar \u00e7al\u0131\u015ft\u0131rman\u0131za olanak tan\u0131r.<br \/>\n*   <strong><code>vagrant-share<\/code><\/strong>: Geli\u015ftirme ortam\u0131n\u0131z\u0131 internet \u00fczerinden ge\u00e7ici olarak payla\u015fman\u0131za olanak tan\u0131r, bu da m\u00fc\u015fterilere veya ekip \u00fcyelerine demo yapmak i\u00e7in harikad\u0131r.<\/p>\n<p>Eklentileri <code>vagrant plugin install <plugin-ad\u0131><\/code> komutuyla kurabilirsiniz.<\/p>\n<h4>S\u00fcr\u00fcm Kontrol\u00fc ve Vagrantfile<\/h4>\n<p><code>Vagrantfile<\/code> ve <code>bootstrap.sh<\/code> gibi yap\u0131land\u0131rma dosyalar\u0131n\u0131 projenizin s\u00fcr\u00fcm kontrol sistemine (Git gibi) eklemek \u00e7ok \u00f6nemlidir. Bu, ekibinizdeki herkesin ayn\u0131 ortam yap\u0131land\u0131rmas\u0131na sahip olmas\u0131n\u0131 sa\u011flar ve ortam de\u011fi\u015fikliklerinin takip edilebilir olmas\u0131n\u0131 sa\u011flar.<\/p>\n<h4>Veritaban\u0131 Yedeklemeleri<\/h4>\n<p>Sanal makinenizi <code>destroy<\/code> etti\u011finizde, i\u00e7indeki veritaban\u0131 da silinir. Bu nedenle, \u00f6nemli veritaban\u0131 de\u011fi\u015fiklikleri yapmadan \u00f6nce yedek almak iyi bir uygulamad\u0131r. MySQL i\u00e7inden <code>mysqldump<\/code> komutunu kullanarak yedek alabilir ve payla\u015f\u0131lan klas\u00f6r\u00fcn\u00fcze kaydedebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">vagrant ssh\nmysqldump -u wp_user -ppassword wordpress_db > \/var\/www\/html\/backup.sql\nexit<\/code><\/pre>\n<p>Ard\u0131ndan <code>backup.sql<\/code> dosyas\u0131 ana bilgisayar\u0131n\u0131zdaki proje dizininizde bulunacakt\u0131r.<\/p>\n<h3>Sorun Giderme<\/h3>\n<p>Vagrant ile \u00e7al\u0131\u015f\u0131rken kar\u015f\u0131la\u015fabilece\u011finiz baz\u0131 yayg\u0131n sorunlar ve \u00e7\u00f6z\u00fcmleri:<\/p>\n<p>*   <strong><code>vagrant up<\/code> komutu ba\u015far\u0131s\u0131z oluyor:<\/strong><br \/>\n    *   VirtualBox&#8217;\u0131n d\u00fczg\u00fcn kuruldu\u011fundan ve \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olun.<br \/>\n    *   Bilgisayar\u0131n\u0131z\u0131n BIOS\/UEFI ayarlar\u0131nda sanalla\u015ft\u0131rman\u0131n (Intel VT-x\/AMD-V) etkinle\u015ftirildi\u011finden emin olun.<br \/>\n    *   Yeterli sistem kayna\u011f\u0131 (RAM, disk alan\u0131) oldu\u011fundan emin olun.<br \/>\n    *   <code>Vagrantfile<\/code>&#8216;da s\u00f6zdizimi hatas\u0131 olup olmad\u0131\u011f\u0131n\u0131 kontrol edin.<br \/>\n*   <strong>Web sitesi taray\u0131c\u0131da a\u00e7\u0131lm\u0131yor (\u00f6rne\u011fin, <code>http:\/\/192.168.33.10<\/code>):<\/strong><br \/>\n    *   Sanal makinenin \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olun (<code>vagrant status<\/code> komutunu kontrol edin).<br \/>\n    *   <code>Vagrantfile<\/code>&#8216;daki <code>private_network<\/code> IP adresinin do\u011fru oldu\u011fundan emin olun.<br \/>\n    *   <code>bootstrap.sh<\/code> beti\u011finin Apache&#8217;yi d\u00fczg\u00fcn bir \u015fekilde kurdu\u011fundan ve ba\u015flatt\u0131\u011f\u0131ndan emin olun. <code>vagrant ssh<\/code> ile ba\u011flan\u0131p <code>sudo systemctl status apache2<\/code> komutunu \u00e7al\u0131\u015ft\u0131rarak Apache durumunu kontrol edebilirsiniz.<br \/>\n    *   Ana bilgisayar\u0131n\u0131z\u0131n g\u00fcvenlik duvar\u0131n\u0131n 80 numaral\u0131 ba\u011flant\u0131 noktas\u0131n\u0131 engellemedi\u011finden emin olun.<br \/>\n    *   <code>Vagrantfile<\/code>&#8216;daki <code>synced_folder<\/code> ayar\u0131n\u0131n do\u011fru oldu\u011fundan ve WordPress dosyalar\u0131n\u0131n <code>\/var\/www\/html<\/code> dizininde oldu\u011fundan emin olun.<br \/>\n*   <strong>WordPress kurulumu s\u0131ras\u0131nda veritaban\u0131 ba\u011flant\u0131 hatas\u0131:<\/strong><br \/>\n    *   <code>bootstrap.sh<\/code> beti\u011finde MySQL kurulumunun ba\u015far\u0131l\u0131 oldu\u011fundan emin olun. <code>vagrant ssh<\/code> ile ba\u011flan\u0131p <code>sudo systemctl status mysql<\/code> komutunu \u00e7al\u0131\u015ft\u0131rarak MySQL durumunu kontrol edebilirsiniz.<br \/>\n    *   <code>wp-config.php<\/code> dosyas\u0131ndaki <code>DB_NAME<\/code>, <code>DB_USER<\/code> ve <code>DB_PASSWORD<\/code> de\u011ferlerinin <code>bootstrap.sh<\/code>&#8216;de olu\u015fturdu\u011funuz veritaban\u0131 ad\u0131, kullan\u0131c\u0131 ad\u0131 ve \u015fifre ile e\u015fle\u015fti\u011finden emin olun.<br \/>\n    *   MySQL kullan\u0131c\u0131s\u0131n\u0131n <code>localhost<\/code>&#8216;tan eri\u015fim izni oldu\u011fundan emin olun.<br \/>\n*   <strong>Dosya izinleri sorunlar\u0131 (WordPress tema\/eklenti y\u00fckleyemiyor):<\/strong><br \/>\n    *   <code>bootstrap.sh<\/code> beti\u011findeki <code>chown<\/code> ve <code>chmod<\/code> komutlar\u0131n\u0131n do\u011fru \u015fekilde \u00e7al\u0131\u015ft\u0131r\u0131ld\u0131\u011f\u0131ndan emin olun. WordPress dosyalar\u0131n\u0131n sahibi genellikle web sunucusu kullan\u0131c\u0131s\u0131 (<code>www-data<\/code> gibi) olmal\u0131d\u0131r. <code>vagrant ssh<\/code> ile ba\u011flan\u0131p <code>ls -l \/var\/www\/html<\/code> komutunu \u00e7al\u0131\u015ft\u0131rarak izinleri kontrol edebilirsiniz. Gerekirse manuel olarak <code>sudo chown -R www-data:www-data \/var\/www\/html<\/code> ve <code>sudo chmod -R 755 \/var\/www\/html<\/code> (dizinler i\u00e7in) ve <code>sudo chmod -R 644 \/var\/www\/html<\/code> (dosyalar i\u00e7in) komutlar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131r\u0131n.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Vagrant, WordPress geli\u015ftiricileri i\u00e7in yerel geli\u015ftirme ortam\u0131 kurma ve y\u00f6netme \u015feklini d\u00f6n\u00fc\u015ft\u00fcren g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r. Tutarl\u0131l\u0131k, ta\u015f\u0131nabilirlik, izolasyon ve otomasyon sa\u011flayarak, geli\u015ftirme s\u00fcrecini daha verimli, daha az hataya a\u00e7\u0131k ve daha keyifli hale getirir.<\/p>\n<p>Bu makalede ad\u0131m ad\u0131m bir WordPress yerel geli\u015ftirme ortam\u0131n\u0131n Vagrant ile nas\u0131l kuruldu\u011funu, temel yap\u0131land\u0131rmalar\u0131, provisioning beti\u011fini ve geli\u015fmi\u015f ipu\u00e7lar\u0131n\u0131 ele ald\u0131k. Ba\u015flang\u0131\u00e7ta biraz \u00f6\u011frenme e\u011frisi olsa da, Vagrant&#8217;a yat\u0131r\u0131m yapmak, uzun vadede size zaman kazand\u0131racak ve daha sa\u011flam, \u00fcretim ortam\u0131na yak\u0131n uygulamalar geli\u015ftirmenize olanak tan\u0131yacakt\u0131r.<\/p>\n<p>Art\u0131k XAMPP\/MAMP gibi geleneksel \u00e7\u00f6z\u00fcmlerin s\u0131n\u0131rlamalar\u0131ndan kurtulabilir, her projeniz i\u00e7in \u00f6zel, izole ve tekrarlanabilir ortamlar olu\u015fturabilirsiniz. Vagrant&#8217;\u0131 geli\u015ftirme i\u015f ak\u0131\u015f\u0131n\u0131za entegre ederek, WordPress projelerinizde daha fazla kontrol, esneklik ve g\u00fcvenilirlik elde edeceksiniz. Ba\u015flay\u0131n ve Vagrant&#8217;\u0131n sundu\u011fu kolayl\u0131\u011f\u0131 deneyimleyin!<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"WordPress Yerel Geli\u015ftirme Ortam\u0131 Kurulumu: Vagrant ile Neden ve Nas\u0131l?\nModern web geli\u015ftirme s\u00fcre\u00e7lerinde, \u00f6zellikle WordPress gibi dinamik v","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":[133],"tags":[],"class_list":{"0":"post-37149","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-php","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>WordPress Yerel Geli\u015ftirme Ortam\u0131 Kurulumu: Vagrant ile Neden ve Nas\u0131l? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/wordpress-yerel-gelistirme-ortami-kurulumu-vagrant-ile-neden-ve-nasil\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"WordPress Yerel Geli\u015ftirme Ortam\u0131 Kurulumu: Vagrant ile Neden ve Nas\u0131l?\" \/>\n<meta property=\"og:description\" content=\"WordPress Yerel Geli\u015ftirme Ortam\u0131 Kurulumu: Vagrant ile Neden ve Nas\u0131l? Modern web geli\u015ftirme s\u00fcre\u00e7lerinde, \u00f6zellikle WordPress gibi dinamik v\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/wordpress-yerel-gelistirme-ortami-kurulumu-vagrant-ile-neden-ve-nasil\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-27T23:40:52+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=\"12 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/wordpress-yerel-gelistirme-ortami-kurulumu-vagrant-ile-neden-ve-nasil\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/wordpress-yerel-gelistirme-ortami-kurulumu-vagrant-ile-neden-ve-nasil\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"WordPress Yerel Geli\u015ftirme Ortam\u0131 Kurulumu: Vagrant ile Neden ve Nas\u0131l?\",\"datePublished\":\"2025-12-27T23:40:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/wordpress-yerel-gelistirme-ortami-kurulumu-vagrant-ile-neden-ve-nasil\/\"},\"wordCount\":2752,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"PHP\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/wordpress-yerel-gelistirme-ortami-kurulumu-vagrant-ile-neden-ve-nasil\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/wordpress-yerel-gelistirme-ortami-kurulumu-vagrant-ile-neden-ve-nasil\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wordpress-yerel-gelistirme-ortami-kurulumu-vagrant-ile-neden-ve-nasil\/\",\"name\":\"WordPress Yerel Geli\u015ftirme Ortam\u0131 Kurulumu: Vagrant ile Neden ve Nas\u0131l? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-12-27T23:40:52+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/wordpress-yerel-gelistirme-ortami-kurulumu-vagrant-ile-neden-ve-nasil\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/wordpress-yerel-gelistirme-ortami-kurulumu-vagrant-ile-neden-ve-nasil\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/wordpress-yerel-gelistirme-ortami-kurulumu-vagrant-ile-neden-ve-nasil\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"WordPress Yerel Geli\u015ftirme Ortam\u0131 Kurulumu: Vagrant ile Neden ve Nas\u0131l?\"}]},{\"@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":"WordPress Yerel Geli\u015ftirme Ortam\u0131 Kurulumu: Vagrant ile Neden ve Nas\u0131l? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/wordpress-yerel-gelistirme-ortami-kurulumu-vagrant-ile-neden-ve-nasil\/","og_locale":"tr_TR","og_type":"article","og_title":"WordPress Yerel Geli\u015ftirme Ortam\u0131 Kurulumu: Vagrant ile Neden ve Nas\u0131l?","og_description":"WordPress Yerel Geli\u015ftirme Ortam\u0131 Kurulumu: Vagrant ile Neden ve Nas\u0131l? Modern web geli\u015ftirme s\u00fcre\u00e7lerinde, \u00f6zellikle WordPress gibi dinamik v","og_url":"https:\/\/fatihsoysal.com\/blog\/wordpress-yerel-gelistirme-ortami-kurulumu-vagrant-ile-neden-ve-nasil\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-12-27T23:40:52+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"12 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/wordpress-yerel-gelistirme-ortami-kurulumu-vagrant-ile-neden-ve-nasil\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/wordpress-yerel-gelistirme-ortami-kurulumu-vagrant-ile-neden-ve-nasil\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"WordPress Yerel Geli\u015ftirme Ortam\u0131 Kurulumu: Vagrant ile Neden ve Nas\u0131l?","datePublished":"2025-12-27T23:40:52+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/wordpress-yerel-gelistirme-ortami-kurulumu-vagrant-ile-neden-ve-nasil\/"},"wordCount":2752,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["PHP"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/wordpress-yerel-gelistirme-ortami-kurulumu-vagrant-ile-neden-ve-nasil\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/wordpress-yerel-gelistirme-ortami-kurulumu-vagrant-ile-neden-ve-nasil\/","url":"https:\/\/fatihsoysal.com\/blog\/wordpress-yerel-gelistirme-ortami-kurulumu-vagrant-ile-neden-ve-nasil\/","name":"WordPress Yerel Geli\u015ftirme Ortam\u0131 Kurulumu: Vagrant ile Neden ve Nas\u0131l? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-12-27T23:40:52+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/wordpress-yerel-gelistirme-ortami-kurulumu-vagrant-ile-neden-ve-nasil\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/wordpress-yerel-gelistirme-ortami-kurulumu-vagrant-ile-neden-ve-nasil\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/wordpress-yerel-gelistirme-ortami-kurulumu-vagrant-ile-neden-ve-nasil\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"WordPress Yerel Geli\u015ftirme Ortam\u0131 Kurulumu: Vagrant ile Neden ve Nas\u0131l?"}]},{"@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\/37149","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=37149"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37149\/revisions"}],"predecessor-version":[{"id":37150,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37149\/revisions\/37150"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=37149"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=37149"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=37149"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}