Tenant Oluşturma Süreci

Multi-Tenant Mimari - Kapsamlı Teknik Analiz

Central + Tenant DB Plesk Entegrasyonu SSL Sertifikası v4 - nginx Config Eksik Adım

nginx Config'e Domain Ekleme (EKSİK ADIM!) KRİTİK - v4

Basit Anlatım (Herkes İçin)

Problem Ne?

Tenant oluşturulduğunda domain nginx config dosyasına eklenmiyor. Bu yüzden SSL script'i çalıştırılsa bile başarısız oluyor.

Ne Oluyor?

nginx yeni domain'i tanımıyor → istek varsayılan sertifikaya gidiyor → SSL uyumsuzluğu → "Bağlantınız gizli değil" hatası

Gerçek Örnek: banff.tuufi.com

Tenant oluşturuldu, DB hazır, DNS doğru ama SSL hatası. Sebep: nginx config'de server_name banff.tuufi.com; satırı yoktu!

Çözüm

SSL script'inden ÖNCE domain'i nginx config'e eklemek gerekiyor. Ya Plesk alias ya da manuel ekleme.

Teknik Detaylar

Sorunlu Durum

1 Tenant oluşturuldu (DB hazır)
2 Domain tablosuna eklendi
3 nginx config'e EKLENMEDİ!
4 SSL script başarısız (404)
5 Site açılmıyor

Doğru Akış

1 Tenant oluşturuldu (DB hazır)
2 Domain tablosuna eklendi
3 nginx config'e domain eklendi
4 nginx reload yapıldı
5 SSL script başarılı

Manuel nginx Config Ekleme

# 1. Backup al sudo cp /etc/nginx/plesk.conf.d/vhosts/tuufi.com.conf \ /etc/nginx/plesk.conf.d/vhosts/tuufi.com.conf.backup-$(date +%Y%m%d-%H%M%S) # 2. Domain'i ekle (mevcut son domain'den sonra) # Hem HTTP 80 hem HTTPS 443 bloklarına otomatik eklenir sudo sed -i '/server_name www.zarakariyer.tuufi.com;/a\\tserver_name yenidomain.com;\n\tserver_name www.yenidomain.com;' \ /etc/nginx/plesk.conf.d/vhosts/tuufi.com.conf # 3. nginx test ve reload sudo nginx -t && sudo systemctl reload nginx # 4. Kontrol et sudo grep -n "yenidomain" /etc/nginx/plesk.conf.d/vhosts/tuufi.com.conf

Dikkat: Bu dosya Plesk tarafından otomatik üretiliyor. plesk repair web sonrası değişiklikler kaybolabilir!

TODO: Otomatik Script Geliştirme

Bu adımı otomatikleştirmek için add-domain-to-ssl.sh script'i güncellenmeli:

nginx config kontrolü ekle

Domain nginx config'de var mı kontrol et

Otomatik ekleme yap

Yoksa sed ile hem HTTP hem HTTPS bloğuna ekle

nginx reload yap

Config değişikliğinden sonra nginx'i yeniden yükle

Alternatif: Wildcard SSL

*.tuufi.com için wildcard sertifika al (ixtif gibi)

SSL Sorunlarının Kök Nedeni v3

Basit Anlatım (Herkes İçin)

Problem Ne?

Yeni bir domain/tenant eklendiğinde tarayıcıda "Bağlantınız gizli değil" hatası alınıyor. Bu SSL sertifika hatasıdır.

Neden Oluyor?

Let's Encrypt sertifika doğrulaması HTTP üzerinden yapılıyor ama sunucu HTTPS'e yönlendiriyor. HTTPS'te yeni domain sertifikada olmadığı için doğrulama başarısız oluyor.

Döngüsel Problem

SSL almak için doğrulama lazım → Doğrulama HTTPS'e gidiyor → HTTPS'te sertifika yok → Doğrulama başarısız → SSL alınamıyor → Döngü!

Çözüm Özet

HTTP 80 portunda .well-known/acme-challenge klasörü için HTTPS yönlendirmesini devre dışı bırakıyoruz. Böylece doğrulama HTTP üzerinden çalışıyor.

Teknik Detaylar (Geliştiriciler İçin)

Sorunlu Akış

1 Let's Encrypt HTTP-01 challenge başlatır
2 http://domain.com/.well-known/acme-challenge/xxx istek
3 nginx HTTP → HTTPS redirect yapar (301)
4 https://domain.com/.well-known/... yönlenir
5 HTTPS'te domain sertifikada yok → SSL hatası!
6 Doğrulama başarısız → Sertifika alınamaz

Düzeltilmiş Akış

1 Let's Encrypt HTTP-01 challenge başlatır
2 http://domain.com/.well-known/acme-challenge/xxx istek
3 nginx bypass kuralı ile dosyayı serve eder
4 HTTP 200 + challenge token döner
5 Doğrulama başarılı!
6 Sertifika alınır ve aktif edilir

Kritik Dosya Konumu

nginx vhost config:

/etc/nginx/plesk.conf.d/vhosts/tuufi.com.conf

ACME webroot:

/var/www/vhosts/tuufi.com/httpdocs/public/.well-known/acme-challenge/
Dikkat: Plesk bu dosyayı otomatik üretiyor. plesk repair web veya domain işlemleri sonrası bypass kuralı silinebilir!

Kalıcı Çözüm: SSL Yönetim Script'leri

Script Konumları

/var/www/vhosts/tuufi.com/httpdocs/scripts/ssl/
├── fix-nginx-acme.sh      # nginx ACME bypass düzeltme
├── renew-ssl.sh           # Tüm domain'ler için SSL yenileme
└── add-domain-to-ssl.sh  # Yeni domain SSL ekleme

Yeni Tenant/Domain Ekleme Prosedürü (GÜNCEL v4)

1

Admin Panelden Tenant Oluştur

tuufi.com/admin/tenants → Yeni Tenant ekle

Otomatik: DB, tablolar, seeder, storage, Plesk DB kaydı

2

Domain Ekle

Tenant detayında domain ekle (örn: yenisite.com)

Otomatik: www subdomain, Plesk alias, nginx/apache config

3

DNS Ayarla (Harici domain ise)

Domain sağlayıcısında A kaydı: 159.253.45.94

*.tuufi.com subdomain'leri için DNS zaten hazır

3.5

nginx Config'e Domain Ekle (YENİ!)

Domain nginx config'de yoksa manuel ekle:

# Kontrol et sudo grep "yenidomain.com" /etc/nginx/plesk.conf.d/vhosts/tuufi.com.conf # Yoksa ekle (son domain'den sonra) sudo sed -i '/server_name www.zarakariyer.tuufi.com;/a\\tserver_name yenidomain.com;\n\\tserver_name www.yenidomain.com;' \ /etc/nginx/plesk.conf.d/vhosts/tuufi.com.conf # nginx reload sudo nginx -t && sudo systemctl reload nginx

Bu adım atlanırsa SSL script başarısız olur!

4

SSL Script Çalıştır

sudo /var/www/vhosts/tuufi.com/httpdocs/scripts/ssl/add-domain-to-ssl.sh yenisite.com

Bu script SSL sertifikası alır ve Plesk'e kaydeder

5

Test Et

https://yenisite.com aç, SSL hatası olmamalı

Genel Akış Şeması (Güncel v4)

1. Tenant::create() 2. TenantCreated Event 3. CreateDatabase Job 4. MigrateDatabase Job 5. SeedDatabase Job
6. DatabaseMigrated Event 7. Storage + Plesk DB 8. Domain Ekleme 9. Plesk Alias
10. nginx Config Ekle (YENİ!) 11. SSL Script

Hızlı Referans Komutları

nginx İşlemleri

Domain nginx'te var mı?

sudo grep "domain.com" /etc/nginx/plesk.conf.d/vhosts/tuufi.com.conf

nginx test & reload:

sudo nginx -t && sudo systemctl reload nginx

SSL İşlemleri

Yeni domain SSL ekle:

sudo scripts/ssl/add-domain-to-ssl.sh domain.com

nginx ACME bypass düzelt:

sudo scripts/ssl/fix-nginx-acme.sh

Kontrol Komutları

SSL sertifika kontrolü:

echo | openssl s_client -servername domain.com -connect domain.com:443 2>/dev/null | openssl x509 -noout -text | grep DNS:

DNS kontrolü:

dig +short domain.com A

Sık Yapılan Hatalar

Hata: nginx config'e domain eklememek (YENİ!)

Tenant oluşturuldu ama nginx config'de domain yok. SSL script 404 hatası verir.

Çözüm: SSL'den önce nginx config'e domain ekle ve reload yap

Hata: DNS beklemeden SSL almak

Domain DNS'i sunucuya yönlenmeden SSL almaya çalışmak

Çözüm: Önce dig domain.com ile DNS'i kontrol et

Hata: Plesk'ten manuel SSL almak

Plesk panelden Let's Encrypt tıklamak (nginx bypass olmadan başarısız olur)

Çözüm: Her zaman script'leri kullan

Hata: plesk repair web sonrası SSL hatası

Plesk nginx config'i sıfırlar, bypass kuralı ve domain'ler silinebilir

Çözüm: fix-nginx-acme.sh çalıştır + domain'leri kontrol et

Özet: Yeni Domain Ekleme Checklist (v4)

1. Hazırlık

  • DNS ayarla (A: 159.253.45.94)
  • DNS propagation bekle
  • dig domain.com

2. Tenant

  • Admin'den tenant oluştur
  • Domain ekle
  • Otomatik işlem bekle

3. nginx (YENİ!)

  • nginx'te domain var mı?
  • Yoksa sed ile ekle
  • nginx -t && reload

4. SSL

  • add-domain-to-ssl.sh
  • https://domain.com test
  • Admin giriş test

Sorun yaşarsan: tail -50 storage/logs/laravel-*.log kontrol et