Skip to content
VDS · वेबसाइट और वेब सर्वर

PHP-FPM: PHP साइटें

VDS पर PHP-FPM इंस्टॉल करना, इसे Nginx के साथ जोड़ना, अपने टियर की मेमोरी के हिसाब से प्रोसेस की संख्या चुनना, और 502 व 504 एरर ठीक करना।

23 अगस्त 2026 को अपडेट किया गया

PHP-FPM एक अलग सर्विस है जो PHP कोड को एक्ज़ीक्यूट करती है; वेब सर्वर सिर्फ़ रिक्वेस्ट उसे भेजता है। WordPress, Laravel, Bitrix और PHP पर चलने वाली लगभग हर चीज़ इसी तरह काम करती है।

इंस्टॉलेशन

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

AlmaLinux और CentOS Stream पर dnf install -y php-fpm php-mysqlnd ... इस्तेमाल करें; सर्विस का नाम php-fpm है। सही वर्ज़न जाँचने के लिए यह चलाएँ:

php -v
systemctl list-units | grep fpm

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

/info.php खोलें, पक्का करें कि PHP काम कर रहा है, और फ़ाइल को तुरंत डिलीट कर दें: यह वर्ज़न, पाथ और मॉड्यूल की लिस्ट दिखा देती है।

कितनी प्रोसेस रखें

हर PHP वर्कर प्रोसेस 40–120 MB खाती है। टियर के हिसाब से साइज़ करें, और डेटाबेस व सिस्टम के लिए मेमोरी बचाकर रखें। यह /etc/php/8.3/fpm/pool.d/www.conf में कॉन्फ़िगर होता है:

टियरमेमोरीउचित 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 N रिक्वेस्ट के बाद प्रोसेस को रीस्टार्ट करता है, ताकि कोड में मेमोरी लीक हफ़्ते के अंत तक जमा न हों।

FPM के लिए काम के php.ini वैल्यू: memory_limit = 256M, upload_max_filesize = 64M, post_max_size = 64M, opcache.enable = 1.

बदलाव करने के बाद: systemctl reload php8.3-fpm.

आम एरर

लक्षणकारणक्या करें
502 Bad Gatewayसॉकेट पाथ गलत है या सर्विस चल नहीं रही/run/php/ में मौजूद असली फ़ाइल से fastcgi_pass मिलाएँ
504 Gateway Time-outस्क्रिप्ट टाइमआउट से ज़्यादा देर चल रही हैfastcgi_read_timeout और max_execution_time बढ़ाएँ
ब्राउज़र फ़ाइल को एक्ज़ीक्यूट करने के बजाय डाउनलोड कर देता हैlocation ~ \.php$ ब्लॉक मैच नहीं हुआlocation ब्लॉक का क्रम जाँचें और nginx -t चलाएँ
लॉग में server reached pm.max_childrenप्रोसेस कम हैंमेमोरी इजाज़त दे तो लिमिट बढ़ाएँ, वरना अगले टियर पर जाएँ

लॉग: /var/log/php8.3-fpm.log और /var/log/nginx/error.log.

साइट का डेटाबेस एक अलग यूज़र के तहत बनाएँ जिसके पास सिर्फ़ अपने ही स्कीमा के राइट्स हों — यूज़र और ग्रांट्स। अपने CMS कॉन्फ़िग में root अकाउंट इस्तेमाल करना एक ही बार में अपने सारे डेटाबेस खोने का सीधा रास्ता है।