İçeriğe geç
Muhammet Şafak
Araçlar & Teknolojiler 2 dk okuma

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.


“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ı:

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:

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:

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

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.

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.

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.

Etiketler: #Laravel
Paylaş:

İlgili Yazılar

Sitede Ara

Yazı, proje ve sayfalarda arama yapmak için yazmaya başlayın.

Esc ile kapat Pagefind ile güçlendirildi