PHP-FPM: các trang web PHP
Cài đặt PHP-FPM trên VDS, tích hợp với Nginx, chọn số tiến trình theo bộ nhớ của tier, và khắc phục lỗi 502 và 504.
Cập nhật 23 tháng 8, 2026
PHP-FPM là một dịch vụ riêng biệt thực thi mã PHP; máy chủ web chỉ chuyển tiếp yêu cầu đến nó. WordPress, Laravel, Bitrix và gần như mọi thứ khác chạy trên PHP đều hoạt động theo cách này.
Cài đặt
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
Trên AlmaLinux và CentOS Stream, dùng dnf install -y php-fpm php-mysqlnd ...; dịch vụ có tên php-fpm. Để kiểm tra phiên bản chính xác, chạy:
php -v
systemctl list-units | grep fpm
Kết nối với 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
Mở /info.php, đảm bảo PHP hoạt động, rồi xóa tệp này ngay: nó để lộ phiên bản, đường dẫn và danh sách module.
Nên giữ bao nhiêu tiến trình
Mỗi tiến trình worker PHP ngốn 40–120 MB. Hãy chọn theo tier, chừa bộ nhớ cho cơ sở dữ liệu và hệ thống. Cấu hình này nằm trong /etc/php/8.3/fpm/pool.d/www.conf:
| Tier | Bộ nhớ | pm.max_children hợp lý |
|---|---|---|
| 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 khởi động lại một tiến trình sau N yêu cầu, nhờ đó rò rỉ bộ nhớ trong mã không tích tụ đến cuối tuần.
Các giá trị php.ini hữu ích cho FPM: memory_limit = 256M, upload_max_filesize = 64M, post_max_size = 64M, opcache.enable = 1.
Sau khi thay đổi: systemctl reload php8.3-fpm.
Lỗi thường gặp
| Triệu chứng | Nguyên nhân | Cần làm gì |
|---|---|---|
502 Bad Gateway | Sai đường dẫn socket hoặc dịch vụ không chạy | Kiểm tra fastcgi_pass với tệp thực tế trong /run/php/ |
504 Gateway Time-out | Script chạy lâu hơn thời gian chờ | Tăng fastcgi_read_timeout và max_execution_time |
| Trình duyệt tải tệp xuống thay vì thực thi | Khối location ~ \.php$ không khớp | Kiểm tra thứ tự các khối location và chạy nginx -t |
server reached pm.max_children trong log | Không đủ tiến trình | Tăng giới hạn nếu bộ nhớ cho phép, nếu không thì nâng lên tier cao hơn |
Log: /var/log/php8.3-fpm.log và /var/log/nginx/error.log.
Hãy tạo cơ sở dữ liệu của site dưới một người dùng riêng chỉ có quyền với schema của chính nó — người dùng và quyền. Dùng tài khoản
roottrong cấu hình CMS là con đường thẳng dẫn đến mất toàn bộ cơ sở dữ liệu cùng một lúc.