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-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 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अकाउंट इस्तेमाल करना एक ही बार में अपने सारे डेटाबेस खोने का सीधा रास्ता है।