Skip to content
VDS · Sajtovi i veb serveri

PHP-FPM: PHP sajtovi

Instalacija PHP-FPM-a na VDS-u, povezivanje s Nginx-om, izbor broja procesa prema memoriji tvog tiera i rešavanje grešaka 502 i 504.

Ažurirano 23. avgust 2026.

PHP-FPM je poseban servis koji izvršava PHP kod; veb server mu samo prosleđuje zahteve. Tako rade WordPress, Laravel, Bitrix i skoro sve ostalo na PHP-u.

Instalacija

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 i CentOS Stream koristi dnf install -y php-fpm php-mysqlnd ...; servis se zove php-fpm. Da proveriš tačnu verziju, pokreni:

php -v
systemctl list-units | grep fpm

Povezivanje sa Nginx-om

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

Otvori /info.php, proveri da PHP radi i odmah obriši taj fajl: otkriva verziju, putanje i listu modula.

Koliko procesa držati

Svaki PHP worker proces troši 40–120 MB. Dimenzioniši ga po tieru, ostavljajući memoriju za bazu i sistem. Ovo se podešava u /etc/php/8.3/fpm/pool.d/www.conf:

TierMemorijaRazumno 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 restartuje proces posle N zahteva, pa se curenja memorije u kodu ne gomilaju do kraja nedelje.

Korisne php.ini vrednosti za FPM: memory_limit = 256M, upload_max_filesize = 64M, post_max_size = 64M, opcache.enable = 1.

Posle izmena: systemctl reload php8.3-fpm.

Česte greške

SimptomUzrokŠta da radiš
502 Bad GatewayPogrešna putanja do socketa ili servis ne radiProveri fastcgi_pass prema stvarnom fajlu u /run/php/
504 Gateway Time-outSkripta se izvršava duže od tajmautaPovećaj fastcgi_read_timeout i max_execution_time
Pretraživač preuzima fajl umesto da ga izvršiBlok location ~ \.php$ se nije poklopioProveri redosled location blokova i pokreni nginx -t
server reached pm.max_children u loguNema dovoljno procesaPovećaj limit ako memorija dozvoljava, inače pređi na viši tier

Logovi: /var/log/php8.3-fpm.log i /var/log/nginx/error.log.

Napravi bazu sajta pod zasebnim korisnikom sa pravima samo na sopstvenu šemu — korisnici i dozvole. Korišćenje root naloga u konfiguraciji CMS-a je direktan put do gubitka svih baza odjednom.