Thread Starter
#0
Veb tətbiqlərinizin sürətlə və stabil işləməsi üçün Nginx və PHP-FPM tandeminin düzgün konfiqurasiyası kritik əhəmiyyət kəsb edir. Nginx statik faylları effektiv şəkildə təqdim edir və PHP-FPM ilə dinamik məzmunu emal edir. Bu, server resurslarından maksimum istifadə etməyə imkan verir, xüsusilə də yüksək yüklü mühitlərdə.
Nginx Server Blokunun Qurulması
Nginx-in PHP-FPM ilə əlaqə qurması üçün server blokunuzda müvafiq parametrlər təyin edilməlidir. Tipik bir konfiqurasiya aşağıdakı kimi görünə bilər. Bu nümunə, PHP əsaslı tətbiqlər üçün ümumi bir başlanğıc nöqtəsidir:
NGINX
12345678910111213141516171819202122
server {
listen 80;
server_name sizin-domeniniz.com; # Domen adınızı qeyd edin
root /var/www/sizin-saytiniz; # Saytın kök qovluğunu təyin edin
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$args; # Əsas URL yönləndirməsi
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; # PHP versiyasına uyğun dəyişdirin
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all; # .htaccess fayllarına birbaşa girişi əngəlləyir
}
}
Burada
fastcgi_pass direktivi PHP-FPM-in dinlədiyi unix socket yolunu göstərir. Bu yol PHP-FPM konfiqurasiyasında təyin edilməlidir və əməliyyat sisteminin və PHP versiyasının fərqinə görə dəyişə bilər.PHP-FPM Pool Konfiqurasiyası və Optimizasiyası
PHP-FPM hər bir domen üçün ayrı-ayrı "pool"lar (hovuzlar) yaradaraq resurs idarəçiliyini asanlaşdırır. Bu hovuzlar adətən
CODE
1/etc/php/8.1/fpm/pool.d/www.conf-
pm(Process Manager): Proses idarəetmə metodunu müəyyən edir.
-
static: Sabit sayda PHP-FPM prosesi işlədir. Yüksək yüklü serverlər üçün uyğundur, lakin daha çox yaddaş tələb edə bilər.
-
ondemand: Yalnız tələb olunduqda proses yaradır. Daha az yaddaş istifadə edir, lakin ilkin istəklərdə gecikməyə səbəb ola bilər.
-
dynamic: Proseslərin sayını dinamik olaraq idarə edir. Ən çox istifadə olunan və balanslı yanaşmadır.
-
-
pm.max_children: Eyni anda işləyə biləcək maksimum PHP-FPM proseslərinin sayı. Bu dəyər serverinizin RAM ölçüsünə və hər bir PHP prosesinin yaddaş istifadəsinə əsasən müəyyən edilməlidir. Həddindən artıq yüksək dəyər serverin yaddaşının bitməsinə səbəb ola bilər.
-
pm.start_servers:dynamicrejimində PHP-FPM başladığında işə düşən proseslərin sayı.
-
pm.min_spare_servers: Boşda qalacaq minimum proses sayı. Bu, ani yüklənmələr zamanı cavab vaxtını yaxşılaşdırır.
-
pm.max_spare_servers: Boşda qalacaq maksimum proses sayı. Həddindən artıq proses yaranmasının qarşısını alır və yaddaş israfının qarşısını alır.
-
request_terminate_timeout: Bir PHP skriptinin icra edilməsi üçün maksimum vaxt. Uzun sürən skriptlərin serveri bloklamasının qarşısını alır.
Unutmayın ki, bu parametrlərin düzgün tənzimlənməsi serverinizin resurslarından səmərəli istifadə etmək və tətbiqlərinizin cavab vaxtını optimallaşdırmaq üçün açardır. Optimal dəyərlər serverinizin xüsusiyyətlərindən və tətbiqinizin tələblərindən asılı olaraq dəyişə bilər.
Təhlükəsizlik Tövsiyələri
-
uservəgroup: PHP-FPM proseslərinin işlədiyi istifadəçi və qrup adətən veb server istifadəçisi (www-datakimi) olmalıdır. Bu, fayl icazələri ilə bağlı problemlərin qarşısını alır və təhlükəsizliyi artırır.
-
open_basedir: Hər bir sayt üçün PHP-nin yalnız müəyyən edilmiş qovluqlara daxil olmasına icazə vermək üçün bu direktivi istifadə edin. Məsələn:Bu, PHP skriptlərinin icazəsiz fayllara daxil olmasının qarşısını alır.CODE1
php_admin_value[open_basedir]=/var/www/sizin-saytiniz:/tmp
Bu konfiqurasiyaların diqqətlə tətbiqi, veb tətbiqlərinizin performansı və təhlükəsizliyi üçün əhəmiyyətli dərəcədə müsbət təsir göstərəcəkdir. Hər dəyişiklikdən sonra
Nginx və PHP-FPM servislerini yenidən yükləməyi unutmayın ki, dəyişikliklər qüvvəyə minsin.