Nginx FastCGI konfigürasyonu (PHP-FPM ile) nasıl yapılır? (fastcgi_pass, fastcgi_param, fastcgi_index)

Nginx ve PHP-FPM Nedir?

Nginx, yüksek performanslı bir web sunucusu ve ters proxy sunucusudur. Genellikle, statik içerikler sunmak veya diğer sunuculardan gelen istekleri yönlendirmek için kullanılır. PHP-FPM (PHP FastCGI Process Manager), PHP uygulamalarını yönetmek üzere tasarlanmış bir FastCGI uygulama sunucusudur. Bu iki sistemin birlikte kullanılması, dinamik içerikleri hızlı ve verimli bir şekilde sunmaya olanak tanır.

FastCGI Nedir?

FastCGI, CGI (Common Gateway Interface) protokolünün geliştirilmiş bir versiyonudur. CGI, her HTTP isteğinde yeni bir süreç başlatma gereksinimi nedeniyle yüksek performans sunmayan bir yöntemdir. FastCGI, süreçlerin yeniden kullanılmasını sağlayarak daha yüksek verimlilik ve daha az sistem kaynağı kullanımı sunar. Bu yönüyle özellikle yüksek trafikli web uygulamaları için avantajlıdır.

Nginx’in PHP-FPM ile Entegrasyonu

Nginx’in PHP-FPM ile entegrasyonu, genellikle belirli bir konfigürasyon dosyasında yapılır. Nginx konfigürasyon dosyası genellikle `/etc/nginx/nginx.conf` veya sitelere özgü bir dosya olan `/etc/nginx/sites-available/` dizininde bulunur. PHP-FPM genellikle 9000 portu üzerinden çalışır ancak bu port, yapılandırmaya bağlı olarak değiştirilebilir.

`fastcgi_pass` Yönergesi

`fastcgi_pass`, Nginx’in FastCGI sunucusuna istek gönderme yeteneğini belirten bir yönergedir. PHP-FPM için bu genellikle aşağıdaki gibi ayarlanır:

“`
fastcgi_pass 127.0.0.1:9000;
“`

Bu satır, Nginx’in yerel sunucuda (localhost) 9000 portuna yönlendirilmesini sağlar. Eğer PHP-FPM farklı bir port veya Unix soketi kullanıyorsa, bu değer değiştirilmelidir. Örneğin, bir UNIX soketi kullanılıyorsa şu şekilde yapılandırılabilir:

“`
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
“`

`fastcgi_param` Yönergesi

`fastcgi_param`, Nginx ile FastCGI sunucusu arasındaki parametreleri tanımlamak için kullanılır. Bu parametreler, PHP betiklerinin doğru şekilde çalışması için gereklidir. Genellikle aşağıdaki gibi ayarlanır:

“`
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
“`

Bu satır, PHP betiğinin bulunduğu dosya yolunu belirtir. `$document_root`, web sunucusunun belge kökünü temsil eder ve `$fastcgi_script_name`, istenen betiğin adını alır. Diğer yaygın kullanılan parametreler arasında `QUERY_STRING`, `REQUEST_METHOD`, `CONTENT_TYPE`, `CONTENT_LENGTH` gibi değişkenler yer alır:

“`
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
“`

`fastcgi_index` Yönergesi

`fastcgi_index`, FastCGI sunucusunun varsayılan dosya adını belirtir. PHP-FPM ile kullanımda genellikle `index.php` olarak ayarlanır. Bu ayar, dizinlere yapılan isteklerde otomatik olarak hangi dosyanın yükleneceğini belirler:

“`
fastcgi_index index.php;
“`

Örnek Nginx Konfigürasyonu

Aşağıda Nginx’in PHP-FPM ile birlikte çalışacak şekilde yapılandırılmasına örnek verilmiştir. Bu yapılandırma, dinamik PHP dosyalarını işlemek için gerekli temel konfigürasyonu içermektedir:

“`
server {
listen 80;
server_name example.com;
root /var/www/html;

index index.php index.html index.htm;

location / {
try_files $uri $uri/ /index.php?$query_string;
}

location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
“`

Nginx ve PHP-FPM Hataları

Konfigürasyon sırasında dikkat edilecek unsurlar, hataların en aza indirilmesi açısından önemlidir. Nginx log dosyaları ve PHP-FPM log dosyaları, olası hataları belirlemek için göz önünde bulundurulmalıdır. Hataların çözümü için uygun ayarların yapıldığına, yapılandırmalardaki potansiyel yazım hatalarına ve hizmetlerin durumuna dikkat edilmelidir.

Performans İyileştirmeleri

Nginx ile PHP-FPM’in performansını artırmak için bazı optimizasyonlar yapılabilir. PHP-FPM konfigürasyon dosyasında (genellikle `/etc/php/7.4/fpm/pool.d/www.conf`), çocuk süreçlerin sayısı, zaman aşımı süreleri ve bellek limitleri gibi ayarlar gözden geçirilmelidir. Nginx konfigürasyonunda da, gzip sıkıştırma ve önbellekleme gibi tekniklerle performans artırılabilir.

Bu bilgiler, Nginx’in FastCGI konfigürasyonunu PHP-FPM ile kullanmak isteyenler için temel bir rehber oluşturur. Konfigürasyon dosyalarının dikkatlice hazırlanması ve gerekli optimizasyonların yapılması, yüksek verimlilik sunan bir web uygulaması oluşturulmasına olanak tanır.

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz

SON İÇERİKLER

İLGİNİZİ ÇEKEBİLİR