Ubuntu'da Laravel Homestead Kurulumu

Laravel'i Vagrant üzerinden çalıştırmak birçok kolaylık sağlamakta olup, Ubuntu'da Laravel Homestead kurulumu ise gayet basit bir işlemdir. 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. 

Kuruluma başlamak için, VirtualBox, Vagrant ve git'i bizim için yükleyecek, sonrasınd da homestead vagrant box'ını bizim için yükleyecek alttaki komutları çalıştırmanız lazım. 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.

$ sudo apt install virtualbox
$ sudo apt install vagrant
$ sudo apt 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

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 "[email protected]"

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.test
      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.test 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.test'i hosts 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.test

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.test
      to: /home/vagrant/Code/example/public
    - map: deneme.test
      to: /home/vagrant/Code/deneme

Ve tabii ki deneme.test adında bir proje eklediğinizde, yine bunu /etc/hosts'a eklemeniz lazım,

192.168.10.10 example.test
192.168.10.10 deneme.test

Birazdan vagrant'ı başlatınca, tarayıcıda example.test 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.test veya deneme.test 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 $* ) }'

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.test

Devamında, phpMyadmin'e giriş yapmak için tarayıcıdan http://phpmyadmin.test: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ı.