Tenant Oluşturma Süreci

Multi-Tenant Mimari - Kapsamlı Teknik Analiz

Central + Tenant DB Plesk Entegrasyonu SSL Sertifikası v3 - SSL Kök Neden Analizi

SSL Sorunlarının Kök Nedeni KRİTİK - 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

Sorunlu nginx Config (HTTP 80 Bloğu)

# /etc/nginx/plesk.conf.d/vhosts/tuufi.com.conf # HTTP 80 bloğu - SORUNLU HALİ server { listen 159.253.45.94:80; server_name tuufi.com; server_name www.tuufi.com; server_name yenidomain.com; # Yeni eklenen domain server_name www.yenidomain.com; # ... diğer config ... location / { return 301 https://$host$request_uri; # ← TÜM istekler HTTPS'e! } } # ❌ PROBLEM: .well-known/acme-challenge da HTTPS'e yönleniyor!

Düzeltilmiş nginx Config (HTTP 80 Bloğu)

# /etc/nginx/plesk.conf.d/vhosts/tuufi.com.conf # HTTP 80 bloğu - DÜZELTİLMİŞ HALİ server { listen 159.253.45.94:80; server_name tuufi.com; server_name www.tuufi.com; server_name yenidomain.com; server_name www.yenidomain.com; # ... diğer config ... #extension letsencrypt-fix begin location ^~ /.well-known/acme-challenge/ { root /var/www/vhosts/tuufi.com/httpdocs/public; types { } default_type text/plain; satisfy any; auth_basic off; allow all; location ~ ^/\.well-known/acme-challenge.*/\. { deny all; } } #extension letsencrypt-fix end location / { return 301 https://$host$request_uri; } } # ✅ ÇÖZÜM: .well-known/acme-challenge HTTPS'e yönlenmiyor, direkt serve ediliyor!

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 ÇÖZÜM - v3

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

Script 1: fix-nginx-acme.sh

nginx HTTP 80 bloğuna .well-known bypass ekler. Plesk config'i yeniden oluşturduğunda çalıştırılmalı.

# Kullanım: sudo /var/www/vhosts/tuufi.com/httpdocs/scripts/ssl/fix-nginx-acme.sh # Ne yapar: # 1. nginx config'te ACME bypass var mı kontrol eder # 2. Yoksa HTTP 80 bloğuna bypass kuralı ekler # 3. nginx test ve reload yapar # 4. HTTP üzerinden test eder

Ne zaman çalıştırılmalı: Plesk domain işlemlerinden sonra, SSL yenilemeden önce, veya SSL hatası alındığında.

Script 2: add-domain-to-ssl.sh EN ÖNEMLİ

Yeni bir domain'i mevcut SSL sertifikasına ekler. Tüm adımları otomatik yapar.

# Kullanım: sudo /var/www/vhosts/tuufi.com/httpdocs/scripts/ssl/add-domain-to-ssl.sh yenidomain.com # Ne yapar (5 adım): # [1/5] DNS kontrolü - Domain sunucuya yönleniyor mu? # [2/5] nginx ACME bypass kontrolü/düzeltme # [3/5] Mevcut sertifikadaki domain'leri al # [4/5] Yeni sertifika al (certbot) # [5/5] Plesk sertifikasını güncelle # www versiyonu otomatik eklenir!

Önemli: Domain DNS'i sunucuya yönlenmeli (A kaydı: 159.253.45.94). DNS propagation beklenebilir.

Script 3: renew-ssl.sh

Tüm domain'ler için SSL sertifikasını yeniler veya test eder.

# Kullanım: sudo /var/www/vhosts/tuufi.com/httpdocs/scripts/ssl/renew-ssl.sh # Tüm domain'leri yenile sudo /var/www/vhosts/tuufi.com/httpdocs/scripts/ssl/renew-ssl.sh --test # Sadece test et sudo /var/www/vhosts/tuufi.com/httpdocs/scripts/ssl/renew-ssl.sh --list # Domain listesi

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

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

4

SSL Script Çalıştır

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

Bu script tüm SSL işlemlerini otomatik yapar!

5

Test Et

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

Basit Anlatım (Herkes İçin)

Tenant Nedir?

Tenant, sistemde bağımsız çalışan bir "kiracı site"dir. Her tenant'ın kendi veritabanı, dosyaları ve ayarları vardır. Örneğin: muzibu.com bir tenant, ixtif.com başka bir tenant'tır.

Ne Oluyor?

Yeni tenant oluşturulduğunda: veritabanı yaratılır, tablolar oluşturulur, dosya klasörleri hazırlanır, domain Plesk'e kaydedilir ve SSL sertifikası yenilenir.

Ne Kadar Sürer?

Tüm işlemler senkron (anında) çalışır. SSL sertifikası yenileme de dahil - wildcard DNS sayesinde *.tuufi.com subdomain'leri için bekleme gerekmez.

Neden Önemli?

Her site izole çalışır - birinin verileri diğerini etkilemez. Plesk entegrasyonu sayesinde domain yönetimi ve SSL otomatiktir.

Genel Akış Şeması

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. SSL Script

Hızlı Referans Komutları

SSL İşlemleri

Yeni domain SSL ekle:

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

nginx ACME bypass düzelt:

sudo /var/www/vhosts/tuufi.com/httpdocs/scripts/ssl/fix-nginx-acme.sh

Tüm SSL'leri yenile:

sudo /var/www/vhosts/tuufi.com/httpdocs/scripts/ssl/renew-ssl.sh

Kontrol Komutları

SSL domain kontrolü:

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

HTTP ACME test:

curl -s http://domain.com/.well-known/acme-challenge/test

DNS kontrolü:

dig +short domain.com A

Sık Yapılan Hatalar

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: Cloudflare domain'i SSL'e eklemek

Cloudflare proxy aktifken HTTP doğrulama başarısız olur

Çözüm: Cloudflare domain'lerini SSL listesinden çıkar

Hata: plesk repair web sonrası SSL hatası

Plesk nginx config'i sıfırlar, bypass kuralı silinir

Çözüm: fix-nginx-acme.sh çalıştır

Özet: Yeni Domain Ekleme Checklist

1. Hazırlık

  • Domain DNS ayarla (A: 159.253.45.94)
  • DNS propagation bekle (5-30 dk)
  • dig domain.com ile doğrula

2. Ekleme

  • Admin'den tenant oluştur
  • Domain ekle
  • Sistem otomatik işlemleri bekle

3. SSL

  • add-domain-to-ssl.sh çalıştır
  • https://domain.com test et
  • Admin panele giriş test et

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