Merhabalar,Bu yazımda Sizlere geliştirmiş olduğunuz laravel uygulamasını, Heroku   platformunda nasıl yayınlayacağımızı anlatacağım.Heroku’ dan kısaca bahsetmek gerekirse; uygulamaları çok hızlı ve kolay şekilde deployment (yayınlamayı),monitoring(izlemeyi) ve de scaling(ölçeklendirme) yapmayı sağlayan cloud ( bulut ) tabanlı bir servistir. Biz geliştiriciler içinde denemeye değer bir platform olduğunu düşünüyorum.Şimdi burada yapacağımız işlemler için gereksinimlerimizi sıralayalım:

  1. Herhangi bir işletim sistemi için terminal kullanacağız
  2. Heroku sistemine kayıt olmamız gerek
  3. Kullandığımız işletim sistemine uygun olarak buradan Heroku’nun CLI ‘yını indirip kurmamız gerek.( işletim sisteminize global olarak kurmanız tavsiye edilir)
  4. Laravel uygulamamızın veritabanı için ben ücretsiz olan db4free veritabanı sunucusunu kullanacağım. Unutmadan şunu belirtmeliyim; bu veritabanı sunucu sitesi ücretsiz olduğundan test amaçlı olarak kullanılmalı. Gerçek verilerinizi saklamak adına kullanmamanızı tavsiye ederim. Yalnızca test amaçlı olarak rahatlıkla kullanabilirsiniz.Çünkü “belirsiz aralıklarla” sunucu üzerinde veri sıfırlaması yapılıyor.

1.Adım

  • Heroku ‘ ya vermiş olduğum linklerden; kaydınızı ve CLI kurulumunu tamamlamış olduğunuzu varsayıyorum.
  • Öncelikle ben örnek bir laravel projesi oluşturacağım ve işlemlerimi onun üzerinden göstereceğim.

composer create-project –prefer-dist laravel/laravel test-heroku-app

  • Komutunu vererek “test-heroku-app” projemizi oluşturduk,
  • proje dizinine gidip herokuya giriş komutunu verelim

cd test-heroku-appheroku login

  • Herhangi bir tuşa basarak web sayfasının otomatik olarak açılmasını sağlayalım. Daha sonra açılan web sayfasında login diyerek girişimizi yapalım.

Başarı bir giriş yapmışsak şöyle bir mesajla karşılaşacağız.Daha sonra bu sayfayı kapatabiliriz.

  • terminale geri dönersek ekranda giriş yaptığımızı yazan bir mesaj görmeliyiz eğer bu mesajı görüyorsak sorunsuz bir şekilde giriş yapmış bulunmaktayız.

  •  ctrl + shift + c yaparak tekrar terminalimizden devam edelim.

2.Adım

  • Sıra geldi git version kontrol sistemimizi kurmaya
  • Sırasıyla şu komutları vererek ilk commitimizi atalım

git initgit add .git commit -m “initial commit”3.Adım

  • Uygulamamızın hangi kök dizininde çalışmasını belirtmek için Heroku bize “Procfile” adında bir dosya oluşturup, bu dosyanın içine de kök dizini olarak bunu yazmamızı söyler:
  • web: vendor/bin/heroku-php-apache2 web/
  • Ancak bu dizinde biraz değişiklik yapmamız gerek. Bizim laravel projemizin başlangıç dizini public/ klasörüdür. Bu sebeple şöyle düzeltip Procfile dosyamıza eklememiz gerek:

echo “web: vendor/bin/heroku-php-apache2 public/” > Procfilegit add Procfilegit commit -m “add Heroku Procfile”4.Adım

  • Sıra geldi herokuya projemizi deploy edecek uygulamayı oluşturmaya.

Heroku create <istediğimiz bir domain>

  • ör: testmelihsahin yazarsak, projemiz yayınladığında domainimiz şöyle olur: herokuapp.com

  • Başarılı bir şekilde heroku uygulamamızı yükledik.
  • Heroku sitesinden hesabımıza girip dashboard sayfasına gidersek, oluşturduğumuz uygulamaları görebiliriz.

 5.Adım

  • Laravel projemize uygulama key’i (anahtarı) generate(üretip) edip bunu görüntüleyelim.Bu key Laravel tarafından kullanıcı oturumlarını ve diğer bilgileri şifrelemek için kullanılır. Bu değer de APP_KEY ortam değişkeninden okunur. Heroku uygulamamıza bu şifreyi ayarlamak çok kolaydır.

php artisan key:generate --showKomutunu verip ekrandaki şifreyi kopyalayalım.Daha sonra herokuya bu şifreyi set edelim(ekleyelim)heroku config:set APP_KEY=<şifre>6.Adım

  • Bu adımları başarılı bir şekilde yaptıysak artık deploy edebiliriz.

git push heroku master

  • Eğer bu mesajı görmüşsek başarı bir şekilde projemizi heroku deplo etmişizdir demek.
  • Domainimizden projeyi açmak için isterseniz elle  ör: testmelihsahin.herokuapp.com yazarak tarayıcıdan açabilir veyahut terminalde  heroku open komutunu çalıştırarak siteyi açabilirsiniz.
  • Siteyi açtığımızda hatalar alırsanız bu ve bunun gibi hataları, laravel tarafında debug mode kapalı olduğundan açıp daha rahat bir şekilde görebiliriz.Yapmamız gerekenler sırasıyla

  • Böylece debug mode nu açmış oluruz ve hatayı daha ayrıntılı görebiliriz
  • Hiçbir hatayla karşılaşmadıysak laravel projemizi ilgili domainimizde görmemiz gerek.

7.Adım

  • Bu adımda projemizin veritabanı kısmını halledeceğiz. Yazımın en başında belirttiğim gibi db4free sitesinden kayıt olup bir veritabanı oluşturmamız gerek. Bu adımları birlikte yapalım.
  • Unutmayın buradaki veritabanı bilgilerini kullanarak laravel projemizden mysql sunucusuna bağlanacağız.

  • Formu gönderdikten sonra onay maili gelecek ve onay linkini tıkladığınızda veritabanı başarıyla oluşturulacak.

  • Projemizi kod editöründe açıp, “database.php” dosyamızı bulalım. Bu dosyada oluşturduğumuz veritabanın bağlantı bilgilerini ekleyeceğiz.
  • Bu yazıdda ben veritabanı olarak mysql kullandığım için database.php dosyasında mysql bilgilerinin olduğu yere bilgileri tanımlayacağım.

– database.php

  • Daha sonra yaptığımız değişiklikleri commit edelim. Ardından da sunucuya güncel halini gönderelim.

git add .git commit -m “modifie database.php”git push heroku master

  • Herşey yolunda gitmişse başarılı bir deployment gerçekleşecektir

8.Adım

  • Bu adımda artisan auth komutuyla authentication tarafını oluşturup veritabanımıza kayıt eklemeye çalışacağız. Öncelikle auth komutunu verip panellerimizi ve altyapıyı hazırlayalım.

php artisan make:auth

  • Sonra commitleyip push ediyoruz tekrar

git add .git commit -m “add auth”git push heroku master

  • Auth komutundan sonra tablolarımızı veritabanına migrate etmemiz gerek.
  • Bu komutu sunucu tarafında yapmamız gerek.
  • Peki bu ve bunun gibi komutları sunucu tarafında  nasıl çalıştıracağız?
  • Bunu yapabilmek için yerleşik bash kullanmamız gerek.

heroku run bash komutunu çalıştırıyoruz.

  • Bu işlemi de tamamladığımıza göre artık bir test kaydı yapabiliriz.

  • Görüldüğü gibi veritabanımıza kaydettiğimiz kullanıcıyla giriş işlemimiz başarılı oldu.
  • Not: db4free de açtığımız veritabanını phpmyadmin ile açıp kaydettiğimiz verileri inceleyebiliriz.