Loading...

Öğren / Deploy

Laravel Uygulamasını cdn.com.tr'de Deploy Etme

Laravel uygulamanı sunucu kiralayıp yamalamadan üretime al. İki yol: tümüyle yönetilen bir PHP runtime'ı ya da Git'ten deploy edilen kendi container'ın — ikisi de yönetilen veritabanı, otomatik HTTPS ve WAF ile CDN edge arkasında.

9 dk okuma Orta Güncellendi

Laravel Uygulamasını cdn.com.tr'de Deploy Etme

İki deploy yolu

Bir Laravel uygulaması, bir Git deposu ve bir cdn.com.tr hesabı gerekir. İki yol var, istediğini seç. Yönetilen PHP platformu Laravel uygulamanı modern bir PHP 8 runtime'ında yönetilen veritabanı, Redis, otomatik SSL ve WAF ile çalıştırır — Dockerfile yazmadan. Container yolu tam kontrol verir: bir Dockerfile sağlarsın, platform onu derleyip yönetilen bir container app olarak çalıştırır. İkisi de CDN edge arkasındadır. Bu rehber container yolunu detaylı anlatır ve daha basit olduğu yerde yönetilen platforma yönlendirir.

Laravel Uygulamasını cdn.com.tr'de Deploy Etme — İki deploy yolu
cdn.com.tr üzerinde yönetilen platformlar ve container app’ler.

Yapılandırma ve sırlar

.env dosyanı imaja gömme veya sırları Git'e commit'leme. Bunun yerine Laravel yapılandırmanı platformda ortam değişkeni (ve secret) olarak ayarla ki aynı imaj üretimde güvenle çalışsın. En azından uygulama anahtarını, ortamı ve yönetilen veritabanı ile Redis bağlantılarını ayarlarsın.

Platformda ayarlanacak ortam değerleri

APP_ENV=production
APP_KEY=base64:...        # php artisan key:generate --show
APP_DEBUG=false
APP_URL=https://app.example.com

DB_CONNECTION=mysql
DB_HOST=<managed-db-host>
DB_DATABASE=<db>
DB_USERNAME=<user>
DB_PASSWORD=<secret>

CACHE_STORE=redis
SESSION_DRIVER=redis
REDIS_HOST=<managed-redis-host>

Bir Dockerfile ekle

Deponun köküne bir Dockerfile ekle. Bu örnek Composer bağımlılıklarını kurar ve uygulamayı 8000 portunda sunar. Laravel'in yerleşik sunucusu örneği basit tutar; yüksek trafik için son satırı Laravel Octane (FrankenPHP veya Swoole) ile değiştir ya da yönetilen PHP platformunu kullan.

Dockerfile

FROM php:8.2-cli

# Laravel'in sik kullandigi PHP eklentileri
RUN apt-get update && apt-get install -y libzip-dev \
 && docker-php-ext-install pdo_mysql zip opcache

# Composer
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer

WORKDIR /app
COPY . .
RUN composer install --no-dev --optimize-autoloader --no-interaction

EXPOSE 8000
CMD ["php", "artisan", "serve", "--host=0.0.0.0", "--port=8000"]

Git ile deploy

cdn.com.tr panelinde bir container app oluştur ve Git deponu bağla. Platform Dockerfile'ını okur, imajı derler ve container'ı çalıştırır. Ondan sonra deploy sadece branch'ine push etmektir — her push taze bir imaj derler ve sıfır kesintiyle yayına alır.

Bir değişikliği yayına al

git add .
git commit -m "Fatura sayfasini ekle"
git push origin main
# cdn.com.tr imaji derler ve otomatik yayina alir

Yönetilen veritabanı, Redis ve migration'lar

Yönetilen bir veritabanı ve Redis'i birer cdnctl komutuyla ekle — bağlantıyı uygulamana ortam değişkeni olarak bağlarlar, yani 2. adımdaki .env değerleri senin için ayarlanır. Redis Laravel'e hızlı bir cache ve session deposu verir; yönetilen veritabanı yedeklenir ve uygulamadan erişilebilir. Sonra şemanın senkron kalması için migration'larını deploy'un parçası olarak buna karşı çalıştır.

cdnctl — veritabanı ve Redis ekle, sonra migrate
cdnctl accounts use <account_uuid>

cdnctl container addons enable-database --app <app_uuid> --url-scheme mysql
cdnctl container addons enable-redis    --app <app_uuid> --env-prefix REDIS

# migration'lari yonetilen veritabanina karsi calistir
php artisan migrate --force

Alan adı, HTTPS ve edge

Alan adını uygulamaya yönlendir; cdn.com.tr SSL'i otomatik alır ve yeniler. Laravel uygulaman artık CDN edge arkasında çalışır: statik varlıklar önbelleklenip ziyaretçilere yakın sunulur, WAF kötü niyetli trafiği filtreler ve ani trafik edge'de karşılanır. Hiç Dockerfile yönetmek istemiyorsan yönetilen PHP platformu aynı sonucu verir — PHP 8 runtime, yönetilen DB ve Redis, otomatik HTTPS ve WAF — imaj derlemeden.

İyi uyan senaryolar

SaaS & web uygulamaları

Laravel'i yönetilen veritabanı ve Redis, otomatik HTTPS ve WAF ile, doğrudan Git'ten deploy ederek çalıştır.

Eski PHP modernizasyonu

Eski bir PHP uygulamasını yeniden mimarlamadan, yönetilen platformda PHP 8'e taşı; CDN ve WAF arkasına al.

API'ler & backend'ler

Laravel API route'larını healthcheck, secret ve önündeki edge yönlendirmesiyle yönetilen bir container olarak sun.

Laravel deploy — sık sorulanlar

Docker gerekli mi, yoksa yönetilen platformu mu kullanayım?

İkisi de olur. Yönetilen PHP platformu Laravel'i Dockerfile olmadan çalıştırır — yönetilen veritabanı, Redis, HTTPS ve WAF ile bir PHP 8 runtime'ı alırsın. Container yolu imaj üzerinde tam kontrol isteyen ekipler içindir; ikisi de edge arkasında çalışır.

Queue'lar ve scheduler nerede çalışır?

Laravel scheduler'ını ve queue worker'larını uygulamanın yanında zamanlanmış veya uzun-çalışan işler olarak, aynı yönetilen Redis/veritabanına yönlendirilmiş şekilde çalıştır. Sırları ortam değişkenlerinde tut ki her süreç tek bir yapılandırmayı paylaşsın.

Deploy'da veritabanı migration'ları nasıl çalışır?

Deploy'un parçası olarak yönetilen veritabanına karşı 'php artisan migrate --force' çalıştır. Başarısız bir build önceki sürümü ayakta tuttuğu için ileri doğru güvenle geçer ve şeman kodla senkron kalır.