Laravel Kurulumu: Ubuntu 22.04 Üzerinde Nginx İle LEMP Yığını Yapılandırması 🚀
Bu rehberde, Ubuntu 22.04 sunucusunda Nginx ve MySQL kullanarak Laravel uygulamanız için LEMP (Linux, Nginx, MySQL, PHP-FPM) yığını kurulumunu ve yapılandırmasını adım adım öğreneceksiniz. Sonunda, veritabanı ile bağlantı kurarak çalışan bir Laravel demo uygulaması elde edeceksiniz.
Bu Rehberde Ne Öğreneceksiniz?
Laravel'i Ubuntu 22.04 üzerinde nasıl kuracağınızı, PHP modüllerini nasıl yükleyeceğinizi, MySQL veritabanını nasıl oluşturacağınızı ve Nginx ile Laravel uygulamanızı nasıl sunacağınızı öğreneceksiniz. Bu yöntem, modern PHP uygulamalarını canlıya almak için ideal bir ortam sağlar.
Ön Koşullar ve Hazırlık
Başlamadan önce, Ubuntu 22.04 üzerinde aşağıdaki bileşenlerin kurulu olduğundan emin olun:
- Sudo yetkili bir kullanıcı
- LEMP yığını (Nginx, MySQL 8, PHP-FPM)
- Composer (Laravel bağımlılıkları için)
1. Gerekli PHP Modüllerini Kurma
Laravel, bazı PHP modüllerine ihtiyaç duyar. Bu modülleri kurarak Laravel'in çalışmasını sağlarız.
PHP Modüllerini Yükleme
Paket yöneticisini güncelleyin ve gerekli modülleri yükleyin:
sudo apt update
sudo apt install php-mbstring php-xml php-bcmath php-curl
php-mbstring: Karakter kodlama desteği
php-xml: XML işleme desteği
php-bcmath: Hassas matematik hesaplamaları
php-curl: HTTP istekleri için cURL desteği
2. Laravel İçin Veritabanı ve Kullanıcı Oluşturma
Laravel uygulamanızın kullanacağı veritabanını MySQL üzerinde oluşturalım.
MySQL Yapılandırması
MySQL'e root olarak giriş yapın:
sudo mysql
Yeni bir veritabanı oluşturun:
CREATE DATABASE rabisu_liste;
Yeni bir kullanıcı oluşturun ve yetki verin:
CREATE USER 'rabisu_user'@'%' IDENTIFIED WITH mysql_native_password BY 'GucluSifre123!';
GRANT ALL ON rabisu_liste.* TO 'rabisu_user'@'%';
FLUSH PRIVILEGES;
Örnek veriler eklemek için yerler tablosu oluşturun:
CREATE TABLE rabisu_liste.yerler (
id INT AUTO_INCREMENT,
isim VARCHAR(255),
ziyaret_edildi BOOLEAN,
PRIMARY KEY(id)
);
INSERT INTO rabisu_liste.yerler (isim, ziyaret_edildi)
VALUES ("Rize", false),
("Marmaris", true),
("Nevsehir", false),
("Kars", true);
Veritabanı ve kullanıcı hazır, şimdi Laravel için yapılandırmaya geçebiliriz.
3. Yeni Laravel Uygulaması Oluşturma
Laravel projesini Composer ile oluşturacağız.
Laravel Projesini Oluşturma
Ana dizine gidin ve Laravel uygulamasını oluşturun:
cd ~
composer create-project --prefer-dist laravel/laravel rabisu_app
Laravel'in doğru kurulduğunu kontrol etmek için:
cd rabisu_app
php artisan
Bu komut, Laravel komut satırı aracını çalıştıracak ve uygulamanın doğru kurulduğuna dair bilgi verecektir.
4. Laravel Uygulamasını Yapılandırma
Laravel’in .env dosyasını veritabanı bilgileri ile güncelleyelim.
.env Dosyasını Düzenleme
nano editörü ile .env dosyasını açın:
nano .env
Veritabanı bilgilerini aşağıdaki şekilde güncelleyin:
APP_NAME=RabisuListesi
APP_ENV=development
APP_KEY=APPLICATION_UNIQUE_KEY_DONT_COPY
APP_DEBUG=true
APP_URL=http://tr1-node01.rabisu.cloud
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=rabisu_liste
DB_USERNAME=rabisu_user
DB_PASSWORD=GucluSifre123!
Değişiklikleri kaydedip dosyayı kapatın.
5. Nginx Sanal Konağını Ayarlama
Uygulamayı web üzerinden çalıştırabilmek için Nginx yapılandırmasını yapmalıyız.
Dosyaları Taşıma ve İzin Ayarları
Laravel uygulama dosyasını /var/www dizinine taşıyın:
sudo mv ~/rabisu_app /var/www/rabisu_app
Laravel’in storage ve bootstrap/cache dizinlerine yazma izni verin:
sudo chown -R www-data:www-data /var/www/rabisu_app/storage
sudo chown -R www-data:www-data /var/www/rabisu_app/bootstrap/cache
Nginx Yapılandırması
Yeni bir sanal konak dosyası oluşturun:
sudo nano /etc/nginx/sites-available/rabisu_app
Aşağıdaki Nginx yapılandırmasını ekleyin:
server {
listen 80;
server_name tr1-node01.rabisu.cloud;
root /var/www/rabisu_app/public;
index index.php index.htm index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
}
Yapılandırmayı Etkinleştirme
Sanal konak dosyasına sembolik bağlantı oluşturun:
sudo ln -s /etc/nginx/sites-available/rabisu_app /etc/nginx/sites-enabled/
Yapılandırma hatalarını kontrol edin:
sudo nginx -t
Nginx'i yeniden yükleyin:
sudo systemctl reload nginx
6. Ana Sayfayı Veritabanından Veri Çekecek Şekilde Özelleştirme
Laravel rota dosyasını (routes/web.php) ve görünüm dosyasını (travellist.blade.php) özelleştirerek veritabanından veri çekeceğiz.
Rota Dosyasını Güncelleme
Ana rota dosyasını şu şekilde düzenleyin:
nano /var/www/rabisu_app/routes/web.php
Aşağıdaki kodu ekleyin:
<?php
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Route;
Route::get('/', function () {
$ziyaret_edildi = DB::select('select * from yerler where ziyaret_edildi = ?', [1]);
$gidilecek = DB::select('select * from yerler where ziyaret_edildi = ?', [0]);
return view('rabisu_liste', ['ziyaret_edildi' => $ziyaret_edildi, 'gidilecek' => $gidilecek ] );
});
Görünüm Dosyasını Oluşturma
Yeni bir Blade şablonu oluşturun:
nano /var/www/rabisu_app/resources/views/rabisu_liste.blade.php
Aşağıdaki HTML ve Blade kodunu ekleyin:
<html>
<head>
<title>Rabisu Seyahat Listesi</title>
</head>
<body>
<h1>Gezilecek Yerler Listem</h1>
<h2>Ziyaret Etmek İstediklerim</h2>
<ul>
@foreach ($gidilecek as $yeni_yer)
<li>{{ $yeni_yer->isim }}</li>
@endforeach
</ul>
<h2>Daha Önce Gittiğim Yerler</h2>
<ul>
@foreach ($ziyaret_edildi as $yer)
<li>{{ $yer->isim }}</li>
@endforeach
</ul>
</body>
</html>
Sıkça Sorulan Sorular (SSS)
- Neden Nginx kullanmalıyım?
Nginx, yüksek performanslı ve hafif bir web sunucusudur. Laravel gibi modern PHP uygulamalarını hızlı bir şekilde çalıştırır.
- .env dosyasında hangi ayarları değiştirmeliyim?
Veritabanı kullanıcı adı, şifre ve veritabanı adı gibi bilgileri .env dosyasındaki DB_ alanlarında güncellemeniz gerekmektedir.
- Nginx yapılandırmasında neden public dizini kullanılıyor?
Laravel uygulamanızın kök dizini genellikle gizli dosyalar içerir. Web sunucusunun sadece public dizini üzerinden işlem yapmasını sağlamak güvenlik açısından önemlidir.
Sonuç
Laravel uygulamanızı LEMP yığını üzerinde kurarak, güçlü ve taşınabilir bir geliştirme ortamı elde ettiniz. Artık uygulamanızın veritabanı ile sorunsuz çalıştığını ve Nginx ile hızlıca sunulabilir olduğunu görebilirsiniz.