Skip to content
VDS · Weby a webové servery

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:

TierPamäťRozumné pm.max_children
VDS-12 GB5
VDS-24 GB10
VDS-38 GB20
VDS-524 GB60
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íznakPríčinaČo robiť
502 Bad GatewayNesprávna cesta k socketu alebo služba nebežíSkontroluj fastcgi_pass podľa skutočného súboru v /run/php/
504 Gateway Time-outSkript beží dlhšie než timeoutZvýš fastcgi_read_timeout a max_execution_time
Prehliadač súbor stiahne namiesto vykonaniaBlok location ~ \.php$ sa nezhodovalSkontroluj poradie blokov location a spusti nginx -t
server reached pm.max_children v loguMálo procesovZvýš 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 root v konfigurácii CMS je priama cesta k strate všetkých databáz naraz.