Arama Yap Mesaj Gönder
Biz Sizi Arayalım
+90
X

Lütfen Ülke (Bölge) Seçiniz

Türkiye (Türkçe)Türkiye (Türkçe) Almanya (German)Almanya (German) Worldwide (English)Worldwide (English)
X

Lütfen Para Birimi Seçiniz

Türk Lirası $ US Dollar Euro
X

Lütfen Ülke (Bölge) Seçiniz

Türkiye (Türkçe)Türkiye (Türkçe) Almanya (German)Almanya (German) Worldwide (English)Worldwide (English)
X

Lütfen Para Birimi Seçiniz

Türk Lirası $ US Dollar Euro

Bize Ulaşın

Konum Halkalı merkez mahallesi fatih cd ozgur apt no 46 , Küçükçekmece , İstanbul , 34303 , TR
Son teknik kontrol · 17.08.2026 · Ubuntu 26.04 Web Sunucusu

Ubuntu 26.04 Production Web Stack: Nginx + PHP-FPM + TLS + Geri Dönüş

“Nginx kuruldu, PHP çalışıyor” production tanımı değildir. DNS’den TLS’ye, FPM socket’inden deploy dizinine, loglardan health-check ve rollback’e kadar tüm zincir gözlenebilir olmalıdır.

Üretim notu

PHP-FPM sürüm/socket yolu Ubuntu sürüm ve kurulu PHP paketine göre değişebilir. `ls /run/php/` ile gerçek socket’i görmeden örnek config’i kör kopyalamayın.

ubuntu 26.04 nginx php fpmubuntu 26.04 web servernginx php fpm production
TEKNİK UYGULAMA PROFİLİ
EKA CORE
Ubuntu 26.04 Web Sunucusu

Önce uygulamayı HTTP/localhost üzerinde health-check ile doğrulayın, sonra domain ve TLS ekleyin. 502 hatasında DNS ile uğraşmadan önce PHP-FPM socket ve Nginx upstream’i kontrol edin; TLS hatasında ise uygulama kodundan önce DNS/80-443 erişimini doğrulayın.

80/443Dış yayın portları
Kontrol
/run/php/FPM keşif noktası
Kontrol
nginx -tYayın kapısı
Kontrol
Health URLUygulama sinyali
Kontrol
Teknik rehber · production odaklı · resmî kaynaklar
Kısa cevap

Önce uygulamayı HTTP/localhost üzerinde health-check ile doğrulayın, sonra domain ve TLS ekleyin. 502 hatasında DNS ile uğraşmadan önce PHP-FPM socket ve Nginx upstream’i kontrol edin; TLS hatasında ise uygulama kodundan önce DNS/80-443 erişimini doğrulayın.

01

Teknik kapsam ve önemli noktalar

Ubuntu 26.04 üzerinde production web stack kurun: Nginx server block, PHP-FPM socket, Let’s Encrypt/TLS, UFW, log rotasyonu, health check, deployment dizini ve geri dönüş düzeni.

80/443Dış yayın portları

HTTP doğrulama/redirect ve HTTPS trafiği için firewall ile servis dinleme durumunu birlikte kontrol edin.

/run/php/FPM keşif noktası

Kurulu PHP-FPM socket’lerini gerçek sistemden görün; config’i sürüm tahminiyle yazmayın.

nginx -tYayın kapısı

Nginx config değişikliğinde reload’dan önce syntax testi zorunlu alışkanlık olmalıdır.

Health URLUygulama sinyali

Ana sayfa 200 dönse bile DB/queue bozuk olabilir; uygulama sağlık endpoint’i daha anlamlıdır.

Bu sayfada

  1. 1. Deploy dizinini “public_html içine FTP” modelinden çıkarın
  2. 2. Nginx server block’u önce HTTP ile doğrulayın
  3. 3. PHP-FPM socket ve worker kapasitesini gerçek paketten keşfedin
  4. 4. TLS’yi DNS ve port doğrulamasından sonra ekleyin
  5. 5. Access log değil, hata ve gecikme sinyali tasarlayın
  6. 6. Deploy + rollback işlemini tek komut kadar basit hale getirin
  7. 7. Dışarıdan sağlık ve performans kontrolü
  8. Sık sorulan sorular
02

1. Deploy dizinini “public_html içine FTP” modelinden çıkarın

Production’da kod, public web root ve kalıcı upload/config alanlarını ayırmak rollback’i kolaylaştırır.

YolAmaç
/var/www/app/releases/20260817-2200Değişmez release kodu
/var/www/app/currentAktif release symlink
/var/www/app/sharedUpload, .env benzeri kalıcı veriler
Komut
sudo install -d -o www-data -g www-data /var/www/app/releases /var/www/app/shared
Komut
sudo ln -sfn /var/www/app/releases/20260817-2200 /var/www/app/current
03

2. Nginx server block’u önce HTTP ile doğrulayın

TLS eklemeden önce domain → sunucu → Nginx → uygulama zincirinin düz HTTP üzerinde çalıştığını kanıtlayın.

Komut
sudo apt install nginx -y
Komut
sudo nginx -t
Komut
sudo systemctl enable --now nginx
Komut
curl -I http://127.0.0.1
Komut
ss -lntp | grep -E ":80|:443"
04

3. PHP-FPM socket ve worker kapasitesini gerçek paketten keşfedin

Nginx 502’nin sık nedeni yanlış socket yoludur. İkinci neden FPM process limitleri veya çöken worker’lardır.

Komut
ls -lah /run/php/
Komut
systemctl list-units --type=service | grep php
Komut
grep -R "^pm\.\|^listen" /etc/php/*/fpm/pool.d/www.conf
Komut
journalctl -u php*-fpm --since "20 min ago" --no-pager 2>/dev/null | tail -80
05

4. TLS’yi DNS ve port doğrulamasından sonra ekleyin

ACME doğrulama hatalarının önemli bölümü yanlış A/AAAA kaydı, kapalı port veya proxy/origin yönlendirmesinden çıkar.

Komut
dig +short A example.com
Komut
dig +short AAAA example.com
Komut
sudo ufw allow "Nginx Full"
Komut
sudo apt install certbot python3-certbot-nginx -y
Komut
sudo certbot --nginx -d example.com -d www.example.com
Komut
systemctl list-timers | grep certbot
06

5. Access log değil, hata ve gecikme sinyali tasarlayın

Üretimde logların amacı olay anında “hangi katman bozuldu?” sorusunu hızlı cevaplamaktır. Nginx, PHP-FPM ve uygulama logları korelasyon kimliğiyle bağlanabiliyorsa teşhis hızlanır.

Komut
sudo tail -f /var/log/nginx/error.log
Komut
sudo logrotate -d /etc/logrotate.d/nginx
Komut
journalctl -u nginx -u php*-fpm --since today --no-pager 2>/dev/null | tail -100
07

6. Deploy + rollback işlemini tek komut kadar basit hale getirin

Release symlink modeli, bir önceki sürüme dönüşü dosyaları tekrar kopyalamadan sağlar. DB migration geri dönüşü ayrıca tasarlanmalıdır.

Deploy sonrası `curl` health-check başarısızsa otomatik olarak önceki symlink’e dönmek basit ama etkili bir korumadır.
Şema değişikliği yapan migration’larda eski kodun yeni şemayla uyumluluğunu planlayın; yalnız dosya rollback’i yeterli olmayabilir.
Komut
readlink -f /var/www/app/current
Komut
sudo ln -sfn /var/www/app/releases/ONCEKI_SURUM /var/www/app/current
Komut
sudo nginx -t && sudo systemctl reload nginx
08

7. Dışarıdan sağlık ve performans kontrolü

Sunucunun kendisinden yapılan curl testi ağ, DNS ve CDN katmanını atlayabilir. Harici probe kullanın.

Komut
curl -fsS https://example.com/health
Komut
curl -o /dev/null -sS -w "code=%{http_code} connect=%{time_connect} ttfb=%{time_starttransfer} total=%{time_total}
" https://example.com/
Komut
openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null | openssl x509 -noout -dates -issuer
EKA SUNUCU · TECHNICAL

Web stack’i yalnız CPU/RAM değil, trafik ve deploy modeliyle birlikte planlayın

PHP-FPM worker sayısı, cache, DB ve disk I/O aynı VPS’in kaynaklarını paylaşır. Eka Sunucu üzerinde staging + production veya tek sunuculu daha sade mimariyi gerçek trafiğe göre seçebilirsiniz.

Production ilkesiÖlç → Test Et → Canlıya AlUydurma benchmark verisi kullanılmaz.
SRC

Resmî kaynaklar

Rehber hazırlanırken esas alınan birincil dokümantasyon ve teknik kaynaklar.

EKA

İlgili teknik içerikler

İlgili altyapı ve uygulama rehberleriyle devam edin.

FAQ

Sık sorulan sorular

Ubuntu 26.04 Web Sunucusu

Ubuntu 26.04 için hangi PHP sürümünü yazmalıyım?

Kodda kör biçimde sürüm/soket yolu yazmayın. Kurulu paketi `php -v`, `ls /run/php/` ve `systemctl` ile keşfedin; PPA veya panel farklı sürüm getirebilir.

502 Bad Gateway her zaman PHP hatası mı?

Hayır. Upstream servis kapalı olabilir, socket yolu yanlış olabilir, izin sorunu olabilir veya reverse proxy yanlış hedefe gidiyor olabilir.

Certbot yerine Cloudflare Origin Certificate kullanabilir miyim?

Cloudflare proxy arkasında origin TLS için kullanılabilir; ancak tarayıcıdan origin’e doğrudan erişim senaryosu ve SSL modu buna göre tasarlanmalıdır.

Deploy sırasında downtime olmadan nasıl güncellerim?

Release dizini + symlink, önceden dependency build ve kontrollü PHP-FPM reload ile dosya değişim penceresini küçültebilirsiniz. Stateful uygulamalarda DB migration ayrıca planlanmalıdır.

Top