Yukarıdaki bilgiye ek olarak, Homestead bir sanal işletim sisteminde çalışır. Bunun için Vagrant, Vagrant kullanmak için de Virtualbox kullanmak gerekiyor. En basit haliyle anlatmak gerekirse:
1. VirtualBox, sen kendi bilgisayarında nasıl Windows 8 veya Linux Mint vb. kullanıyorsan, sana başka sistemleri kullanan bir sanal bilgisayar oluşturmanı sağlar. Mesela Windows XP IE6 testi yapman gerekiyorsa, sanal sunucuya Windows XP kurup, testlerini yapıp, daha sonra silebilirsin.
2. Vagrant, sana bir linux sürümünün çalışabilmesi için gerekli olan minimum çekirdeği sağlar. Senin belirttiğin bilgilere göre bir linux sürümünü kurar. Mesela, sen bir şirkette yazılımcı olarak çalışıyorsun ve geliştirdiğiniz uygulama çok eski, sadece MySQL 4 ve PHP 5.2 üzerinde çalışıyor, ama aynı zamanda kendin PHP 5.6 veya PHP 7.0 kullanıp kişisel projelerini geliştiriyorsun. Kendi kullandığın işletim sistemine MAMP kurarsan, birçok PHP versiyonu, birçok MAMP kurulumu, portlar vb. hep karışacak. Aynı şekilde, şirkete katılan yazılımcılara sistemine MySQL 4.0 kur, PHP 5.2 kur, şunu kur vb. demek zaman alıcı şeyler.
Vagrant ile, sen bunların hepsini bir konfigürasyon dosyasına yazıyorsun, konfigürasyon dosyasını diğer yazılımcıya atıyorsun ve Vagrant otomatik olarak o konfigürasyon dosyasını okuyup sanal bir işletim sistemi oluşturuyor. İstersen PHP 5.2 olan sanal sunucuyu kapatırsın (1-2 saniye sürüyor açılması ve kapanması), PHP 7.0 olanı başlatırsın. İşin biterse silersin. Bilgisayarın temiz kalır.
3. Homestead ise, Vagrant üzerinde Laravel geliştiricileri tarafından oluşturulmuş bir konfigürasyondur diyebiliriz. Sen Homestead'ı kullandığında, Laravel için özel olarak geliştirilmiş bir Vagrant sanal işletim sistemi kullanırsın. Çok kullanılan şeyler (PHP, MySQL, Nginx/Apache, Beanstalkd, Supervisord, Git, Gulp vsvs.) hazır kurulu olarak gelir.
Avantajları kısaca şöyle
- Kişisel bilgisayarındaki dosyalar temiz kalır.
- Sadece MAMP kurmanın yetmeyeceği noktalarda yardımcı olur. (Örn Gulp kullanmak için NPM lazım, NPM için NodeJS lazım. Hepsini tek tek indirip kendi işletim sistemine kurabilirsin, ama format attığında vb. herşeyi tekrar yapmaya ne gerek var?)
- Oluşturduğun Vagrant kutusunu başka geliştiricilere atabilirsin. PHP 5.2 yi indirmekle uğraşmazlar. PHP 5.2 projesini senin kutunda çalıştırırlar, kişisel projelerini Homestead kutusunda.
- Windows/OSX kullanıyorsan, bazen geliştirilen araçların desteği iyi olmuyor, veya desteklenmiyor. Linux, özellikle Ubuntu geliştiriciler arasında çok yaygın.
Ben eskiden WAMP kullanıyordum ve birçok sıkıntı yaşadım. (örn Skype'de 80. portu kullanıyor ve çakışma oluyordu) Homestead biraz daha rahat.
"İşletim sistemine birşeyler kurma" olayı yazılımda "Provision" diye geçiyor. Bunun için kullanmak istersen birçok araç var. Chef, Puppet, Ansible vb. Elle kurmaktansa, PHP'nin şu versiyonu olsun, şunun şu ayarı yapılsın gibi bir dosyaya yazıp genellikle versiyon kontrol üzerinde tutuyorsun. Homestead bunu kendisi yapıyor. Laravel geliştiricileri neyin kurulması gerektiğini, neyin ayarının yapılması gerektiğini vb. ayarlamışlar.
Daha basit nasıl anlatabilirim bilmiyorum ama en basiti budur sanırım.