PHP-FPM (FastCGI Process Manager) là một cách cải tiến để xử lý các yêu cầu PHP trên các máy chủ web như Nginx hoặc Apache. Nó được thiết kế để quản lý việc xử lý đồng thời nhiều yêu cầu PHP một cách hiệu quả hơn so với cách xử lý mặc định của PHP.
Đặc điểm nổi bật của PHP-FPM:
- Quản lý quá trình (Process Manager): PHP-FPM quản lý một pool các worker process để xử lý các yêu cầu PHP. Điều này giúp tăng hiệu suất khi xử lý lượng lớn yêu cầu đồng thời, vì các worker process có thể được tái sử dụng.
- Kiểm soát tốt hơn về tài nguyên: Bạn có thể cấu hình số lượng worker process tối đa, thời gian sống của chúng, và các thông số liên quan để tối ưu hóa việc sử dụng tài nguyên hệ thống.
- Hỗ trợ nhiều pool: PHP-FPM cho phép chạy nhiều pool process, mỗi pool có thể được cấu hình riêng, ví dụ như cho các ứng dụng khác nhau trên cùng một máy chủ.
- Khởi động chậm (On-demand start): PHP-FPM có thể được cấu hình để khởi động các worker process theo yêu cầu thay vì duy trì một số lượng cố định, giúp tiết kiệm tài nguyên khi tải thấp.
- Tính năng quản lý lỗi nâng cao: PHP-FPM cung cấp cơ chế ghi log và quản lý các lỗi một cách chi tiết hơn so với các phương pháp khác.
Lợi ích khi sử dụng PHP-FPM:
- Hiệu suất cao hơn: PHP-FPM hoạt động hiệu quả hơn khi xử lý nhiều yêu cầu đồng thời, giúp tăng tốc độ tải trang web và giảm độ trễ.
- Tiêu thụ tài nguyên tối ưu hơn: Bằng cách quản lý tốt hơn số lượng worker process, PHP-FPM giảm thiểu việc lãng phí tài nguyên hệ thống.
- Khả năng mở rộng tốt hơn: Với việc cấu hình pool riêng cho từng ứng dụng, bạn có thể dễ dàng mở rộng ứng dụng của mình mà không gây ảnh hưởng tới các ứng dụng khác trên cùng máy chủ.
PHP-FPM đặc biệt hữu ích khi kết hợp với Nginx, vì Nginx không có module xử lý PHP nội bộ, mà cần một backend xử lý PHP bên ngoài như PHP-FPM.
1. Cài đặt PHP-FPM
Trước tiên, bạn cần cài đặt PHP-FPM. Bạn có thể thực hiện điều này thông qua các lệnh sau:
sudo apt update sudo apt install php-fpm
Sau khi cài đặt hoàn tất, PHP-FPM sẽ tự động được khởi động. Bạn có thể kiểm tra trạng thái của PHP-FPM bằng lệnh:
sudo systemctl status php-fpm
2. Cài đặt PHP-FPM với Nginx
Nginx không hỗ trợ PHP natively, vì vậy PHP-FPM cần được cấu hình làm backend để xử lý các yêu cầu PHP.
Bước 1: Cài đặt Nginx
Nếu bạn chưa có Nginx, cài đặt nó bằng lệnh:
sudo apt install nginx
Bước 2: Cấu hình Nginx với PHP-FPM
Mở file cấu hình của Nginx (ví dụ: /etc/nginx/sites-available/default
) và sửa lại như sau:
server { listen 80; server_name your_domain_or_ip; root /var/www/html; index index.php index.html index.htm index.nginx-debian.html; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; # Thay đổi theo phiên bản PHP } location ~ /\.ht { deny all; } }
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
là đường dẫn đến socket của PHP-FPM. Bạn cần thay thế phiên bản PHP phù hợp (ví dụphp8.1-fpm.sock
nếu bạn sử dụng PHP 8.1).- Đảm bảo thư mục
root
trỏ đến nơi chứa mã nguồn của bạn.
Bước 3: Khởi động lại Nginx
Sau khi cấu hình xong, khởi động lại Nginx để áp dụng thay đổi:
sudo systemctl restart nginx
Bước 4: Tạo tệp PHP để kiểm tra
Tạo một file index.php
trong thư mục /var/www/html
với nội dung sau để kiểm tra:
<?php phpinfo(); ?>
Truy cập trang web của bạn (http://your_domain_or_ip) để kiểm tra kết quả. Nếu mọi thứ được cấu hình đúng, bạn sẽ thấy trang thông tin PHP.
3. Cài đặt PHP-FPM với Apache
Apache có thể sử dụng PHP-FPM thông qua module mod_proxy_fcgi
.
Bước 1: Cài đặt Apache
Nếu chưa cài đặt Apache, bạn có thể làm như sau:
sudo apt install apache2
Bước 2: Cài đặt và kích hoạt module FPM
Kích hoạt module proxy_fcgi và setenvif:
sudo a2enmod proxy_fcgi setenvif
Kích hoạt module PHP-FPM:
sudo a2enconf php8.1-fpm # Thay thế bằng phiên bản PHP phù hợp
Bước 3: Cấu hình Apache để sử dụng PHP-FPM
Mở file cấu hình của Apache (ví dụ /etc/apache2/sites-available/000-default.conf
) và thêm cấu hình cho PHP:
<VirtualHost *:80> ServerName your_domain_or_ip DocumentRoot /var/www/html <FilesMatch "\.php$"> SetHandler "proxy:unix:/var/run/php/php8.1-fpm.sock|fcgi://localhost/" </FilesMatch> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
SetHandler "proxy:unix:/var/run/php/php8.1-fpm.sock|fcgi://localhost/"
chỉ định Apache chuyển các yêu cầu PHP qua PHP-FPM.
Bước 4: Khởi động lại Apache
Sau khi cấu hình, khởi động lại Apache để áp dụng thay đổi:
sudo systemctl restart apache2
Bước 5: Tạo tệp PHP để kiểm tra
Tương tự như Nginx, tạo một file index.php
trong thư mục /var/www/html
với nội dung:
<?php phpinfo(); ?>
Truy cập trang web của bạn (http://your_domain_or_ip) để kiểm tra.
4. Kiểm tra trạng thái PHP-FPM
Để kiểm tra tình trạng của PHP-FPM trên hệ thống, bạn có thể sử dụng các lệnh sau:
sudo systemctl status php-fpm
Nếu gặp vấn đề về hiệu suất, bạn có thể điều chỉnh các thông số của PHP-FPM trong file cấu hình /etc/php/8.1/fpm/pool.d/www.conf
.

Dương Trần Hà, hiện mình đang là kỹ công nghệ phần mềm và cũng là giám đốc thành lập công ty DTH Solutions. Mình có nhiều năm kinh nghiệm, kiến thức chuyên môn lập trình, nodejs, nestjs, laravel, yii2, reactjs, nextjs. Mình đã phát triển rất nhiều dự án thực tế cho doanh nghiệp, cơ quan. Mình đã đạt được một số thành công nhỏ, đồng thời mình vẫn đang tiếp tục học tập để trau dồi kiến thức mỗi ngày. Mình rất yêu thích công nghệ, đam mê chia sẻ những kiến thức, thông tin hữu ích cho mọi người.