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