Ubuntu'da Laravel Homestead Kurulumu

Laravel'i Vagrant üzerinden çalıştırmak birçok kolaylık sağladığı gibi, gayet de basit bir işlem. Ancak maalesef, detaylı Türkçe anlatım mevcut değil, dolayısıyla bu yazıyı yazmaya karar verdim.

Bu yazının sonunda, homestead kurulumunu tamamlamış, nasıl projelerinizi Vagrant'a linkleyebileceğinizi öğrenmiş, ayrıca da veritabanını daha kolay yönetebilmek için phpMyadmin kurulumunu tamamlamış olacaksınız.

Öncelikle, sırasıyla alttaki komutları çalıştırmanız lazım.
$ sudo apt-get install virtualbox
$ sudo apt-get install vagrant
$ sudo apt-get install git
$ vagrant box add laravel/homestead
$ cd ~ && git clone https://github.com/laravel/homestead.git Homestead && cd Homestead
$ chmod +x init.sh && ./init.sh
Vagrant box eklerken, size vmware veya virtualbox'tan hangisini istediğinizi soracaktır, bu kurulumda virtualbox üzerinden ilerlediğimiz için onu seçin. Ancak isterseniz virtualbox yerine vmware kurulumu yapıp, vmware olarak seçim yapabilir, ya da daha sonradan değiştirebilirsiniz.

Kurulum kısmen tamamlandı, daha öncesinde public key üretmediyseniz, alttaki komut ile üretmeniz lazım, ilk çıkan sorguya direkt enter'a basıp, ikinci sorguda, bir passphrase yani şifre niteliğinde düşünebileceğiniz bir cümle yazın.
$ ssh-keygen -t rsa -b 4096 -C "mail@adresiniz.com"
Opsiyonel olarak, her seferinde passphrase sorgusu ile uğraşmak istemiyorsanız, alttaki komutları yazıp, çıkan sorguda biraz önce oluşturduğunuz passphrase'i yazın.
$ eval `ssh-agent -s`
$ ssh-add ~/.ssh/id_rsa
Sonrasında ilk projenizi çalıştıracağımız gerçeklemeyi oluşturalım.
$ nano ~/Homestead/Homestead.yaml
Alttakine benzer bir yapıyla karşılacaksınız.
ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox

folders:
    - map: ~/Code/example
      to: /home/vagrant/Code/example

sites:
    - map: example.app
      to: /home/vagrant/Code/example

databases:
    - homestead
Çok basit bir mantığı var, folders(klasörler) kısmında, map dosyalarınızı nereden sunduğunuzu belirtiyor, yani bu örnekte ~/Code/example içerisindeki her şey vagrant üzerinde /home/vagrant/Code/example'a linkleniyor,  siz ~/Code/example üzerinde bir değişiklik yaparsanız, /home/vagrant/Code/example üzerinde de aynı değişiklikleri görebiliyorsunuz. sites kısmını ise sunucu bloğu olarak düşünebilirsiniz, örneğin /home/vagrant/Code/example'da index.php var ise, birazdan yapacağımız değişiklik sonrasında tarayıcıda example.app yazdığınızda index.php'nin içeriğini görebileceksiniz. /home/vagrant/Code/example'ın bir Laravel projesi olduğunu düşünürsek, index.php'nin bulunduğu public'i linklemeniz gerekeceği için /home/vagrant/Code/example/public olarak değiştirmeniz lazım.

Burada biraz önce bahsettiğim yapmamız gereken değişiklik ise, example.apphosts dosyasında localhost veya homestead sanal ip'sine linklemek olacak. Bunun için de,
$ sudo nano /etc/hosts 
Karşınıza çıkan kısımda,
192.168.10.10 example.app
Satırını ekleyin, kaydetmek için de sırasıyla CTRL+X ve ardından Y'ye basıp, enter'a basın.

Tahmin edebileceğiniz üzere,alttaki gibi bir düzenleme de yapabilirsiniz.
folders:
    - map: ~/Code
      to: /home/vagrant/Code

sites:
    - map: example.app
      to: /home/vagrant/Code/example/public
    - map: deneme.app
      to: /home/vagrant/Code/deneme
Ve tabii ki deneme.app adında bir proje eklediğinizde, yine bunu /etc/hosts'a eklemeniz lazım,
192.168.10.10 example.app
192.168.10.10 deneme.app
Birazdan vagrant'ı başlatınca, tarayıcıda example.app yazdığınızda ~/Code/example üzerinden çalışan example Laravel projenizi, deneme yazdığınızda da ~/Code/deneme üzerinde çalışan, ~/Code/deneme dizininde index.php ya da index.html dosyası olan Laravel olmayan projenizi görebileceksiniz. An itibariyle vagrant'ı başlatmak kaldı.
$ vagrant up
Bunu yazdıktan sonra tarayıcıda biraz önce belirttiğimiz example.app veya deneme.app ya da nasıl isimlendirdiyseniz, projenizi çalıştırmayı deneyin, eksiksiz takip ettiyseniz bir problemle karşılaşmamanız lazım.

Bunun yanında, sunucuya ssh ile bağlanabilirsiniz.
$ vagrant ssh
Yalnız burada dikkat etmeniz gereken şey, tüm bu komutları, ~/Homestead klasörü içerisinde gerçekleştirdiğimiz. Ancak Homestead klasörüne herhangi bir yerden erişebilmek için alias kullanabilirsiniz, bunun için de,
$ nano ~/.bash_aliases
Dosyaya alttaki satırı ekleyin, CTRL X + Y + Enter ile kaydedin.
alias homestead='function __homestead() { (cd ~/Homestead && vagrant $*); unset -f __homestead; }; __homestead'
Son olarak da bunu tanıtmak için,
$ source ~/.bashrc
An itibariyle, herhangi bir konum üzerinden homestead klasörüne ulaşarak, vagrant komutlarını gerçekleyebilirsiniz. Örnek ssh komutu alttaki gibi.
$ homestead ssh
Bir diğer sık kullanacağınız komut da vagrantı sonlandırmak için, alttaki komutu yazabilirsiniz,
$ homestead halt
Son olarak da veritabanını daha kolay yönetebilmek için phpMyadmin kurabilirsiniz,
$ homestead ssh
$ curl -sS https://raw.githubusercontent.com/grrnikos/pma/master/pma.sh | sh
$ exit
Sonrasında da bilgisayarınızda, yine /etc/hosts dosyasını düzenlememiz lazım.
$ sudo nano /etc/hosts
Veritabanı 127.0.0.1 üzerinden çalıştığı için, alttaki satırı ekleyip, CTRL X + Y + Enter basıp kaydedin.
127.0.0.1 phpmyadmin.app
Devamında, phpMyadmin'e giriş yapmak için tarayıcıdan http://phpmyadmin.app:8000/ linkine girin, halihazırda mevcut kullanıcı adı ve şifre sırasıyla homestead ve secret.

Ekstra olarak yapabileceğimiz birkaç ayar daha var. Eğer Türkiye zaman dilimini kullanmak, ayrıca da strftime gibi fonksiyonlar ile Türkçe çıktı üretmek istiyorsanız, sırasıyla alttaki komutlarla sistemi düzenleyebilirsiniz.
$ sudo dpkg-reconfigure tzdata # Europe'u seçip Enter'a, ardından da Istanbul'u seçip tekrar Enter'a basın
$ sudo locale-gen tr_TR tr_TR.utf8
Son olarak ufak bir not, .yaml dosyanızda değişiklik yaptıktan sonra, ayarların geçerli olması için alttaki komutu çalıştırmayı unutmayın.
$ homestead reload --provision
Bundan sonra ne yapacağınız size kalmış, an itibariyle her şeyi yönetebileceğiniz, geliştirme ortamınızın hazır olmuş olmalı.