PHP-FPM: PHP stránky
Inštalácia PHP-FPM na VDS, prepojenie s Nginx, výber počtu procesov podľa pamäte tvojho tieru a riešenie chýb 502 a 504.
Aktualizované 23. augusta 2026
PHP-FPM je samostatná služba, ktorá vykonáva PHP kód; webový server jej iba odovzdáva požiadavky. Takto funguje WordPress, Laravel, Bitrix a takmer všetko ostatné na PHP.
Inštalácia
apt update
apt install -y php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-zip
systemctl enable --now php8.3-fpm
Na AlmaLinux a CentOS Stream použi dnf install -y php-fpm php-mysqlnd ...; služba sa volá php-fpm. Ak chceš zistiť presnú verziu, spusti:
php -v
systemctl list-units | grep fpm
Prepojenie s Nginx
server {
listen 80;
server_name example.ru;
root /var/www/example.ru/public;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}
location ~ /\.(?!well-known) { deny all; }
}
nginx -t && systemctl reload nginx
echo '<?php phpinfo();' > /var/www/example.ru/public/info.php
Otvor /info.php, over, že PHP funguje, a hneď súbor zmaž: prezrádza verziu, cesty a zoznam modulov.
Koľko procesov udržiavať
Každý pracovný proces PHP zožerie 40–120 MB. Dimenzuj ho podľa tieru a nechaj pamäť pre databázu a systém. Nastavuje sa to v /etc/php/8.3/fpm/pool.d/www.conf:
| Tier | Pamäť | Rozumné pm.max_children |
|---|---|---|
| VDS-1 | 2 GB | 5 |
| VDS-2 | 4 GB | 10 |
| VDS-3 | 8 GB | 20 |
| VDS-5 | 24 GB | 60 |
pm = dynamic
pm.max_children = 10
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 4
pm.max_requests = 500
pm.max_requests reštartuje proces po N požiadavkách, takže úniky pamäte v kóde sa nenahromadia až do konca týždňa.
Užitočné hodnoty v php.ini pre FPM: memory_limit = 256M, upload_max_filesize = 64M, post_max_size = 64M, opcache.enable = 1.
Po vykonaní zmien: systemctl reload php8.3-fpm.
Časté chyby
| Príznak | Príčina | Čo robiť |
|---|---|---|
502 Bad Gateway | Nesprávna cesta k socketu alebo služba nebeží | Skontroluj fastcgi_pass podľa skutočného súboru v /run/php/ |
504 Gateway Time-out | Skript beží dlhšie než timeout | Zvýš fastcgi_read_timeout a max_execution_time |
| Prehliadač súbor stiahne namiesto vykonania | Blok location ~ \.php$ sa nezhodoval | Skontroluj poradie blokov location a spusti nginx -t |
server reached pm.max_children v logu | Málo procesov | Zvýš limit, ak to pamäť dovolí, inak prejdi na vyšší tier |
Logy: /var/log/php8.3-fpm.log a /var/log/nginx/error.log.
Vytvor databázu stránky pod samostatným používateľom s právami len na vlastnú schému — používatelia a granty. Používanie účtu
rootv konfigurácii CMS je priama cesta k strate všetkých databáz naraz.