WordPress Yerel Geliştirme Ortamı Kurulumu: Vagrant ile Neden ve Nasıl?
Modern web geliştirme süreçlerinde, özellikle WordPress gibi dinamik ve veritabanı tabanlı sistemlerde, sağlam ve tutarlı bir geliştirme ortamına sahip olmak hayati öneme sahiptir. “Makinede çalışıyor ama sunucuda çalışmıyor” sendromundan kaçınmak, farklı geliştiriciler arasında işbirliğini kolaylaştırmak ve üretim ortamına yakın bir deneyim sunmak için yerel geliştirme ortamları vazgeçilmezdir. Geleneksel olarak XAMPP, MAMP veya WAMP gibi paketler kullanılsa da, bu çözümler genellikle esneklik, izolasyon ve tekrarlanabilirlik konusunda yetersiz kalabilir. İşte bu noktada Vagrant devreye girerek, sanallaştırma teknolojisinin gücünü kullanarak geliştiricilere tutarlı, taşınabilir ve otomatize edilmiş yerel geliştirme ortamları kurma imkanı sunar.
Bu makalede, Vagrant’ın ne olduğunu, WordPress geliştirme süreçlerinizde neden bu kadar önemli olduğunu ve adım adım nasıl bir WordPress yerel geliştirme ortamı kuracağınızı ayrıntılı bir şekilde inceleyeceğiz. Ayrıca, en iyi uygulamalar, gelişmiş yapılandırmalar ve karşılaşabileceğiniz olası sorunlara yönelik çözümlere de değineceğiz.
Neden Vagrant ile Yerel Geliştirme Ortamı Kurmalısınız?
Vagrant, geliştirme ortamlarını sanal makineler (VM’ler) üzerinde otomatik olarak yapılandırmak ve yönetmek için tasarlanmış bir araçtır. VirtualBox, VMware veya Hyper-V gibi sanallaştırma yazılımlarıyla entegre çalışarak, her projeye özel izole edilmiş ve tutarlı bir ortam sağlar. WordPress geliştiricileri için Vagrant’ın sunduğu temel avantajlar şunlardır:
Tutarlılık (Consistency)
* Geliştirici ve Üretim Ortamı Arasında: Vagrant, yerel ortamınızı üretim sunucunuzun yapılandırmasına (işletim sistemi, PHP sürümü, veritabanı sürümü vb.) mümkün olduğunca yakın bir şekilde ayarlamanıza olanak tanır. Bu, “benim makinemde çalışıyordu” sorunlarını ortadan kaldırır ve dağıtım sırasında beklenmedik hataları en aza indirir.
* Ekip İçinde Tutarlılık: Bir ekipte birden fazla geliştirici çalıştığında, herkesin aynı geliştirme ortamına sahip olması kritik öneme sahiptir. Vagrantfile, projenin sürüm kontrol sistemine (Git gibi) eklendiğinde, yeni bir geliştirici veya mevcut bir geliştirici makine değiştirdiğinde, ortamı saniyeler içinde tamamen aynı şekilde kurabilir.
Taşınabilirlik (Portability)
* Vagrant ortamları taşınabilirdir. Bir projeyi bir bilgisayardan diğerine taşımak veya yeni bir projeye başlamak, sadece proje dizinini kopyalamak ve vagrant up komutunu çalıştırmak kadar kolaydır. Bu, kurulum ve yapılandırma süreçlerine harcanan zamanı önemli ölçüde azaltır.
İzolasyon (Isolation)
* Her Vagrant ortamı kendi sanal makinesinde çalıştığı için, projeler birbirinden tamamen izole edilmiştir. Bu, farklı WordPress projelerinin farklı PHP sürümleri, Apache/Nginx yapılandırmaları veya veritabanı sistemleri gerektirdiğinde büyük bir avantajdır. Ana işletim sisteminizdeki yazılımlarla çakışma riski ortadan kalkar.
* Ana sisteminizde herhangi bir yazılım kurmanıza gerek kalmaz, bu da ana sisteminizi temiz ve düzenli tutmanızı sağlar.
Tekrarlanabilirlik (Reproducibility)
* Vagrantfile, ortamın tüm yapılandırmasını kod olarak tanımlar. Bu, ortamı istediğiniz zaman yok edip (destroy) yeniden oluşturabileceğiniz anlamına gelir. Bu, özellikle karmaşık bir yapılandırmayı test ederken veya bir şeylerin ters gittiği durumlarda çok faydalıdır.
İşbirliği (Collaboration)
* Vagrantfile’ı sürüm kontrol sistemine dahil ederek, tüm ekibin aynı ortam tanımını kullanmasını sağlarsınız. Bir ortam yapılandırmasında yapılan değişiklikler, herkesin kolayca güncelleyebileceği ve uygulayabileceği şekilde paylaşılır.
Felaket Kurtarma (Disaster Recovery)
* Ana işletim sisteminiz çökse veya yeniden yüklemeniz gerekse bile, Vagrantfile’ınız ve proje dosyalarınız güvende olduğu sürece, geliştirme ortamınızı dakikalar içinde yeniden kurabilirsiniz.
Maliyet Etkinliği (Cost-Effectiveness)
* Vagrant ve VirtualBox gibi temel araçlar açık kaynak ve ücretsizdir. Bu, geliştirme ortamı altyapısı için herhangi bir lisans maliyeti ödemeyeceğiniz anlamına gelir. Ayrıca, kurulum ve bakım sürelerinden tasarruf ederek dolaylı maliyetleri de düşürür.
Bu avantajlar göz önüne alındığında, Vagrant’ın WordPress geliştirme süreçlerinizi nasıl daha verimli, güvenilir ve keyifli hale getirebileceği açıktır. Şimdi, bu güçlü aracı nasıl kuracağımıza ve WordPress için bir LAMP (Linux, Apache, MySQL, PHP) yığını oluşturacağımıza geçelim.
Ön Gereksinimler
Vagrant ile bir WordPress yerel geliştirme ortamı kurmaya başlamadan önce, bilgisayarınızda bazı temel yazılımların yüklü olması gerekir:
1. Sanallaştırma Yazılımı (Virtualization Software): Vagrant, sanal makineleri çalıştırmak için bir sanallaştırma sağlayıcısına ihtiyaç duyar. En popüler ve ücretsiz seçenek VirtualBox’tır. VMware Workstation/Fusion veya Hyper-V (Windows Pro kullanıcıları için) de kullanılabilir, ancak genellikle VirtualBox tercih edilir.
* VirtualBox Kurulumu: VirtualBox’ın resmi web sitesinden (virtualbox.org) işletim sisteminize uygun sürümü indirip kurun. Kurulum sırasında varsayılan seçenekleri kabul edebilirsiniz.
2. Vagrant: Vagrant’ın kendisi.
* Vagrant Kurulumu: Vagrant’ın resmi web sitesinden (vagrantup.com) işletim sisteminize uygun sürümü indirip kurun. Kurulum genellikle basittir ve varsayılan seçeneklerle ilerleyebilirsiniz. Kurulumdan sonra bir komut istemcisi (Terminal veya Komut İstemi) açarak vagrant --version komutunu çalıştırarak doğru şekilde kurulup kurulmadığını kontrol edebilirsiniz.
3. Metin Düzenleyici veya IDE: Vagrantfile ve diğer yapılandırma dosyalarını düzenlemek için bir metin düzenleyiciye (VS Code, Sublime Text, Atom) veya bir IDE’ye (PhpStorm) ihtiyacınız olacak.
4. Terminal/Komut İstemi: Vagrant komutlarını çalıştırmak için bir komut istemcisi kullanmanız gerekecek.
Bu ön gereksinimleri tamamladıktan sonra, Vagrant ile WordPress ortamınızı kurmaya hazırsınız.
Vagrant ile WordPress Yerel Geliştirme Ortamı Nasıl Kurulur?
Bu bölümde, adım adım bir WordPress yerel geliştirme ortamını Vagrant kullanarak nasıl kuracağımızı anlatacağız. Temel olarak bir Linux sanal makinesi (Ubuntu), Apache web sunucusu, MySQL veritabanı ve PHP’den oluşan bir LAMP yığını oluşturacağız.
1. Adım: Proje Dizini Oluşturma ve Vagrantfile Başlatma
İlk olarak, WordPress projeniz için bir dizin oluşturun ve bu dizine gidin. Ardından Vagrant’ı bu dizinde başlatın.
mkdir my-wordpress-project
cd my-wordpress-project
vagrant init ubuntu/bionic64
* mkdir my-wordpress-project: Projeniz için my-wordpress-project adında bir dizin oluşturur.
* cd my-wordpress-project: Oluşturduğunuz dizine geçiş yapar.
* vagrant init ubuntu/bionic64: Bu komut, ubuntu/bionic64 adlı bir Vagrant kutusunu temel alarak yeni bir Vagrantfile oluşturur. ubuntu/bionic64, Ubuntu 18.04 LTS (Bionic Beaver) sürümünü içeren popüler bir Vagrant kutusudur. Bu komutu çalıştırdığınızda, dizininizde Vagrantfile adında bir dosya oluşacaktır.
2. Adım: Vagrantfile Yapılandırması
Vagrantfile, sanal makinenizin tüm yapılandırmasını içerir. Bu dosyayı bir metin düzenleyici ile açın ve aşağıdaki değişiklikleri yapın. Açıklamaları dikkatlice okuyun.
# -- mode: ruby --
vi: set ft=ruby :
Vagrant.configure("2") do |config|
# Sanal makine için kullanılacak kutu (işletim sistemi)
config.vm.box = "ubuntu/bionic64"
# Sanal makineye özel bir IP adresi atayın. Bu IP üzerinden tarayıcınızdan erişebileceksiniz.
config.vm.network "private_network", ip: "192.168.33.10"
# Host (ana bilgisayar) ve Guest (sanal makine) arasında paylaşılan klasör.
# Bu, host makinenizdeki proje dizininizi sanal makinedeki /var/www/html diziniyle senkronize eder.
# WordPress dosyalarınızı host makinenizde düzenleyip, değişiklikleri anında sanal makinede görebileceksiniz.
config.vm.synced_folder ".", "/var/www/html"
# Sanal makineye kaynak ataması (isteğe bağlı ama önerilir)
config.vm.provider "virtualbox" do |vb|
vb.name = "WordPressDev" # VirtualBox'ta VM'in adı
vb.memory = "1024" # 1 GB RAM
vb.cpus = "1" # 1 CPU çekirdeği
end
# Sanal makineyi otomatik olarak yapılandırmak için provisioning (sağlama) betiği.
# Bu betik, VM ilk kez başlatıldığında veya vagrant provision komutu çalıştırıldığında çalışır.
config.vm.provision "shell", path: "bootstrap.sh"
end
* config.vm.box = "ubuntu/bionic64": Kullanılacak işletim sistemi kutusunu belirtir. Eğer bu kutu yerel olarak yüklü değilse, Vagrant ilk vagrant up komutunda otomatik olarak indirecektir.
* config.vm.network "private_network", ip: "192.168.33.10": Sanal makinenize statik bir özel IP adresi atar. Bu IP adresi, ana bilgisayarınızdan sanal makineye erişmenizi sağlar. Tarayıcınızda http://192.168.33.10 adresini yazarak WordPress sitenize ulaşacaksınız.
* config.vm.synced_folder ".", "/var/www/html": Bu satır, ana bilgisayarınızdaki mevcut proje dizininizi (.) sanal makinedeki /var/www/html diziniyle senkronize eder. Bu, WordPress dosyalarınızı ana bilgisayarınızda favori metin düzenleyicinizle düzenleyebileceğiniz ve değişikliklerin sanal makinede anında yansımasını sağlayabileceğiniz anlamına gelir.
* config.vm.provider "virtualbox" do |vb| ... end: Bu blok, VirtualBox’a özel ayarları yapılandırmanıza olanak tanır. Burada sanal makineye 1GB RAM ve 1 CPU çekirdeği atadık. Projenizin ihtiyaçlarına göre bu değerleri artırabilirsiniz.
* config.vm.provision "shell", path: "bootstrap.sh": Bu satır, sanal makine ilk kez başlatıldığında veya vagrant provision komutuyla manuel olarak çalıştırıldığında bir bootstrap.sh betiğinin çalıştırılacağını belirtir. Bu betik, LAMP yığınını ve WordPress’i kurmak için kullanılacaktır.
3. Adım: Provisioning Betiği Oluşturma (bootstrap.sh)
Vagrantfile ile aynı dizine bootstrap.sh adında yeni bir dosya oluşturun ve içine aşağıdaki komutları ekleyin. Bu betik, sanal makine içinde Apache, MySQL, PHP ve WordPress’i kuracaktır.
#!/usr/bin/env bash
Sanal makineyi güncelle
echo "Updating apt packages..."
sudo apt-get update -y
sudo apt-get upgrade -y
Apache Web Sunucusu Kurulumu
echo "Installing Apache..."
sudo apt-get install -y apache2
Apache'yi paylaşılan klasörü kullanacak şekilde yapılandır
default sites-available dosyasını düzenliyoruz
echo "Configuring Apache for /var/www/html..."
sudo rm -rf /var/www/html/* # Varsayılan index.html'yi kaldır
sudo chown -R vagrant:www-data /var/www/html # Dizin sahibini değiştir
sudo chmod -R 775 /var/www/html # Dizin izinlerini ayarla
Apache yapılandırma dosyasını düzenle (örneğin 000-default.conf)
DocumentRoot'u /var/www/html olarak ayarla ve AllowOverride All ekle
APACHE_CONFIG="/etc/apache2/sites-available/000-default.conf"
if [ -f "$APACHE_CONFIG" ]; then
sudo sed -i 's|DocumentRoot /var/www/html|DocumentRoot /var/www/html\n\n\t\n\t\tOptions Indexes FollowSymLinks MultiViews\n\t\tAllowOverride All\n\t\tRequire all granted\n\t|' "$APACHE_CONFIG"
echo "Apache DocumentRoot updated and AllowOverride All added."
else
echo "Warning: Apache default config file not found at $APACHE_CONFIG."
fi
Apache rewrite modülünü etkinleştir (WordPress permalinkleri için gerekli)
echo "Enabling Apache rewrite module..."
sudo a2enmod rewrite
Apache servisini yeniden başlat
echo "Restarting Apache service..."
sudo systemctl restart apache2
MySQL Veritabanı Sunucusu Kurulumu
echo "Installing MySQL server..."
DEBIAN_FRONTEND=noninteractive ile kurulum sırasında şifre sormadan devam et
sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password password root'
sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password root'
sudo apt-get install -y mysql-server
WordPress için veritabanı ve kullanıcı oluştur
echo "Creating WordPress database and user..."
sudo mysql -u root -proot -e "CREATE DATABASE IF NOT EXISTS wordpress_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
sudo mysql -u root -proot -e "CREATE USER IF NOT EXISTS 'wp_user'@'localhost' IDENTIFIED BY 'password';"
sudo mysql -u root -proot -e "GRANT ALL PRIVILEGES ON wordpress_db.* TO 'wp_user'@'localhost';"
sudo mysql -u root -proot -e "FLUSH PRIVILEGES;"
echo "WordPress database 'wordpress_db' and user 'wp_user' created."
PHP ve Gerekli Modüllerin Kurulumu
echo "Installing PHP and necessary modules..."
sudo apt-get install -y php libapache2-mod-php php-mysql php-cli php-curl php-gd php-mbstring php-xml php-zip
PHP ayarlarını düzenle (isteğe bağlı, performansı artırabilir)
Örneğin, bellek limitini artırma
PHP_INI="/etc/php/7.2/apache2/php.ini" # Ubuntu 18.04 varsayılan PHP 7.2 kullanır
if [ -f "$PHP_INI" ]; then
sudo sed -i 's/memory_limit = 128M/memory_limit = 256M/g' "$PHP_INI"
echo "PHP memory_limit updated to 256M."
else
echo "Warning: PHP ini file not found at $PHP_INI."
fi
Apache servisini PHP değişiklikleri için yeniden başlat
echo "Restarting Apache service for PHP changes..."
sudo systemctl restart apache2
WordPress Kurulumu
echo "Downloading and installing WordPress..."
cd /var/www/html
Eğer zaten bir WordPress kurulumu yoksa devam et
if [ ! -f "wp-config.php" ]; then
# Önceki dosyaları temizle (eğer varsa)
sudo rm -rf index.html
sudo wget https://wordpress.org/latest.tar.gz
sudo tar -xzvf latest.tar.gz
sudo mv wordpress/* .
sudo rm -rf latest.tar.gz wordpress
# wp-config.php dosyasını oluştur ve veritabanı bilgilerini ekle
sudo cp wp-config-sample.php wp-config.php
sudo sed -i "s/database_name_here/wordpress_db/g" wp-config.php
sudo sed -i "s/username_here/wp_user/g" wp-config.php
sudo sed -i "s/password_here/password/g" wp-config.php
sudo sed -i "s/localhost/localhost/g" wp-config.php # Zaten localhost, yine de örnek için bırakıldı
# WordPress güvenlik anahtarlarını otomatik olarak oluştur ve ekle
# Bu adım, daha güvenli bir wp-config.php oluşturur.
SALT=$(wget -qO- https://api.wordpress.org/secret-key/1.1/salt/)
printf '%s\n' "$SALT" | awk '/define/{printf "define(%s);\n", $2}' | sudo tee -a wp-config.php > /dev/null
echo "WordPress downloaded and wp-config.php configured."
else
echo "WordPress already seems to be installed."
fi
Dosya izinlerini ayarla (WordPress'in yazma iznine ihtiyacı var)
echo "Setting file permissions for WordPress..."
sudo chown -R www-data:www-data /var/www/html
sudo find /var/www/html -type d -exec chmod 755 {} \;
sudo find /var/www/html -type f -exec chmod 644 {} \;
echo "File permissions set."
echo "Vagrant provisioning complete. Your WordPress site should be accessible at http://192.168.33.10"
Bu betik şunları yapar:
* Ubuntu paket listesini günceller.
* Apache2’yi kurar ve DocumentRoot‘u /var/www/html olarak ayarlar. Ayrıca AllowOverride All ekleyerek .htaccess dosyalarının çalışmasını sağlar ve mod_rewrite‘ı etkinleştirir.
* MySQL sunucusunu kurar ve root şifresini root olarak ayarlar (yalnızca geliştirme için güvenlidir).
* WordPress için wordpress_db adında bir veritabanı ve wp_user adında password şifresiyle bir kullanıcı oluşturur.
* PHP ve WordPress’in ihtiyaç duyduğu gerekli PHP modüllerini (php-mysql, php-cli, php-curl vb.) kurar.
* PHP memory_limit‘i 256M’ye yükseltir (isteğe bağlı).
* Apache servisini yeniden başlatır.
* /var/www/html dizinine WordPress’in en son sürümünü indirir, arşivden çıkarır ve ana dizine taşır.
* wp-config.php dosyasını wp-config-sample.php‘den kopyalar ve veritabanı bilgilerini (veritabanı adı, kullanıcı adı, şifre) otomatik olarak doldurur. Ayrıca, WordPress güvenlik anahtarlarını da otomatik olarak oluşturur ve ekler.
* WordPress dosyaları için doğru dosya ve dizin izinlerini ayarlar (www-data kullanıcısı ve grubu).
4. Adım: Sanal Makineyi Başlatma
Vagrantfile ve bootstrap.sh dosyalarını oluşturduktan sonra, proje dizininizde bir komut istemcisi açın ve aşağıdaki komutu çalıştırın:
vagrant up
Bu komut şunları yapacaktır:
1. ubuntu/bionic64 kutusunu indirir (eğer daha önce indirilmediyse).
2. VirtualBox’ta sanal makineyi oluşturur ve başlatır.
3. Vagrantfile‘da belirtilen ağ ayarlarını ve paylaşılan klasörleri yapılandırır.
4. bootstrap.sh betiğini çalıştırarak Apache, MySQL, PHP ve WordPress kurulumunu otomatik olarak gerçekleştirir.
Bu işlem biraz zaman alabilir (internet hızınıza ve bilgisayarınızın performansına bağlı olarak 10-20 dakika). Tüm adımlar başarıyla tamamlandığında, terminalde “Vagrant provisioning complete…” mesajını görmelisiniz.
5. Adım: WordPress Kurulumunu Tamamlama
Sanal makine başarıyla başlatılıp yapılandırıldıktan sonra, web tarayıcınızı açın ve http://192.168.33.10 adresine gidin. WordPress’in hoş geldiniz ekranını görmelisiniz. Burada sitenizin başlığını, yönetici kullanıcı adını, şifresini ve e-posta adresini girerek WordPress kurulumunu tamamlayabilirsiniz.
Tebrikler! Vagrant ile tamamen işlevsel bir WordPress yerel geliştirme ortamı kurdunuz.
6. Adım: Sanal Makine Yönetimi
Sanal makineyi yönetmek için bazı temel Vagrant komutları:
* vagrant ssh: Sanal makineye SSH ile bağlanır. Bu, sanal makine içinde komut çalıştırmanıza olanak tanır.
* vagrant suspend: Sanal makineyi askıya alır (RAM durumunu kaydeder). Hızlı bir şekilde durdurup başlatmak için idealdir.
* vagrant resume: Askıya alınmış bir sanal makineyi devam ettirir.
* vagrant halt: Sanal makineyi düzgün bir şekilde kapatır.
* vagrant reload: Vagrantfile‘da yapılan değişiklikleri uygulamak için sanal makineyi yeniden başlatır.
* vagrant destroy: Sanal makineyi ve tüm verilerini kalıcı olarak siler. Bu, ortamı tamamen sıfırlamak istediğinizde kullanışlıdır.
Gelişmiş Kavramlar ve En İyi Uygulamalar
Temel kurulumu tamamladıktan sonra, Vagrant deneyiminizi daha da geliştirecek bazı ileri düzey kavramlar ve en iyi uygulamalar bulunmaktadır:
Ana Bilgisayar Adları (Hostnames) ile Çalışma
IP adresi yerine daha anlamlı bir ana bilgisayar adı (örneğin, mywordpress.local) kullanmak, birden fazla proje üzerinde çalışırken veya URL’leri hatırlarken daha kolaydır. Bunu yapmak için ana bilgisayarınızın hosts dosyasını düzenlemeniz gerekir:
* Linux/macOS: /etc/hosts
* Windows: C:\Windows\System32\drivers\etc\hosts
Bu dosyaya aşağıdaki satırı ekleyin:
192.168.33.10 mywordpress.local
Ardından, tarayıcınızda http://mywordpress.local adresini kullanarak WordPress sitenize erişebilirsiniz.
Vagrant-Hostmanager Eklentisi: Bu işlemi otomatikleştirmek için vagrant-hostmanager eklentisini kullanabilirsiniz.
vagrant plugin install vagrant-hostmanager
Ardından Vagrantfile‘ınıza şu satırları ekleyin:
config.vm.hostname = "mywordpress.local"
config.vm.network "private_network", ip: "192.168.33.10", :virtualbox__intnet => true # virtualbox__intnet gerekebilir
config.hostmanager.enabled = true
config.hostmanager.manage_host = true
config.hostmanager.manage_guest = true
vagrant up veya vagrant reload çalıştırdığınızda, eklenti hosts dosyanızı otomatik olarak güncelleyecektir.
Birden Fazla Sanal Makine ve Proje
Vagrantfile’da birden fazla config.vm.define bloğu kullanarak tek bir Vagrantfile içinde birden fazla sanal makine tanımlayabilirsiniz. Her VM için farklı IP adresleri ve paylaşılan klasörler atayarak birden fazla WordPress projesini aynı anda çalıştırabilirsiniz.
Vagrant.configure("2") do |config|
config.vm.define "wordpress1" do |wordpress1|
wordpress1.vm.box = "ubuntu/bionic64"
wordpress1.vm.network "private_network", ip: "192.168.33.11"
wordpress1.vm.hostname = "wordpress1.local"
wordpress1.vm.synced_folder "./wordpress1_data", "/var/www/html"
wordpress1.vm.provision "shell", path: "bootstrap.sh"
end
config.vm.define "wordpress2" do |wordpress2|
wordpress2.vm.box = "ubuntu/bionic64"
wordpress2.vm.network "private_network", ip: "192.168.33.12"
wordpress2.vm.hostname = "wordpress2.local"
wordpress2.vm.synced_folder "./wordpress2_data", "/var/www/html"
wordpress2.vm.provision "shell", path: "bootstrap.sh"
end
end
Her bir VM’i ayrı ayrı başlatmak için vagrant up wordpress1 veya tümünü başlatmak için vagrant up kullanabilirsiniz.
Vagrant Eklentileri
Vagrant ekosistemi, işlevselliği artıran birçok eklentiye sahiptir:
* vagrant-vbguest: VirtualBox Guest Additions’ın her zaman güncel olmasını sağlar, bu da paylaşılan klasörler ve performans için önemlidir.
* vagrant-triggers: Sanal makine yaşam döngüsünün belirli noktalarında (örneğin, up veya destroy öncesi/sonrası) komutlar çalıştırmanıza olanak tanır.
* vagrant-share: Geliştirme ortamınızı internet üzerinden geçici olarak paylaşmanıza olanak tanır, bu da müşterilere veya ekip üyelerine demo yapmak için harikadır.
Eklentileri vagrant plugin install komutuyla kurabilirsiniz.
Sürüm Kontrolü ve Vagrantfile
Vagrantfile ve bootstrap.sh gibi yapılandırma dosyalarını projenizin sürüm kontrol sistemine (Git gibi) eklemek çok önemlidir. Bu, ekibinizdeki herkesin aynı ortam yapılandırmasına sahip olmasını sağlar ve ortam değişikliklerinin takip edilebilir olmasını sağlar.
Veritabanı Yedeklemeleri
Sanal makinenizi destroy ettiğinizde, içindeki veritabanı da silinir. Bu nedenle, önemli veritabanı değişiklikleri yapmadan önce yedek almak iyi bir uygulamadır. MySQL içinden mysqldump komutunu kullanarak yedek alabilir ve paylaşılan klasörünüze kaydedebilirsiniz:
vagrant ssh
mysqldump -u wp_user -ppassword wordpress_db > /var/www/html/backup.sql
exit
Ardından backup.sql dosyası ana bilgisayarınızdaki proje dizininizde bulunacaktır.
Sorun Giderme
Vagrant ile çalışırken karşılaşabileceğiniz bazı yaygın sorunlar ve çözümleri:
* vagrant up komutu başarısız oluyor:
* VirtualBox’ın düzgün kurulduğundan ve çalıştığından emin olun.
* Bilgisayarınızın BIOS/UEFI ayarlarında sanallaştırmanın (Intel VT-x/AMD-V) etkinleştirildiğinden emin olun.
* Yeterli sistem kaynağı (RAM, disk alanı) olduğundan emin olun.
* Vagrantfile‘da sözdizimi hatası olup olmadığını kontrol edin.
* Web sitesi tarayıcıda açılmıyor (örneğin, http://192.168.33.10):
* Sanal makinenin çalıştığından emin olun (vagrant status komutunu kontrol edin).
* Vagrantfile‘daki private_network IP adresinin doğru olduğundan emin olun.
* bootstrap.sh betiğinin Apache’yi düzgün bir şekilde kurduğundan ve başlattığından emin olun. vagrant ssh ile bağlanıp sudo systemctl status apache2 komutunu çalıştırarak Apache durumunu kontrol edebilirsiniz.
* Ana bilgisayarınızın güvenlik duvarının 80 numaralı bağlantı noktasını engellemediğinden emin olun.
* Vagrantfile‘daki synced_folder ayarının doğru olduğundan ve WordPress dosyalarının /var/www/html dizininde olduğundan emin olun.
* WordPress kurulumu sırasında veritabanı bağlantı hatası:
* bootstrap.sh betiğinde MySQL kurulumunun başarılı olduğundan emin olun. vagrant ssh ile bağlanıp sudo systemctl status mysql komutunu çalıştırarak MySQL durumunu kontrol edebilirsiniz.
* wp-config.php dosyasındaki DB_NAME, DB_USER ve DB_PASSWORD değerlerinin bootstrap.sh‘de oluşturduğunuz veritabanı adı, kullanıcı adı ve şifre ile eşleştiğinden emin olun.
* MySQL kullanıcısının localhost‘tan erişim izni olduğundan emin olun.
* Dosya izinleri sorunları (WordPress tema/eklenti yükleyemiyor):
* bootstrap.sh betiğindeki chown ve chmod komutlarının doğru şekilde çalıştırıldığından emin olun. WordPress dosyalarının sahibi genellikle web sunucusu kullanıcısı (www-data gibi) olmalıdır. vagrant ssh ile bağlanıp ls -l /var/www/html komutunu çalıştırarak izinleri kontrol edebilirsiniz. Gerekirse manuel olarak sudo chown -R www-data:www-data /var/www/html ve sudo chmod -R 755 /var/www/html (dizinler için) ve sudo chmod -R 644 /var/www/html (dosyalar için) komutlarını çalıştırın.
Sonuç
Vagrant, WordPress geliştiricileri için yerel geliştirme ortamı kurma ve yönetme şeklini dönüştüren güçlü bir araçtır. Tutarlılık, taşınabilirlik, izolasyon ve otomasyon sağlayarak, geliştirme sürecini daha verimli, daha az hataya açık ve daha keyifli hale getirir.
Bu makalede adım adım bir WordPress yerel geliştirme ortamının Vagrant ile nasıl kurulduğunu, temel yapılandırmaları, provisioning betiğini ve gelişmiş ipuçlarını ele aldık. Başlangıçta biraz öğrenme eğrisi olsa da, Vagrant’a yatırım yapmak, uzun vadede size zaman kazandıracak ve daha sağlam, üretim ortamına yakın uygulamalar geliştirmenize olanak tanıyacaktır.
Artık XAMPP/MAMP gibi geleneksel çözümlerin sınırlamalarından kurtulabilir, her projeniz için özel, izole ve tekrarlanabilir ortamlar oluşturabilirsiniz. Vagrant’ı geliştirme iş akışınıza entegre ederek, WordPress projelerinizde daha fazla kontrol, esneklik ve güvenilirlik elde edeceksiniz. Başlayın ve Vagrant’ın sunduğu kolaylığı deneyimleyin!
