Skip to content
VDS · المواقع وخوادم الويب

PHP-FPM: مواقع PHP

تثبيت PHP-FPM على VDS، ودمجه مع 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 ميغابايت. حدّد العدد بحسب المستوى، مع ترك ذاكرة لقاعدة البيانات والنظام. يُضبط ذلك في /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 من الطلبات، حتى لا تتراكم تسريبات الذاكرة في الشيفرة حتى نهاية الأسبوع.

قيم php.ini المفيدة لـ FPM: memory_limit = 256M، وupload_max_filesize = 64M، وpost_max_size = 64M، وopcache.enable = 1.

بعد إجراء التغييرات: systemctl reload php8.3-fpm.

الأخطاء الشائعة

العَرَضالسببما العمل
502 Bad Gatewayمسار socket خاطئ أو الخدمة لا تعملتحقق من fastcgi_pass مقابل الملف الفعلي في /run/php/
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.

أنشئ قاعدة بيانات الموقع تحت مستخدم منفصل يملك صلاحيات على مخططه فقط — المستخدمون والصلاحيات. استخدام حساب root في إعدادات نظام إدارة المحتوى طريق مباشر إلى فقدان كل قواعد بياناتك دفعة واحدة.