Tüm barındırma hizmetlerinde 15% tasarruf edin

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın: Skills Başlayın
Bölüm
LiteSpeed ​​Barındırma Sanal Sunucular Yönetim

VPS’de PHP Modları: mod_php vs FastCGI vs PHP-FPM — Tam Rehber

PHP, internetin %80’inden fazlasının gücünü sağlar, ancak en çok göz ardı edilen performans kararlarından biri doğru PHP yürütme modunu seçmektir. Yanlış olanı seçerseniz yavaş yükleme süreleriyle, aşırı RAM tüketimiyle ve trafik artışlarında sunucu çökmesiyle karşı karşıya kalırsınız. Doğru olanı seçerseniz uygulamanız ağır eşzamanlı yük altında bile zahmetsizce ölçeklenir.

Bu kılavuz, üç ana PHP yürütme modunu — mod_php, FastCGI ve PHP-FPM — gerçek dünya performans bağlamı, yapılandırma örnekleri ve farklı kullanım durumları için açık önerilerle açıklar. Kişisel bir blog veya yüksek trafikli bir e-ticaret platformu çalıştırıyor olsanız da, bu modları anlamak sunucu ortamınızdan en iyi şekilde yararlanmak için temeldir.

PHP Yürütme Modları Nedir?

Bir PHP yürütme modu, web sunucunuzun PHP betiklerini nasıl yorumladığını ve çalıştırdığını tanımlar. Web sunucusu işlemi (Apache, Nginx, LiteSpeed) ile PHP yorumlayıcısı arasındaki ilişkiyi belirler — özellikle, aynı işlemi paylaşıp paylaşmadıklarını, bir protokol aracılığıyla iletişim kurduklarını veya tamamen ayrı yönetilen hizmetler olarak çalıştıklarını belirler.

Üç ana mod şunlardır:

ModMimariEn İyi Kullanım
mod_phpApache’ye gömülü PHPBasit paylaşılan ortamlar
FastCGIAyrı bir işlem olarak PHPOrta düzey trafikli siteler
PHP-FPMYönetilen PHP işlem havuzlarıYüksek trafikli, üretim uygulamaları

Doğru modu seçmek bellek kullanımını, istek verimini, izolasyonu ve ölçeklenebilirliği doğrudan etkiler. Kaynakların ayrılmış ve yapılandırılabilir olduğu bir VPS Hosting ortamında, iş yükünüze en uygun modu uygulamak için tam özgürlüğe sahipsiniz.

mod_php — Klasik Apache Modülü

mod_php Nedir?

mod_php PHP yorumlayıcısını doğrudan Apache web sunucusu işlemine gömüleyen bir Apache modülüdür. PHP çalıştırmanın en eski ve tarihsel olarak en yaygın yöntemidir.

mod_php Nasıl Çalışır?

Apache bir .php dosyası için bir istek aldığında, yürütmeyi dahili olarak işler — hiçbir harici işlem başlatılmaz, soket iletişimi gerçekleşmez. PHP, Apache’nin içinde yaşar.

Browser Request → Apache (with embedded PHP) → Response

Performans Özellikleri

Düşük trafikli web siteleri ve geliştirme ortamları için mod_php yeterli performans gösterir. PHP zaten Apache’nin belleğine yüklenmiş olduğu için, istek başına işlem oluşturma ek yükü yoktur.

Ancak bu mimarinin kritik bir kusuru vardır: her Apache çalışan işlemi, bir PHP dosyası veya resim ya da CSS dosyası gibi statik bir varlık sunuyor olsun ya da olmasın, belleğinde tam bir PHP yorumlayıcısı taşır.

mod_php’nin Dezavantajları

  • Yüksek bellek tüketimi: Her Apache çalışanı (statik dosyaları sunanlar bile) RAM’de tam PHP çalışma zamanını tutar.
  • Site başına izolasyon yok: Tüm sanal konaklar aynı PHP işlemini ve kullanıcı bağlamını paylaşır; bu, çok kiracılı sunucularda bir güvenlik endişesidir.
  • Sınırlı yapılandırma esnekliği: Önemli geçici çözümler olmadan farklı sanal konaklar için farklı PHP sürümleri çalıştıramazsınız.
  • Nginx ile uyumsuz: mod_php Apache’ye özeldir; Nginx veya LiteSpeed ile kullanılamaz.
  • Yüksek yük altında zayıf ölçeklenebilirlik: Yüksek eşzamanlılık altında, bellek tükenmesi gerçek bir risk haline gelir.

mod_php Ne Zaman Kullanılır?

  • Yerel geliştirme ortamları
  • Çok düşük trafikli kişisel siteler
  • Yeniden yapılandırmanın uygulanabilir olmadığı eski uygulamalar

FastCGI — PHP’yi Web Sunucusundan Ayırma

FastCGI Nedir?

FastCGI, web sunucusunun PHP’yi kendi içine gömmek yerine harici bir PHP işlemiyle iletişim kurmasını sağlayan bir protokoldür. Bu, mod_php üzerinde önemli bir mimari iyileştirmedir.

FastCGI Nasıl Çalışır?

Web sunucusu (Apache veya Nginx), PHP isteklerini Unix soketi veya TCP portu aracılığıyla kalıcı bir FastCGI işlemine iletir. PHP işlemi yürütmeyi gerçekleştirir ve sonucu döndürür.

Browser Request → Web Server → FastCGI Socket → PHP Process → Response

Buradaki anahtar kelime kalıcı: orijinal protokol olan CGI’nin aksine, FastCGI işlemleri istekler arasında canlı kalır ve her tek istek için yeni bir işlem oluşturmanın yükünü ortadan kaldırır.

Performans Özellikleri

FastCGI, statik dosya istekleri web sunucusu tarafından tamamen işlendiğinden ve PHP hiç devreye girmediğinden, mod_php ile karşılaştırıldığında bellek yükünü önemli ölçüde azaltır. PHP işlemleri yalnızca gerçekten gerekli olduğunda çağrılır.

FastCGI’nin Dezavantajları

  • Yapılandırma karmaşıklığı: mod_php ile karşılaştırıldığında soket veya port yapılandırması dahil olmak üzere ek kurulum gerektirir.
  • Sınırlı işlem yönetimi: Temel FastCGI, üretim ortamları için gereken gelişmiş havuz yönetimi özelliklerine sahip değildir.
  • PHP-FPM tarafından yerine geçirildi: Çoğu modern dağıtımda, temel FastCGI uygulamalarının yerine PHP-FPM (FastCGI’nin üzerine inşa edilmiş) tercih edilir.

FastCGI Ne Zaman Kullanılır?

  • Orta düzey trafikli web siteleri
  • PHP-FPM’nin mevcut olmadığı ortamlar
  • mod_php öğesinden uzaklaşan geçiş kurulumları

PHP-FPM — Yüksek Performans için Modern Standart

PHP-FPM Nedir?

PHP-FPM (FastCGI Process Manager), FastCGI protokolünün gelişmiş ve özellik açısından zengin bir uygulamasıdır. Üretim ortamlarında PHP çalıştırmak için fiili standarttır ve herhangi bir ciddi web uygulaması için önerilen moddur.

PHP-FPM Nasıl Çalışır?

PHP-FPM, PHP worker işlemlerinin bir havuzunu yönetir. Web sunucusu, PHP isteklerini Unix soketi veya TCP bağlantısı aracılığıyla PHP-FPM’e iletir. PHP-FPM, mevcut trafiğe göre etkin worker işlemlerinin sayısını dinamik olarak yönetir, yük altında yeni worker’lar başlatır ve sessiz dönemlerde bunları serbest bırakır.

Browser Request → Nginx/Apache → Unix Socket → PHP-FPM Pool → PHP Worker → Response

PHP-FPM’in Temel Avantajları

1. Dinamik İşlem Yönetimi

PHP-FPM birden fazla işlem yönetimi stratejisini destekler:

  • static: Sabit sayıda worker işlemi (öngörülebilir, yüksek trafik için iyi)
  • dynamic: Worker’lar talebe göre minimum ve maksimum arasında ölçeklenir
  • ondemand: Worker’lar yalnızca istekler geldiğinde başlatılır (düşük trafik için bellek açısından verimli)

2. Havuz Başına Yapılandırma

Her uygulama veya sanal host, bağımsız ayarlara sahip kendi PHP-FPM havuzuna sahip olabilir:

  • Ayrı Unix kullanıcı/grubu (geliştirilmiş güvenlik izolasyonu)
  • Havuz başına farklı PHP sürümü
  • Uygulama başına özel php.ini değerleri
  • Bireysel kaynak sınırları

3. Yavaş İstek Günlüğü

PHP-FPM, tanımlı bir yürütme süresi eşiğini aşan istekleri günlüğe kaydedebilir, bu da performans darboğazlarını belirlemek için çok değerlidir.

4. Kaynak Verimliliği

PHP işlemleri web sunucusundan ayrı olarak yönetildiğinden, statik varlıklar herhangi bir PHP ek yükü olmadan sunulur. Bellek yalnızca etkin PHP worker’lar tarafından tüketilir.

5. Uyumluluk

PHP-FPM, Nginx, Apache (mod_proxy_fcgi aracılığıyla) ve LiteSpeed ile sorunsuz çalışır. Nginx veya LiteSpeed ile birleştirildiğinde, performans kazançları önemlidir — eşzamanlı yük altında Apache ile mod_php ile karşılaştırıldığında genellikle 5–10 kat daha hızlı olarak belirtilir.

Yan Yana Karşılaştırma

Özellikmod_phpFastCGIPHP-FPM
MimariApache’ye gömülüHarici işlemYönetilen işlem havuzu
Bellek verimliliğiDüşükOrtaYüksek
Statik dosya yüküYüksekDüşükDüşük
Eşzamanlı istek işlemeZayıfİyiMükemmel
Site başına PHP sürümüHayırSınırlıEvet
Güvenlik izolasyonuZayıfOrtaMükemmel
Nginx uyumluluğuHayırEvetEvet
Yapılandırma karmaşıklığıDüşükOrtaOrta
Üretim hazırlığıHayırKısmiEvet
Yavaş istek günlüğüHayırHayırEvet

VPS’de PHP-FPM Kurulumu Nasıl Yapılır (Ubuntu/Debian)

Aşağıdaki talimatlar Ubuntu 22.04 LTS ve Debian 11/12 için geçerlidir. Uygulamanızı bir VPS Hosting planında çalıştırıyorsanız, bu komutları yürütmek için tam root erişiminiz olacaktır.

Adım 1: Sisteminizi Güncelleyin ve PHP-FPM’yi Kurun

sudo apt update && sudo apt upgrade -y
sudo apt install php-fpm -y

Belirli bir PHP sürümünü kurmak için (örneğin, PHP 8.2):

sudo apt install software-properties-common -y
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update
sudo apt install php8.2-fpm -y

Adım 2: PHP-FPM’nin Çalıştığını Doğrulayın

sudo systemctl status php8.2-fpm

Çıktıda active (running) görmelisiniz. Görmüyorsanız, başlatın ve etkinleştirin:

sudo systemctl start php8.2-fpm
sudo systemctl enable php8.2-fpm

Adım 3: Socket Yolunu Onaylayın

PHP-FPM bir Unix socket aracılığıyla iletişim kurar. Konumunu doğrulayın:

ls /var/run/php/
# Expected output: php8.2-fpm.sock

PHP-FPM ile Nginx

Nginx, PHP-FPM ile eşleştirilen en yaygın web sunucusudur ve iyi bir nedeni vardır — Nginx’in olay odaklı, engellemesiz mimarisi PHP-FPM’nin işlem havuzu modelini mükemmel şekilde tamamlar.

Nginx’i Yükleyin

sudo apt install nginx -y

Nginx Server Block’unu Yapılandırın

Sitenizin yapılandırma dosyasını düzenleyin:

sudo nano /etc/nginx/sites-available/yourdomain.com

Aşağıdaki yapılandırmayı ekleyin:

server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;
    root /var/www/yourdomain.com/public;
    index index.php index.html index.htm;

    # Handle PHP files
    location ~ .php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    # Deny access to .htaccess files
    location ~ /.ht {
        deny all;
    }

    # Serve static files directly
    location ~* .(jpg|jpeg|png|gif|ico|css|js|woff2)$ {
        expires 30d;
        add_header Cache-Control "public, no-transform";
    }
}

Siteyi Etkinleştirin ve Nginx’i Yeniden Başlatın

sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

PHP-FPM with Apache

Apache’yi tercih ederseniz — veya uygulamanız .htaccess dosyalarına bağlıysa — Apache’nin mod_proxy_fcgi modülü aracılığıyla yine de PHP-FPM kullanabilirsiniz.

Gerekli Apache Modüllerini Etkinleştirin

sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php8.2-fpm

Apache Virtual Host’u Yapılandırın

sudo nano /etc/apache2/sites-available/yourdomain.com.conf
<VirtualHost *:80>
    ServerName yourdomain.com
    ServerAlias www.yourdomain.com
    DocumentRoot /var/www/yourdomain.com/public

    <Directory /var/www/yourdomain.com/public>
        AllowOverride All
        Require all granted
    </Directory>

    # Route PHP requests to PHP-FPM
    <FilesMatch .php$>
        SetHandler "proxy:unix:/var/run/php/php8.2-fpm.sock|fcgi://localhost/"
    </FilesMatch>

    ErrorLog ${APACHE_LOG_DIR}/yourdomain_error.log
    CustomLog ${APACHE_LOG_DIR}/yourdomain_access.log combined
</VirtualHost>

Siteyi Etkinleştirin ve Apache’yi Yeniden Başlatın

sudo a2ensite yourdomain.com.conf
sudo apache2ctl configtest
sudo systemctl restart apache2

PHP-FPM Pool Tuning for Production

Varsayılan PHP-FPM pool yapılandırması muhafazakardır ve geliştirme için uygundur. Üretim iş yükleri için, pool ayarlarını sunucunuzun kullanılabilir RAM’ı ve beklenen trafiğine göre ayarlamalısınız.

Pool Yapılandırma Dosyasını Bulun

sudo nano /etc/php/8.2/fpm/pool.d/www.conf

Ayarlanacak Temel Parametreler

; Process management mode: static, dynamic, or ondemand
pm = dynamic

; Maximum number of child processes
pm.max_children = 50

; Number of processes started on boot
pm.start_servers = 10

; Minimum idle processes
pm.min_spare_servers = 5

; Maximum idle processes
pm.max_spare_servers = 20

; Requests per child before recycling (prevents memory leaks)
pm.max_requests = 500

; Log slow requests (requests taking longer than 5 seconds)
request_slowlog_timeout = 5s
slowlog = /var/log/php-fpm/slow.log

pm.max_children Hesaplama

Dinamik ortamlar için pratik bir formül:

pm.max_children = (Available RAM in MB) / (Average PHP process size in MB)

Ortalama PHP işlem boyutunu bulmak için:

ps --no-headers -o "rss,cmd" -C php-fpm8.2 | awk '{ sum+=$1 } END { printf "%.0f MBn", sum/NR/1024 }'

Tipik bir WordPress sitesinde, her PHP-FPM worker yaklaşık 30–60 MB tüketir. 2 GB RAM’e sahip bir VPS’de (OS ek yükünden sonra ~1,5 GB PHP için ayrılmış), güvenle 25–50 worker çalıştırabilirsiniz.

Değişiklikleri Uygulayın

sudo systemctl reload php8.2-fpm

Hangi PHP Modunu Seçmelisiniz?

İşte pratik bir karar rehberi:

mod_php seçin eğer:

  • Yerel geliştirme ortamı çalıştırıyorsanız
  • Çok basit, düşük trafikli statik içerik siteniz varsa
  • Başka seçeneği olmayan eski paylaşılan hostingde iseniz

FastCGI seçin eğer:

  • Orta trafikli bir sitede iseniz ve PHP-FPM kullanılamıyorsa
  • mod_php adresinden uzaklaşıyorsanız ve ara bir adıma ihtiyacınız varsa

PHP-FPM seçin eğer:

  • Herhangi bir üretim uygulaması çalıştırıyorsanız
  • Aynı sunucuda birden fazla PHP sürümü desteklemeniz gerekiyorsa
  • WordPress, Laravel, Symfony, Magento veya herhangi bir modern PHP framework çalıştırıyorsanız
  • Uygulama başına güvenlik izolasyonu istiyorsanız
  • Nginx kullanıyorsanız (PHP-FPM tek uygulanabilir seçenektir)
  • Eşzamanlı trafik altında ölçeklenebilirlik gerekiyorsa

Üretim kullanım durumlarının büyük çoğunluğu için PHP-FPM açık kazanandır. Modern yönetilen hosting platformlarında standart yapılandırmadır ve kendi kendine yönetilen herhangi bir VPS’de çalıştırmanız gereken şeydir.

Birden fazla web sitesini yönetiyorsanız ve PHP modu değiştirme, işlem havuzu yönetimi ve sanal host yapılandırmasını yapılandırma dosyalarını manuel olarak düzenlemeden grafiksel bir arayüzle işlemek istiyorsanız, cPanel’li VPS düşünün — cPanel’in EasyApache 4, birkaç tıkla etki alanı başına PHP işleyicilerini değiştirmenize olanak tanır.

Alternatif olarak, iş akışınıza en uygun yönetim arayüzünü bulmak için mevcut VPS Kontrol Panelleri nin tam aralığını keşfedin.

PHP Uygulamanızı Yürütme Modunun Ötesinde Güvence Altına Almak

Doğru PHP yürütme modunu seçmek, sunucu güvenliği ve performans stratejinizin bir katmanıdır. İşte ek hususlar:

SSL/TLS Şifrelemesi

Her üretim PHP uygulaması HTTPS üzerinden sunulmalıdır. Şifrelenmemiş bir site, kullanıcı verilerini ortaya çıkarır ve Google arama sonuçlarında daha düşük sıralanır. Etki alanınızı güvenilir bir SSL Sertifikası ile güvence altına alarak HTTPS’yi etkinleştirin ve ziyaretçilerinizi koruyun.

Yüksek Trafikli Uygulamalar için Ayrılmış Kaynaklar

PHP uygulamanız tutarlı bir şekilde binlerce eşzamanlı kullanıcıyı işliyorsa, paylaşılan veya giriş seviyesi VPS sonunda bir darboğaz haline gelebilir. Dedicated Servers, kaynak çekişmesi olmaksızın garantili CPU, RAM ve NVMe depolama sağlar — ölçekte PHP-FPM çalıştıran yüksek performanslı PHP uygulamaları için ideal.

PHP Yapılandırması Sertleştirme

Yürütme modunun ötesinde, PHP kurulumunuzu sertleştirin:

; Disable dangerous functions
disable_functions = exec,passthru,shell_exec,system,proc_open,popen

; Hide PHP version from HTTP headers
expose_php = Off

; Restrict file access
open_basedir = /var/www/yourdomain.com/

; Set reasonable limits
memory_limit = 256M
max_execution_time = 30
upload_max_filesize = 20M

Sonuç

mod_php, FastCGI ve PHP-FPM arasındaki farkları anlamak sadece akademik bir alıştırma değildir — uygulamanızın performansı, güvenliği ve ölçeklenebilirliği üzerinde doğrudan, ölçülebilir sonuçları vardır.

Özetlemek gerekirse:

  • mod_php basit ancak kaynak açısından pahalı, Apache ile sıkı şekilde bağlı ve üretim ortamı için uygun değildir.
  • FastCGI PHP’yi web sunucusundan ayırır ve verimliliği artırır, ancak gelişmiş yönetim özelliklerinden yoksundur.
  • PHP-FPM modern, üretim sınıfı standarttır — dinamik işlem yönetimi, havuz başına izolasyon, çok sürüm desteği ve eşzamanlı yük altında mükemmel performans sunmaktadır.

Herhangi bir ciddi web uygulaması için, PHP-FPM, Nginx ile eşleştirilmiş (veya LiteSpeed) çalıştırmanız gereken konfigürasyondur. Uygun havuz ayarlaması, PHP sertleştirmesi ve HTTPS zorunluluğu ile birleştirildiğinde, sağlam ve ölçeklenebilir bir PHP barındırma ortamının temelini oluşturur.

Yürütme ortamınız üzerinde tam kontrol ile bir PHP uygulaması dağıtmaya hazırsanız, AlexHost’tan VPS Hosting bu kılavuzda ele alınan her şeyi uygulamak için ihtiyaç duyduğunuz root erişimi, NVMe depolamayı ve DDoS korumasını sağlar — birinci günden itibaren.

*PHP-FPM’i sunucunuzda yapılandırma hakkında sorularınız mı var? Aşağıya bir yorum bırakın veya uzman yardım için AlexHost destek ekibiyle iletişime geçin.*