2 vCPU'lu VPS için Nginx yapılandırması: worker_processes auto (CPU çekirdek sayısıyla eşleşir), worker_connections 1024, keepalive_timeout 65, client_max_body_size 50m (medya yüklemeleri için). PHP-FPM havuzu: pm = dynamic, pm.max_children = 20, pm.start_servers = 5, pm.min_spare_servers = 5, pm.max_spare_servers = 10. Bu değerler 4 GB RAM'li VPS varsayımıyla verilmiş; farklı RAM boyutları için pm.max_children'ı orantılı olarak ayarlayın.

fastcgi_cache: PHP'siz Trafik Emilimi

Web sunucusu katmanında tam sayfa önbellekleme için Nginx'te fastcgi_cache'i etkinleştirin. nginx.conf'ta 1 GB'lık önbellek bölgesi yapılandırın: fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=jekcms:10m max_size=1g.

200 döndüren GET istekleri için 10 dakikalık TTL ayarlayın. Oturum çerezi için bir fastcgi_cache_bypass direktifiyle giriş yapmış kullanıcılar için önbelleği atlayın. Bu katman PHP'yi hiç çalıştırmadan trafik zirvelerini emiyor; yüksek trafikli anlarda en büyük farkı bu yaratıyor.

Üretim için OPcache

php.ini'deki OPcache ayarları: opcache.memory_consumption=256, opcache.max_accelerated_files=20000, üretimde opcache.validate_timestamps=0 (dosya değişikliklerini almak için geliştirme ortamında 1 olarak ayarlayın). validate_timestamps=0 ayarı her istekte stat() çağrılarını ortadan kaldırıyor. NVMe depolamada bu marjinal bir iyileşme; ağa bağlı veya döner diskli depolamada istek gecikmesini istek başına 5–15 ms azaltabilir. Bu tek ayar yoğun trafikli sitelerde hissedilir fark yaratıyor.

MariaDB: Tampon Havuzu ve Yavaş Sorgu Günlüğü

MariaDB: innodb_buffer_pool_size'ı mevcut RAM'in %70'ine, en yakın 512 MB'a yuvarlayarak ayarlayın. 4 GB'lık sunucuda 2560M kullanın. Yavaş sorgu günlüğünü ilk günden etkinleştirin: slow_query_log=1, long_query_time=1, log_queries_not_using_indexes=1. Yavaş sorguları, zaten bir üretim olayının ortasındayken değil, iki haftalık geçmiş veriniz olduğunda teşhis etmek çok daha kolay. Bu günlükler sorun olmadan önce bottleneck'leri tanımlamaya yardımcı olur.

SSL ve Guvenlik Basliklari

Let's Encrypt kullanarak Certbot ile SSL yapilandirin. Nginx SSL yapilandirmasi TLSv1.2 ve TLSv1.3 protokollerini, guclu sifrelemeleri ve guvenlik basliklarini icermelidir. X-Frame-Options, X-Content-Type-Options, Referrer-Policy ve Strict-Transport-Security basliklarini ekleyin.

SSL yapilandirmanizi ssllabs.com/ssltest adresinde test edin ve A+ derecelendirmesi hedefleyin. 2 yillik max-age ile HSTS basligi tarayicilara her zaman HTTPS kullanmalarini soyler.

PHP Guvenlik Ayarlari

Bu php.ini direktifleriyle PHP'yi uretimde sertlestirin:

  • expose_php = Off ile X-Powered-By basligini kaldirin
  • display_errors = Off ile hata mesajlarinin ziyaretcilere sizmasini onleyin
  • log_errors = On ile hatalarin gunluk dosyasina gitmesini saglayin
  • session.cookie_httponly = 1 ile JavaScript'in oturum cerezlerini okumasini onleyin
  • session.cookie_secure = 1 ile oturum cerezlerini yalnizca HTTPS uzerinden gonderin
  • upload_max_filesize = 50M ile Nginx client_max_body_size ile eslestirin

Izleme ve Otomatik Yeniden Baslatma

Systemd, Ubuntu/Debian'da Nginx ve PHP-FPM icin otomatik jekcms.alfadizayn.com/tr/blog/jekcms-v1-4-0-cok-dilli-motor-bastan-yeniden-yazildi" class="auto-link" target="_blank" rel="noopener">yeniden baslatmayi yonetir. Uygulama duzeyinde izleme icin JekCMS'in /api/health adresinde saglanan saglik kontrolu uc noktasini yapilandirin. Bu uc nokta veritabani baglantisini, dosya sistemi yazilabilirligini ve onbellek katmani durumunu kontrol eder. Harici bir izleme servisi ile bu uc noktaya her 60 saniyede bir istek atin.

Log Rotasyonu

Disk alani tukenmesini onlemek icin tum gunluk dosyalari icin logrotate yapilandirin:

  • Nginx erisim ve hata gunlukleri: gunluk dondur, 14 gun tut
  • PHP-FPM yavas gunluk ve hata gunlugu: haftalik dondur, 4 hafta tut
  • MariaDB yavas sorgu gunlugu: haftalik dondur, 8 hafta tut
  • JekCMS uygulama gunlukleri: gunluk dondur, 30 gun tut

Aylik 500.000 Sayfa Goruntulenin Otesine Olcekleme

Trafik tek bir VPS'te aylik 500.000 sayfa goruntulenmeyi astiginda, donanim yukseltmeden once su optimizasyonlari degerlendirin:

  • fastcgi_cache TTL'sini artirin: seyrek degisen sayfalar icin 10 dakikadan 1 saate cikarin. Bu tek basina 3-5x trafik artisini emebilir.
  • CDN katmani ekleyin: Cloudflare (ucretsiz katman yeterli) veya Bunny.net (TB basina aylik 1$). Statik varliklari uc noktada onbellege alin.
  • MariaDB'yi ayri sunucuya tasiyin: darboaz veritabaniysa. Ayirmak her servisin tam tampon havuzunu kullanmasini saglar.
  • PHP on yuklemeyi etkinlestirin: opcache.preload ile tum JekCMS cekirdek dosyalarini PHP-FPM baslangicinda derleyin.

Yedekleme Stratejisi

Uretim VPS dagitimlarinda 3-2-1 yedekleme stratejisi uygulayın: verilerin uc kopyasi, iki farkli depolama turunde, bir kopyasi site disinda. JekCMS icin:

  • Veritabani: her gun saat 03:00'te otomatik mysqldump, gzip ile sikistirilmis, yerel olarak saklanir ve S3 uyumlu bir kovaya senkronize edilir. Saklama: 30 gunluk yedek, 12 aylik yedek.
  • Yuklemeler dizini: her gece site disi depolamaya rsync. Yalnizca yeni ve degismis dosyalar aktarilir, bant genisligi kullanimini minimum tutar.
  • Tam sunucu goruntusu: barindirma saglaiciinizin API'si araciligiyla haftalik VPS goruntusu. Bu, Nginx, PHP ve MariaDB yapilandirmalari dahil tum sistem durumunu yakalir.

Geri yukleme surecini uc ayda bir test edin. Hic geri yuklemediginiz bir yedek, guvenemeyeceginiz bir yedektir. Geri yukleme prosedurunu belgeleyin, boylece herhangi bir ekip uyesi olay sirasinda yurutebilir.

Guvenlik Duvarı ve Fail2Ban Yapilandirmasi

VPS uzerinde JekCMS calistirirken isletim sistemi duzeyinde guvenlik onlemleri almak sart. UFW ya da iptables ile yalnizca 22 (SSH), 80 (HTTP) ve 443 (HTTPS) portlarini acan bir guvenlik duvari kurun. SSH erisimini anahtar tabanli kimlik dogrulamayla sinirlayin ve sifre girisini devre disi birakin.

Fail2Ban kurarak basarisiz SSH ve Nginx giris denemelerini otomatik engelleyin; varsayilan olarak 5 basarisiz denemeden sonra IP adresini 10 dakika boyunca yasaklayan bir kural tanimlayin. MariaDB portunu (3306) dis erisime kapattiginizdan emin olun; veritabani baglantilari yalnizca localhost uzerinden yapilmali. Bu temel onlemler, VPS'inizin gaye haline gelmesini buyuk olcude zorlastirir ve JekCMS kurulumunuzu dis saldirilara karsi guclendirir.

Performans Izleme ve Darbogazlari Teshis Etme

Yapilandirmanizi tamamladiktan sonra performansi duzenli olarak izlemek kritiktir. JekCMS'in /api/health uc noktasinin yaninda, sunucu tarafinda htop, iostat ve vmstat araclariyla CPU, bellek ve disk I/O kullanimini takip edin.

PHP-FPM yavas gunlugunu aktif tutarak hangi isteklerin belirlenen suresi astigini goruntuleyin. MariaDB yavas sorgu gunlugu ile veritabani tarafindaki darbogazlari tanimlayarak eksik indeks veya verimsiz sorgu yapilarini tespit edin. Bu verileri haftalik olarak gozden gecirerek sorunlari buyumeden once cozebilirsiniz.