Laravel Kurulumu – Ubuntu 22.04 | MySql | Apache | PHP
  1. Anasayfa
  2. DevOps

Laravel Kurulumu – Ubuntu 22.04 | MySql | Apache | PHP

0

Bu yazımızda Ubuntu 22.04 LTS sürümü üzerinde Laravel kütüphanesinin kurulumu ve örnek sitenin yayınlanması süreçlerine değineceğiz.

Laravel kurulumuna ihtiyaç duyuyorsanız Laravel’in ne olduğunu biliyor olmalısınız ancak adet yerini bulsun kısa bir tanım ile başlayalım.

Laravel: PHP üzerinde çalışan, tamamen açık kaynak kodlu bir web kütüphanesidir. Ön plana çıkan özellikleri arasında güvenlik ve yazılımcıların işini kolaylaştırması gelmektedir.

Laravel kendi içerisinde gelen özellikleri ile web uygulamaları geliştirme yaşam döngüsünde kolay, esnek yapısı ve hızı ile geliştirici ve sistemcilerin kullanımına sunulmuş olan bir PHP framework’üdür.

Laravel içerisinde oturum yönetimi, ön bellek yönetimi ve kullanıcı yetki mekanizmaları ile ilgili işlemleri kolaylıkla yapabileceğimiz yapılar bulunur. Bunlar gibi daha pek çok mekanizmanın belirli bir mimariye göre kurgulandığını tahmin ediyorsunuzdur. Burada da Laravel içerisindeki mimari için model-view-controller (MVC) bahsedilebilir. Yine açık kaynak kodlu bir kütüphane olan 90’lı yıllarda Java teknolojilerinde 2000’li yıllarda Microsoft .Net platformunda ve genel olarak ise design patterns konularında sıkça adını duyduğumuz MVC tasarım modelinde; Model: uygulamanın çalıştığı verilerin tasarımını barındırır. Buradaki tasarım görsel bir arayüz olmayıp veri tabanı vb. tasarımını ifade eder. Controller: verilerin bulunduğu model katmanı ile kullanıcının arayüzler üzerinden yaptığı işlemleri taşıyan bilgiyi alan, ileten, kullanıcıdan gelen tüm işlemleri yürüten katmandır. View ise tahmin edeceğimiz üzere artık kullanıcının görebildiği grafiksel arayüzler, template, tablo, buton vb. tüm HTML nesnelerini içeren katmandır.

Kuruluma geçmeden önce bilinmesinde fayda gördüğüm bir diğer şey ise Composer Paket Yöneticisidir. Kurulum esnasında ubuntu sunucumuza yükleyeceğimiz bileşenlerden bir tanesi olan Composer; PHP ile yapılan işlemlerde kullanılan paketlerin yönetimini sağlayacaktır. Kısaca laravel projemizde kullanma ihtimalimiz olan tüm paketlerin yönetiminin merkezileştirilmesi ve haliyle kolaylaştırılması için bir çözümdür diyebiliriz.

Laravel’in yapısını, nasıl çalıştığı, tarihçesini veya diğer kütüphanelerden farklı yönlerini belki farklı bir makalede inceleyebiliriz, ancak bu makalemizde teorik bilgi ile daha fazla uğraşmadan uygulamaya geçelim.

Makale Künyesi:

  • Kullanılan Sunucu Versiyonu : Ubuntu 22.04 LTS
  • Web Server : Apache
  • PHP Versiyon : Stabil son versiyon
  • Veri Tabanı : Mysql Community
  • Laravel Paket Yöneticisi : Composer
  • Laravelin Composer ile yüklenmesi

Apache Kurulumu

Öncelikle Laravel kütüphanemizi kullanabilmek için sunucumuzda web server ayağa kaldırmamız gerekiyor. Ben Apache tercih ediyorum ve sunucumu güncelledikten sonra aşağıdaki komut ile apache kurulumunu gerçekleştiriyorum.

root@laravel-server:# apt-get update && upgrade -y
root@laravel-server:# sudo apt install apache2

Kurulum tamamlandıktan sonra apache kurulumumun başarılı bir şekilde gerçekleştirildiğini görebilmek amacıyla durumunu aşağıdaki komut ile kontrol ediyorum.

root@laravel-server:# systemctl status apache2

RESİM-1

Apache kurulumunun başarıyla tamamlanmasının ardından, eğer sunucuda firewall aktif olarak kullanılacak ise uwf kuralı olarak apache’yi eklememiz gerekecektir. Aşağıdaki şekilde apache için gerekli izinleri ufw ekleriz.

root@laravel-server:# ufw allow "Apache Full"

Eğer ufw inactive ise yukarıdaki komutu atlayabilirsiniz.

RESİM-2

Apache kurulumunda sorun çıkmadıysa sunucu üzerinde veya aynı ağda bulunan bir tarayıcıdan sunucu ip adresine gidildiğinde Apache Default Page’in gelmesi gerekir. Ben kurulumu masa üstü bilgisayarımda sanal makine üzerinden denediğim için tarayıcı üzerinden erişmekle uğraşmayayıp Ubuntu Default Page’in gelip gelmediğini Curl ile terminalden test edeceğim. HTML kodlarının geldiğini gördüğüm için Apache kurulumunun başarılı olduğunu görüyor devam ediyorum.

root@☺laravel-server:# curl 10.0.2.15

PHP Kurulumu

Apache kurulumunun ardından PHP ve gerekli olan bileşenlerinin kurulumunu aşağıdaki komut ile gerçekleştireceğiz.

root@laravel-server:# sudo apt install php libapache2-mod-php php-mbstring php-xmlrpc php-soap php-gd
php-xml php-cli php-zip php-bcmath php-tokenizer php-json php-pear

Kurulumun sorunsuz olup olmadığını anlayabilmek için terminalde php -v komutu ile versiyonunu kontrol edebiliriz. Resimdeki gibi php versiyonunu görüyorsanız herhangi bir sorun yok demektir. Kurulumun sorunsuz olup olmadığını teyit ilgili yapılabilecek elbette pek çok yöntem vardır ancak /etc/apache2/modules-available içerisindeki dosyalardan php ile ilgili dosyaların oluşup oluşmadığını da incelemek kontrol açısından bazı kritik senaryolarda tercihleriniz arasında olabilir.

root@laravel-server:# php -v

RESİM-3

Hem PHP’nin sunucumuzda sorunsuz çalıştığından emin olabilmek hem de PHP ile gelen eklentilerin sorunsuz yüklendiğinden emin olmak için yapabileceğimiz yaygın bir diğer yöntem ise Apache varsayılan dizinine (/var/www/html/) phpinfo dosyası oluşturup tarayıcıdan bu dosyayı çağırıp kontrol etmektir. Öncelikle ilgili dizine gidelim. Ardından phpinfo.php dosyasını oluşturalım ve içerisinde info bilgilerini görebileceğimiz php kodunu girelim.

root@laravel-server:# cd /var/www/html/
root@laravel-server:# touch phpinfo.php
root@laravel-server:# sudo vi phpinfo.php

RESİM-4

vi ile açtığımız editörte i harfi ile editleme moduna geçeriz içerisine yukarıdaki phpinfo kodunu yazdıktan sonra : + wq ile kapatalım ve apache sunucumuzu yeniden başlatalım.

root@laravel-server:# systemctl restart apache2

Tarayıcıdan sunucu ip adresi/phpinfo.php adresine gittiğimizde PHP ve bileşenleri hakkında bilgilerin olduğu info sayfasını görüntüleyebiliriz.

NOT: Siber güvenlik zafiyet analizinin bilgi toplama (Gathering) fazında risk kabul edildiği için phpinfo.php dosyasını işi bittikten sonra sunucudan siliniz.

MYSQL Kurulumu

Sunucumuza Apache ve ardından PHP kurulumunu gerçekleştirdik. Klasik LAMP kurulumundan alışkın olduğunuz üzere sırada MYSQL Server var. Aşağıdaki komut ile mysql kurulumunu gerçekleştirebiliriz.

root@laravel-server:# apt-get install mysql-server

Ubuntu 20.04, 22.04 gibi yeni versiyonlarda mysql kurulumunda ayrı bir kullanıcı adı ve şifre oluşturmamızı istemez. Yükleme esnasında bu bilgiyi bizlere sormaz. Sunucu root kullanıcısı ve şifresi ile mysql’e de erişim sağlayabiliyor olacağız. Ancak kurulum sonrası mysql için ayrı bir kullanıcı da oluşturacağız.

Mysql kurulumunu tamamlandıktan sonra başarıyla yüklenip yüklenmediğini görebilmek için status çekelim.

root@laravel-server:# systemctl status mysql

RESİM-5

Şimdi mysql shell’ine düşelim ve yeni bir kullanıcı açalım bu kullanıcıyı laravel içerisindeki env dosyasında kullanacağız bu yüzden root kullanıcı ile devam etmeyelim. Kullanıcıyı localhost erişimlerinde açabilmek için aşağıdaki komutu kullanalım. Mysql giriş esnasında root bilgilerimiz ile devam edebiliriz.

root@laravel-server:# mysql -u root -p
mysql> CREATE USER 'dbuser'@'localhost' IDENTIFIED BY 'PAROLA';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'dbuser'@'localhost' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;

MySql Shell’i üzerinde işlem yaparken her bir komutun sonuna noktalı virgül (;) koymamız gerektiğini unutmayalım.

Yukarı komut localhost erişimi içinde aynı kullanıcının uzaktan da mysql’e erişim yapabileceğini düşünerek şimdi bir de uzak kullanıcısı oluşturalım.

mysql> CREATE USER 'dbuser'@'%' IDENTIFIED BY 'PAROLA';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'dbuser'@'%' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;

Bu aşamadan sonra mysql üzerindeki kullanıcımızı hem içeriden hem dışarıdan erişilebilir hale getirdik. Bu kullanıcılar mysql veri tabanı içerisindeki user tablosuna yazılmış durumda şimdi kullanıcılarımızı görmek için aşağıdaki komutu uygulayalım.

mysql> show databases;

RESİM-6

mysql veri tabanını kullanarak devam etmek için:

mysql> use mysql;

mysql veri tabanı içerisindeki tabloları görmek için:

mysql> show tables;

Kullanıcılarımızı çekmek için ise klasik select sorgusu:

mysql> select user,host from user;

RESİM-7

MySql Shell ekranından Exit; ile çıkabiliriz. MySql ile ilgili temel alıştırmaları da yaptıktan sonra artık Composer kurulumuna geçebiliriz.

Composer Kurulumu

root@laravel-server:# curl -sS https://getcomposer.org/installer | php

Yukarıdaki komut sunucumuza composer bileşen yöneticisini kuracaktır. Aşağıdaki komut ise ubuntu içerisindeki herhangi bir yerden composer çalıştırabilmek için gereklidir.

root@laravel-server:# mv composer.phar /usr/local/bin/composer

Sunucu içerisindeki her yerden erişimi mümkün kılan gerekli izinleri verelim.

root@laravel-server:# chmod +x /usr/local/bin/composer

Laravel Kurulumu

Artık Laravel kurulumunu tamamlayabiliriz.

root@laravel-server:# composer create-project --prefer-dist laravel/laravel BirinciLaravelProjem

Yukarıdaki komut ile BirinciLaravelProjem isimli bir laravel proje ortamı oluşturmuş oluyoruz. Bu işlem biraz sürebilir.

Şimdi Laravel Default ekranını görmek için aşağıdaki komutla IP ve Portumuzu belirtebiliriz ancak bu işlem bize şu an için bir şey katmayacaktır. Laravel default ekranı “BirinciLaravelProjem” i çağıracaktır. Oysa biz kurulumu tamamlayıp gerçek bir uygulamayı laravel üzerinde yayınlamayı amaçlıyoruz. Bu yüzden bu kısımdan sonrası tamamen yayınlama, apache varsayılan konfig dosyasını devre dışı bırakma, laravel konfig dosyasını aktif etme gibi işlemler içermektedir.

Şimdi “BirinciLaravelProjem” isimli dizine geçelim ve ip port ataması yaparak default sayfayı bir görelim.

Not: pwd ile hangi dizinde olduğumuzu görebiliriz.

root@laravel-server:# cd BirinciLaravelProjem
root@laravel-server:# php artisan serve --host=10.0.2.15 --port=8000

RESİM-8

Varsayılan Laravel (boş) sayfasını da tarayıcımızdan görüntüledikten sonra artık gerçek bir projeyi Laravel ile yayınlama aşamasına geçebiliriz. Bunun için öncelikle yukarıda oluşturduğumuz proje dosyasını apache web sunucusunun çalıştığı dizine alalım.

root@laravel-server:# mv BirinciLaravelProjem /var/www/html/

Ardından bu klasörde sorunsuz çalışabilmesi için gerekli izinleri verelim.

root@laravel-server:# chgrp -R www-data /var/www/html/BirinciLaravelProjem/
root@laravel-server:# chmod -R 775 /var/www/html/BirinciLaravelProjem/storage

Nasıl ki klasik Apache veya Nginx yönetirken yeni bir site dahil olduğunda veya ilk kurulumda virtual host oluşturmak gerekiyorsa laravel için de bir tane sanal host konfig dosyası oluşturmamız gerekmektedir.

Oluşturacağımız konfig dosyasını vi editörü ile açıp aşağıdaki virtual host yapılandırmasını girip kaydedip çıkalım. 443 SSL için de aynısını altına ekleyebilirsiniz. Burası tamamen Apache ve Nginx’te olduğu gibidir. SSL dosya yolu da unutulmamalıdır.

root@laravel-server:# cd /etc/apache2/sites-available
root@laravel-server:# vi laravel_virtual.conf
<VirtualHost *:80>
   ServerName alanadi.com
   ServerAdmin web@alanadi.com
   DocumentRoot /var/www/html/BirinciLaravelProjem/public

   <Directory /var/www/html/BirinciLaravelProjem>
       AllowOverride All
   </Directory>
   ErrorLog ${APACHE_LOG_DIR}/error.log
   CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Artık Laravelin Apache üzerinden cevap verebilmesini sağlayacak bir konfig dosyamız var ancak Apache halen defaultta gelen (000-default.conf) virtual dosyayı okuduğundan bunu daha önce bahsettiğim gibi devre dışı bırakmamız ve yukarıdaki konfig dosyasını okuması gerektiğini söylememiz gerekiyor.

root@laravel-server:# a2dissite 000-default.conf

Yeni dosyayı aktif edelim.

root@laravel-server:# a2ensite laravel_virtual

Şimdi tüm bu değişiklikleri devreye alabilmek amacıyla Apache yeniden yazma modülünü yeniden başlatalım ve ardından apache2’yi yeniden başlatalım.

root@laravel-server:# a2enmod rewrite
root@laravel-server:# systemctl restart apache2

Evett buraya kadar hata almadan ve mantığını zihninizde oturtarak geldiyseniz ilk laravel projenizi yayınladınız demektir. Artık Apache virtual host dosyası olarak laravel’i işaret eden dosyayı okuyacağı için virtual host içerisindeki DocumentRoot ve Directory alanında hangi laravel projesi varsa o çalışacak hale gelmiştir. Yani önceki kısımlarda Default Laravel ekranını görmek için 8000 portuyla erişim vermiştik ona gerek kalmıyor tamamen klasik apache’de veya nginx’te site yayınlamak gibi bir hal alıyor.

BirinciLaravelProjem içerisindeki index.php dosyası DocumentRoot olarak VirtualHost içerisini ve VirtualHost içerisindeki konfig de Directory olarak LaravelProjesini gördüğü sürece sorunsuz çalışacaktır. Veri tabanı işlemleri ve mail işlemleri vb. ek işlemlerin sorunsuz yürümesi için ise BirinciLaravelProjem içerisindeki env dosyasının kendinize göre düzenlenmesi gerekmektedir. Bu makalede veri tabanı oluşturma ve env dosyasını düzenleme aşamasına değinilmemiştir.

Bu konuyla ilgili sorularınızı  alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar

www.mshowto.org

TAGs: laravel, php, mysql, ubuntu, ubuntu 22, php 8, mysql-server, mvc, composer,Laravel Kurulumu

Bu İçeriğe Tepkin Ne Oldu?
  • 3
    harika_
    Harika!!
  • 0
    be_enmedim
    Beğenmedim
  • 0
    _ok_iyi
    Çok iyi
  • 0
    sevdim_
    Sevdim!
  • 0
    bilemedim_
    Bilemedim!
  • 0
    olmad_
    Olmadı!
  • 0
    k_zd_m_
    Kızdım!

Konya Teknik Üniversitesi Bilgisayar Mühendisliği Doktora programında tez dönemi öğrenciliğim devam etmektedir.İş hayatıma Vodafone'da Test Mühendisi olarak başladıktan sonra şuan bir üniversitede Sistem Uzmanı ve Siber Güvenlik Ofis Yöneticisi pozisyonunda çalışmaktayım.Başlıca uzmanlık alanlarım arasında Sistem yöneticiliği ve Siber Güvenlik gelmektedir.Asp.net ile Proje Geliştirme (2015), Bilgisayar Mühendisliğine Giriş (2020), Güvenlik Tasarım Desenleri (2022) kitaplarının yazarıyım.

Yazarın Profili

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir