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اکاؤنٹ استعمال کرنا ایک ہی وقت میں اپنے تمام ڈیٹابیسز کھو دینے کا سیدھا راستہ ہے۔