Skip to main content

Ubuntu Sunucuda Laravel (LEMP) Kurulumu 🚀


💡 Bu Rehberde Ne Öğreneceksiniz

Ubuntu sunucunuzda Laravel 11 framework’ünü LEMP (Linux, Nginx, MySQL, PHP) yığınıyla kurmayı ve üretim ortamına hazır hale getirmeyi öğreneceksiniz. Veritabanı yapılandırmasından SSL sertifikasına kadar tüm adımlar Rabisu Bulut platformu üzerinde birebir uygulanabilir.


🧠 Teknik Özet

Bu kurulumda:

  • PHP 8.2+ ve gerekli eklentiler kurulacak,
  • Güvenli MySQL veritabanı oluşturulacak,
  • Laravel Composer ile kurulacak,
  • Nginx yapılandırılacak ve SSL eklenecek,
  • Performans optimizasyonları yapılacak.

⚙️ 1. PHP ve Gerekli Uzantıları Yükleme

Laravel 11, PHP 8.2 veya üzeri sürüm gerektirir.

sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php8.2 php8.2-fpm php8.2-mysql php8.2-mbstring php8.2-xml php8.2-bcmath php8.2-curl php8.2-zip php8.2-gd

Bu komut PHP 8.2 ve Laravel için gerekli tüm uzantıları kurar.

Doğrulama:

php -m | grep -E "(mbstring|xml|bcmath|curl|zip|gd)"

🧩 2. Güvenli Veritabanı Oluşturma

sudo mysql

MySQL’de yeni veritabanı oluşturun:

CREATE DATABASE seyahat_listesi CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'rabisu_user'@'localhost' IDENTIFIED BY 'GucluSifre123!';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON seyahat_listesi.* TO 'rabisu_user'@'localhost';
FLUSH PRIVILEGES;
exit;

Güvenlik Notu: Kullanıcı yalnızca localhost’tan erişebilir.

Bağlantıyı test edin:

mysql -u rabisu_user -p

🧱 3. Laravel Uygulamasını Kurma

composer create-project laravel/laravel seyahat-listesi
cd seyahat-listesi
php artisan --version

Laravel 11.x görüyorsanız kurulum tamamdır.


⚙️ 4. Laravel Ortamını Yapılandırma

nano .env

Aşağıdaki değerleri düzenleyin:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=seyahat_listesi
DB_USERNAME=rabisu_user
DB_PASSWORD=GucluSifre123!

Uygulama anahtarını oluşturun:

php artisan key:generate

Laravel şifreleme anahtarını üretir.

Bağlantı testi:

php artisan tinker --execute="DB::connection()->getPdo();"

🌐 5. Nginx Yapılandırması

sudo mv ~/seyahat-listesi /var/www/seyahat-listesi
sudo chown -R www-data:www-data /var/www/seyahat-listesi
sudo chmod -R 775 /var/www/seyahat-listesi/storage /var/www/seyahat-listesi/bootstrap/cache

Nginx yapılandırma dosyası oluşturun:

sudo nano /etc/nginx/sites-available/seyahat-listesi

İçerik:

server {
listen 80;
server_name senin_alan_adin.cloud;
root /var/www/seyahat-listesi/public;
index index.php index.html;

add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
gzip on;

location / {
try_files $uri $uri/ /index.php?$query_string;
}

location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}

location ~ /\. {
deny all;
}
}

Etkinleştir ve test et:

sudo ln -s /etc/nginx/sites-available/seyahat-listesi /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

Tarayıcıda http://senin_alan_adin.cloud açtığında Laravel hoş geldiniz sayfası görünmelidir.


🔒 6. SSL (Let’s Encrypt) Kurulumu

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d senin_alan_adin.cloud -d www.senin_alan_adin.cloud

Otomatik yenilemeyi test edin:

sudo certbot renew --dry-run

⚡ 7. Üretim Optimizasyonu

Laravel önbelleğini etkinleştirin:

php artisan config:cache
php artisan route:cache
php artisan view:cache

Nginx performans ayarları:

client_max_body_size 20M;
keepalive_timeout 65s;
fastcgi_read_timeout 60s;

PHP-FPM ayarları (/etc/php/8.2/fpm/pool.d/www.conf):

pm.max_children = 30
pm.start_servers = 8
pm.min_spare_servers = 5
pm.max_spare_servers = 15
pm.max_requests = 1000

Yeniden başlat:

sudo systemctl restart php8.2-fpm
sudo systemctl reload nginx

❓ Sıkça Sorulan Sorular (SSS)

1. 502 Bad Gateway hatası alıyorum, neden?

PHP-FPM çalışmıyor olabilir. Kontrol edin:

sudo systemctl status php8.2-fpm

2. .env dosyası neden Git’e yüklenmemeli?

Çünkü API anahtarları, şifreler ve gizli bilgiler içerir.

3. fastcgi_pass yolum hatalıysa ne olur?

Yanlışsa Nginx PHP’yi çalıştıramaz. ls /var/run/php/ ile doğru soketi kontrol edin.

4. storage klasörüne yazamıyorum, neden?

İzinleri düzeltin:

sudo chmod -R 775 /var/www/seyahat-listesi/storage
sudo chown -R www-data:www-data /var/www/seyahat-listesi/storage

5. SSL sertifikam otomatik yenileniyor mu?

Evet, Certbot 90 günde bir otomatik yeniler.


🏁 Sonuç

Artık Ubuntu sunucunda LEMP yığını üzerinde Laravel 11 uygulamasını güvenli, performanslı ve SSL destekli şekilde çalıştırabiliyorsun. Tüm bu işlemleri Rabisu Bulut platformunda saniyeler içinde deneyebilir, üretim ortamına kolayca geçebilirsin. 🎯 Modern, optimize ve güvenli bir Laravel altyapısına hoş geldin!