Skip to content
VDS · Situs web dan server web

PHP-FPM: situs PHP

Instalasi PHP-FPM di VDS, integrasinya dengan Nginx, memilih jumlah proses untuk memori tier Anda, dan troubleshooting error 502 dan 504.

Diperbarui 23 Agustus 2026

PHP-FPM adalah layanan terpisah yang menjalankan kode PHP; web server hanya meneruskan permintaan kepadanya. Beginilah cara kerja WordPress, Laravel, Bitrix, dan hampir semua hal lain yang berbasis PHP.

Instalasi

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

Di AlmaLinux dan CentOS Stream, gunakan dnf install -y php-fpm php-mysqlnd ...; layanannya bernama php-fpm. Untuk memeriksa versi persisnya, jalankan:

php -v
systemctl list-units | grep fpm

Menghubungkan ke 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

Buka /info.php, pastikan PHP berfungsi, lalu segera hapus file tersebut: file itu menampilkan versi, path, dan daftar modul.

Berapa banyak proses yang perlu dijaga

Setiap proses worker PHP memakan 40–120 MB. Sesuaikan ukurannya berdasarkan tier, sisakan memori untuk database dan sistem. Ini dikonfigurasi di /etc/php/8.3/fpm/pool.d/www.conf:

TierMemoripm.max_children yang wajar
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 memulai ulang proses setelah N permintaan, sehingga kebocoran memori pada kode tidak menumpuk sampai akhir pekan.

Nilai php.ini yang berguna untuk FPM: memory_limit = 256M, upload_max_filesize = 64M, post_max_size = 64M, opcache.enable = 1.

Setelah melakukan perubahan: systemctl reload php8.3-fpm.

Kesalahan umum

GejalaPenyebabYang harus dilakukan
502 Bad GatewayPath socket salah atau layanannya tidak berjalanPeriksa fastcgi_pass terhadap file yang sebenarnya ada di /run/php/
504 Gateway Time-outSkrip berjalan lebih lama dari timeoutNaikkan fastcgi_read_timeout dan max_execution_time
Browser mengunduh file alih-alih menjalankannyaBlok location ~ \.php$ tidak cocokPeriksa urutan blok location dan jalankan nginx -t
server reached pm.max_children di logProses tidak cukupNaikkan batasnya jika memori memungkinkan, jika tidak pindah ke tier yang lebih tinggi

Log: /var/log/php8.3-fpm.log dan /var/log/nginx/error.log.

Buat database situs di bawah pengguna terpisah dengan hak hanya ke skemanya sendiri — pengguna dan grant. Menggunakan akun root di konfigurasi CMS Anda adalah jalan langsung menuju kehilangan semua database Anda sekaligus.