# Laravel Homestead ile herkeste aynı geliştirme ortamı

> Laravel Homestead'ı kurup ekipte 'bende çalışıyordu' sorununu nasıl çözdüğümü adım adım anlattım.

- Yayın: 2015-03-01
- Kategori: Araçlar & Teknolojiler
- Etiketler: Laravel
- Okuma süresi: 2 dk okuma
- Kaynak: https://www.muhammetsafak.com.tr/blog/laravel-homestead-ile-herkeste-ayni-gelistirme-ortami/
- Dil: tr-TR
- Yazar: Muhammet Şafak

---
"Bende çalışıyor ama sende neden çalışmıyor?" Bu cümleyi bir geliştiriciden en az bir kez duymayan ya da söylemeyen yoktur. Birinin makinesinde PHP 5.4, diğerinde 5.6; birinde MySQL 5.5, diğerinde 5.7. Yerel ortamlar farklılaştıkça bu tür problemler kaçınılmaz hale geliyor.

**Laravel Homestead**, bu problemi geliştirme tarafında çözmek için tasarlanmış hazır bir **Vagrant** kutusu. Vagrant, VirtualBox veya VMware gibi sanallaştırma araçlarının üzerine oturuyor ve tek bir yapılandırma dosyasıyla tüm ekip için birebir aynı geliştirme ortamı sağlıyor.

Bu yazıda Homestead'ı sıfırdan nasıl kurduğumu ve birkaç projede çalışacak şekilde nasıl yapılandırdığımı anlatacağım.

## Ön gereksinimler

Homestead'ı çalıştırmak için iki araç gerekiyor:

- **VirtualBox** — ücretsiz, virtualbox.org'dan indiriliyor
- **Vagrant** — sanal makine yöneticisi, vagrantup.com'dan indiriliyor

İkisi de işletim sisteminden bağımsız çalışıyor; Windows, macOS, Linux fark etmez. Bu zaten amacın özü.

Kurulum sonrası:

```bash
vagrant plugin install vagrant-vbguest
vagrant box add laravel/homestead
```

`vagrant box add` komutu Homestead kutusunu indiriyor — birkaç dakika sürebiliyor, kutu yaklaşık 1 GB boyutunda.

## Homestead'ı kurmak

Homestead'ı sisteme global olarak kurmanın iki yolu var: Composer ile ya da doğrudan git deposunu klonlayarak. Composer yöntemi daha pratik:

```bash
composer global require "laravel/homestead=~2.0"
homestead init
```

Bu komut ev dizininizde `~/.homestead/Homestead.yaml` dosyası oluşturuyor. Tüm yapılandırma buradan yönetiliyor.

## Homestead.yaml yapılandırması

Yapılandırma dosyası şu bölümleri içeriyor:

```yaml
ip: "192.168.10.10"
memory: 2048
cpus: 1

authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa

folders:
    - map: ~/Projeler
      to: /home/vagrant/Projeler

sites:
    - map: proje.app
      to: /home/vagrant/Projeler/proje/public

databases:
    - proje_db
```

Birkaç önemli nokta:

- **folders:** Yerel makinenizdeki dizini sanal makineyle eşliyorsunuz. `~/Projeler` klasörü sanal makinede `/home/vagrant/Projeler` olarak görünüyor.
- **sites:** Her projeye bir alan adı (domain) atıyorsunuz. `proje.app` yerel makinenizde çalışacak.
- **databases:** Adını verdiğiniz veritabanları otomatik oluşturuluyor.

Yapılandırmayı kaydettikten sonra `/etc/hosts` dosyanıza alan adını eklemeniz gerekiyor:

```
192.168.10.10  proje.app
```

## Sanal makineyi başlatmak

```bash
homestead up
```

İlk başlatmada kutu yapılandırılıyor. Sonraki başlatmalarda sadece birkaç saniye sürüyor. Tarayıcınızda `http://proje.app` adresine gittiğinizde projeniz açılıyor.

```bash
homestead ssh
```

Bu komutla sanal makineye bağlanabiliyorsunuz. Artisan komutlarını, veritabanı işlemlerini buradan çalıştırıyorsunuz.

## Homestead ne sunuyor?

Homestead kutusu önceden yapılandırılmış şunları içeriyor: PHP 5.6 (ve 5.5 ile 7.0 beta seçeneği), Nginx, MySQL, Postgres, Redis, Memcached, Beanstalkd, Node.js ve Composer. Bunları ayrı ayrı kurmanıza gerek yok.

## Birden fazla proje

Aynı Homestead kurulumunda birden fazla proje çalıştırmak mümkün. `sites` ve `databases` bölümlerine yeni girişler ekliyorsunuz, `/etc/hosts`'a yeni domain yazıyorsunuz ve `homestead reload --provision` ile yapılandırmayı uyguluyorsunuz.

```yaml
sites:
    - map: proje-a.app
      to: /home/vagrant/Projeler/proje-a/public
    - map: proje-b.app
      to: /home/vagrant/Projeler/proje-b/public
```

Her proje kendi alan adında, tek bir sanal makinede çalışıyor.

## İlk kullanım izlenimi

Homestead'ı ekibe tanıtmadan önce birkaç gün kendi başıma kullandım. En büyük avantajı, yerel makinede yazılım sürümü uyuşmazlıklarıyla uğraşmayı tamamen bitirmesi. "Bende PHP bu sürümde" diye düşünmeden direkt kodlamaya geçebiliyorsunuz.

Dezavantajı ise sanal makinenin kaynak tüketimi. Düşük RAM'li bir makinede belirgin bir yavaşlama olabiliyor. Ama bu, kurulum süreci dışında pratikte pek sorun çıkarmadı.

Homestead, özellikle birkaç kişilik ekiplerde "ortam kurulumu" derdini gerçekten çözüyor. Yeni bir geliştirici projeye başladığında saatler değil dakikalar içinde hazır oluyor.
