PHP-FPM là một dịch vụ tối ưu hóa hiệu suất xử lý PHP, giúp tăng tốc độ, cải thiện khả năng chịu tải và giảm tiêu thụ tài nguyên cho website. Để tìm hiểu chi tiết về PHP-FPM là gì và cách sử dụng nó để tăng tốc độ website một cách hiệu quả, mời bạn đọc tiếp nội dung bài viết mà mình sắp chia sẻ dưới đây.
Điểm chính cần nắm
- PHP-FPM Định nghĩa và vai trò: PHP-FPM (FastCGI Process Manager) là một triển khai FastCGI dành riêng cho PHP, được thiết kế nhằm tối ưu hóa tốc độ và hiệu suất, đặc biệt hiệu quả với các website có lưu lượng lớn hoặc xử lý phức tạp.
- Khái niệm CGI: CGI (Common Gateway Interface) là phần mềm lập trình giúp kết nối máy chủ với các chương trình, xử lý dữ liệu từ website và truyền tải thông tin đến người dùng hiệu quả.
- FastCGI định nghĩa: FastCGI, dựa trên CGI, cải thiện hiệu quả xử lý máy chủ web, giảm tiêu thụ CPU, hỗ trợ tối ưu hóa tải trang với công cụ như eAccelerator, mang lại trải nghiệm nhanh và mượt mà cho người dùng.
- Cách hoạt động của PHP-FPM: Apache gửi code đến PHP-FPM qua giao thức FastCGI. Supervisor chọn worker trong pool để xử lý code, trả kết quả về Apache và trình duyệt. PHP-FPM đảm bảo hiệu suất cao mà không tiêu tốn toàn bộ tài nguyên server.
- Các tính năng của PHP-FPM: cung cấp khả năng quản lý tác vụ linh hoạt, thích nghi đa môi trường, bảo mật cao, hiệu suất mạnh mẽ và tùy chỉnh linh hoạt, là giải pháp lý tưởng cho website có lưu lượng cao và yêu cầu phức tạp.
- Các loại PHP Handler phổ biến: DSO là PHP Handler có tốc độ cao nhưng tiêu tốn tài nguyên, trong khi suPHP tập trung vào bảo mật, giúp thực thi mã PHP với quyền của người dùng, phù hợp với môi trường shared hosting.
- So sánh PHP-FPM và PHP-CGI: PHP-FPM vượt trội so với PHP-CGI về hiệu suất và khả năng quản lý tài nguyên, đặc biệt phù hợp với các website có lưu lượng truy cập lớn hoặc yêu cầu xử lý phức tạp. PHP-CGI phù hợp hơn cho các ứng dụng nhỏ hoặc ít yêu cầu đồng thời.
- Sử dụng PHP-FPM với cPanel và EasyApache: Cấu hình PHP-FPM trong cPanel, hiểu cách hoạt động của module cPanel PHP-FPM, và tạo User Pool để tối ưu hóa hiệu suất xử lý PHP trên máy chủ web.
- Cấu hình PHP-FPM với NGINX: Hướng dẫn cài đặt PHP-FPM, cấu hình pool, thiết lập NGINX để hoạt động với PHP-FPM, và kiểm tra cấu hình nhằm đảm bảo hiệu suất và khả năng xử lý tối ưu cho máy chủ web.
- Nhấn mạnh Vietnix: cung cấp VPS hiện đại với hạ tầng tiên tiến, đảm bảo website hoạt động nhanh, ổn định, an toàn, cùng đội ngũ hỗ trợ 24/7, là nền tảng mạnh mẽ và uy tín cho doanh nghiệp.
- Giải đáp các câu hỏi liên quan đến PHP-FPM: Giúp bạn hiểu rõ hiệu suất và tính năng vượt trội của PHP-FPM.
PHP-FPM là gì?
PHP-FPM (FastCGI Process Manager) là một công cụ web được sử dụng để tăng tốc độ và hiệu suất của một trang web. Đây là một triển khai FastCGI dành cho PHP, đi kèm với nhiều tính năng bổ sung, đặc biệt hữu ích cho các website có lưu lượng truy cập cao hoặc cần xử lý phức tạp. PHP-FPM là một phương pháp hiệu quả để xử lý nội dung động trên website, giúp cải thiện tốc độ một cách đáng kể.

Cơ chế hoạt động của PHP-FPM dựa trên việc duy trì các pool (nhóm các worker sẵn sàng xử lý mã PHP). Những tiến trình PHP này được giữ ở trạng thái persistent (liên tục), cho phép xử lý các truy vấn ngay lập tức mà không cần khởi tạo lại tiến trình PHP từ đầu. Nhờ đó, PHP-FPM không chỉ tối ưu hóa môi trường PHP mà còn nâng cao hiệu suất tổng thể của các ứng dụng web một cách rõ rệt.
Với khả năng xử lý hiệu quả và tốc độ vượt trội, PHP-FPM là lựa chọn không thể thiếu để cải thiện hiệu suất cho các trang web hiện đại.
CGI là gì?
CGI (Common Gateway Interface) là một phần mềm lập trình được thiết kế để làm trung gian giữa máy chủ và các chương trình, dựa trên các thông số được định nghĩa rõ ràng.
Không chỉ vậy, CGI còn hỗ trợ xây dựng chương trình từ các website. Sau khi tiếp nhận dữ liệu từ website dưới dạng HTML, phần mềm này sẽ chuyển tiếp thông tin qua các kênh kết nối Internet và đưa dữ liệu đến máy tính của người dùng một cách nhanh chóng.
FastCGI là gì?
FastCGI là một giao thức mở rộng được xây dựng dựa trên CGI nhằm cải thiện hiệu quả xử lý của máy chủ web. Giao thức này giúp máy chủ quản lý đồng thời một lượng lớn yêu cầu từ các trang web mà không làm giảm hiệu suất.
So với các phương pháp khác, FastCGI tiêu thụ ít tài nguyên CPU hơn nhưng vẫn đạt tốc độ gần như DSO. Bên cạnh đó, nó hỗ trợ các công cụ như eAccelerator để tối ưu hóa quá trình tải trang, mang lại trải nghiệm nhanh hơn cho người dùng.
Cách hoạt động của PHP-FPM
Cách hoạt động cụ thể của PHP-FPM như sau:
- Apache gửi code đến PHP-FPM thông qua một giao diện nhị phân tốc độ cao, gọi là FastCGI.
- Sau đó một supervisor sẽ chọn worker từ trong pool rồi gán code nhận được.
- Worker bây giờ thực thi code và trả kết quả về lại cho Apache để chuyển đến trình duyệt web.
- Sau khi worker hoàn tất, nó sẽ quay lại pool và tiếp tục đợi thực thi code.

Nếu có quá nhiều kết nối đồng thời, đôi khi hệ thống phải đợi đến khi có một worker nào đó khả dụng. Tuy nhiên nó sẽ không bao giờ tiêu thụ toàn bộ tài nguyên của server, vì vậy hiệu quả hơn các phương pháp khác ở trên web server lớn.
Các tính năng chính của PHP-FPM là gì?
Dưới đây là những tính năng nổi bật khiến PHP-FPM trở thành một công cụ mạnh mẽ trong việc quản lý các website có lưu lượng truy cập cao:
- Quản lý tác vụ độc lập: PHP-FPM có khả năng khởi tạo và kết thúc các tác vụ một cách độc lập, giúp tối ưu hóa quy trình xử lý.
- Thích nghi với nhiều môi trường làm việc: Công cụ này có thể hoạt động linh hoạt trong các môi trường khác nhau, bao gồm các cổng (port), mẫu ghi log (logging patterns) và xử lý tệp tải lên (file uploads).
- Tận dụng tệp cấu hình sẵn có: PHP-FPM sử dụng các tệp cấu hình hiện tại để hoàn thành yêu cầu và xóa dữ liệu sau khi xử lý, đảm bảo hiệu suất tối ưu.
- Quản lý dữ liệu hiệu quả: Công cụ này hỗ trợ xử lý dữ liệu từ cơ sở dữ liệu và các website có lưu lượng truy cập lớn, đảm bảo khả năng chịu tải cao.
- Cải thiện bảo mật: PHP-FPM tăng cường các biện pháp bảo mật, đồng thời ngăn chặn tình trạng quá tải máy chủ.
- Khả năng tùy chỉnh cao: Hỗ trợ cấu hình linh hoạt với các thiết lập uid/gid/chroot/environment và php.ini khác nhau, mang lại sự linh hoạt trong quản lý hệ thống.
- Tối ưu hóa hiệu suất: Cung cấp nhiều tùy chọn để tinh chỉnh hiệu suất, giúp tăng tốc độ xử lý và giảm thiểu tài nguyên tiêu thụ.

Những tính năng này khiến PHP-FPM trở thành lựa chọn lý tưởng cho việc quản lý hiệu suất và bảo mật của các website hiện đại, đặc biệt là những trang có lượng truy cập lớn hoặc yêu cầu xử lý phức tạp.
Một số loại PHP Handler khác
DSO là gì?
DSO, hay còn gọi là mod_php, là một kiểu cấu hình cũ của PHP Handler nhưng vẫn được đánh giá là nhanh nhất. DSO cho phép PHP chạy như một module của Apache, nghĩa là các PHP script sẽ được thực thi dưới quyền user mặc định của Apache, ‘nobody’.
Hạn chế của DSO:
- Các file được PHP script tạo ra sẽ thuộc quyền sở hữu của user ‘nobody’, khiến chúng không thể được truy cập từ trình duyệt web. Điều này thường gây ra sự cố cho người dùng WordPress, đặc biệt khi sử dụng tính năng upload tệp hoặc tự động cập nhật.
- Bảo mật kém: Nếu hacker phát hiện lỗ hổng trong PHP script, họ có thể sử dụng quyền hạn của user ‘nobody’ để thực thi các file độc hại, thậm chí xâm nhập vào các file hệ thống. Giải pháp duy nhất là luôn cập nhật PHP lên phiên bản mới nhất.
SuPHP là gì?
SuPHP là một PHP Handler hoạt động dưới dạng CGI module, nhưng có điểm khác biệt quan trọng: các PHP script được thực thi với quyền sở hữu của user chạy script đó. Đây là phương pháp được cPanel khuyến nghị sử dụng để đảm bảo an toàn và dễ dàng quản lý.
Lợi ích của SuPHP:
- Các file upload lên website sẽ được gán quyền chính xác cho user thực hiện thao tác đó. Với SuPHP hoặc FastCGI, các tính năng như upload file và auto update trên WordPress hoạt động hiệu quả hơn.
- Về bảo mật, SuPHP vượt trội hơn DSO hoặc CGI vì nó ngăn chặn các PHP script không xác định quyền sở hữu được thực thi. Điều này đảm bảo rằng nếu một tài khoản bị hack, mã độc sẽ không thể lây nhiễm sang các tài khoản khác.
Nhược điểm của SuPHP:
- Tiêu thụ nhiều tài nguyên CPU hơn các handler khác.
- Không tương thích với Opcode Cache như xCache.
Trong trường hợp máy chủ của bạn có CPU load cao khi sử dụng SuPHP, bạn có thể chuyển sang các giải pháp khác như DSO hoặc FastCGI để cải thiện hiệu năng.
So sánh PHP-FPM và PHP-CGI
Cả PHP-FPM và CGI đều là các công cụ được thiết kế để hỗ trợ máy chủ trong việc xử lý các ứng dụng web khi kết nối internet. Mặc dù được sử dụng rộng rãi, hai công cụ này lại sở hữu những ưu và nhược điểm khác nhau, cụ thể như sau:
Ưu và nhược điểm của PHP-FPM
Cung cấp hiệu suất cao, ổn định và bảo mật hơn so với CGI.
Chạy các PHP Scripts dưới quyền sở hữu của chính PHP Scripts đó, tăng tính an toàn và kiểm soát.
Tăng tốc độ tải trang, cải thiện trải nghiệm người dùng và khả năng truy cập, từ đó tăng lưu lượng truy cập web.
Tiêu tốn nhiều bộ nhớ RAM khi hoạt động.
Mặc dù có nhược điểm về việc sử dụng nhiều RAM, nhưng PHP-FPM vẫn là lựa chọn hàng đầu cho các trang web cần tốc độ tải nhanh, bảo mật cao và tối ưu tài nguyên CPU.
Ưu điểm và nhược điểm CGI so với PHP-FPM là gì?
Là công cụ tiên phong trong việc tạo ra các trang web động.
Có thể hoạt động độc lập trên máy chủ và hỗ trợ nhiều ngôn ngữ lập trình khác nhau như Python, Tcl, C/C++, Java.
Tương thích tốt với các hệ thống máy chủ sử dụng giao thức kết nối cơ bản.
Có thể mở rộng khả năng bằng cách tích hợp với các module hỗ trợ khác, giúp cải thiện tính năng và hiệu quả.
Hiệu suất thấp so với PHP-FPM do phải khởi tạo tiến trình mới cho mỗi yêu cầu truy cập web động.
Tiêu tốn tài nguyên CPU, dẫn đến giảm tốc độ xử lý và tải trang.
Không tối ưu như PHP-FPM trong việc tận dụng tài nguyên hệ thống.
Dần mất vị thế do không đáp ứng được yêu cầu về tốc độ và hiệu suất trên các trang web hiện đại.
Mặc dù CGI là công cụ tiên phong trong việc phát triển web động, nhưng hạn chế về hiệu suất và tài nguyên đã khiến nó dần bị thay thế bởi các giải pháp như PHP-FPM, vốn tối ưu hơn trong môi trường web hiện đại.
Tóm lại, nếu bạn sở hữu website có traffic lớn và tài nguyên server thấp thì PHP-FPM sẽ là một lựa chọn hợp lý. Mặt khác, các website cơ bản nên sử dụng PHP-CGI vì khả năng thực thi code PHP tốt hơn, đồng thời cũng không sử dụng quá nhiều tài nguyên của các website nhỏ.
VPS NVMe Vietnix là giải pháp tối ưu cho website có lưu lượng truy cập lớn. Với cấu hình mạnh mẽ, ổ cứng NVMe tốc độ cao, CPU Platinum hiện đại, dịch vụ đảm bảo website tải nhanh dưới 1 giây và hoạt động ổn định ngay cả khi truy cập tăng cao.
Ngoài ra, bạn được toàn quyền quản lý máy chủ, cùng tính năng backup tự động hàng tuần, giúp bảo vệ dữ liệu an toàn. VPS NVMe Vietnix là lựa chọn hoàn hảo để nâng cao hiệu suất website. Trải nghiệm ngay hôm nay!
Cách sử dụng PHP-FPM với cPanel và EasyApache
Việc kích hoạt và cấu hình PHP-FPM trong cPanel & WHM tương đối đơn giản. Người dùng có thể tùy chọn miền sử dụng PHP-FPM và đặt các biến cấu hình có thể ảnh hưởng đến PHP-FPM.
Trước hết, hãy bật System PHP-FPM trong MultiPHP Manager.

Sau khi bật lên, WHM vẫn chưa kích hoạt PHP-FPM cho mọi domain có sẵn.
Ta có thể buộc mọi tài khoản trên server sử dụng PHP-FPM bằng cách click vào nút Convert All Accounts to PHP-FPM.

Ngoài ra, ta cũng có thể kích hoạt PHP-FPM cho từng domain trong bảng ở cuối trang.
Chọn domain rồi nhấn vào On trong menu drop-down như hình bên dưới:

1. Cấu hình PHP-FPM trong cPanel
Sau khi kích hoạt PHP-FPM, ta có thể cấu hình các cài đặt mặc định của của thống và cả cài đặt cho từng domain cụ thể trong MultiPHP Manager.
Click vào tab System PHP-FPM Configuration.

Có ba cài đặt pool cho người dùng thay đổi. Các giá trị mặc định gồm có:
- Max Requests: Số lượng request mỗi worker nên thực thi trước khi tự restart. Cài đặt này giúp hạn chế việc rò rỉ bộ nhớ. Giá trị mặc định 20 tương đối ổn với hầu hết các web hosting, nhưng ta nên đặt thành 40 hoặc 60 với các server có traffic lớn.
- Process Idle Timeout: Xác định thời gian chờ của các worker rảnh rỗi (idle) trước khi tự tắt. Các worker rảnh rỗi này dù không tiêu thụ tài nguyên, nhưng ta vẫn nên tắt các worker này sớm để giảm thời gian khởi tạo. Giá trị mặc định là 10, tương đối thấp với nhiều server có traffic lớn.
- Max Children: Số lượng worker tối đa trong mỗi pool, gái trị mặc định là 5.
Có rất nhiều yếu tố ảnh hưởng đến những giá trị thiết lập tối ưu, bao gồm cả code server chạy và số lượng RAM mà hệ thống có.
2. Cách hoạt động của module cPanel PHP-FPM là gì?
Giao diện của WHM có hầu hết các cấu hình cài đặt quan trọng, người dùng có thể tham khảo thêm trong tài liệu của PHP. Để thêm hoặc chỉnh sửa các cài đặt, ta cần chỉnh sửa file config trên command line của server, hoặc trong cPanel & WHM File Manager.
Hai file config hệ thống quan trọng nhất là:
- /var/cpanel/ApachePHPFPM/system.yaml
- /var/cpanel/ApachePHPFPM/system_pool_defaults.yaml
WHM không tạo ra các file này vì hệ thống không cần đến, tuy nhiên người dùng vẫn có thể dễ dàng tạo và thêm directive để ghi đề các thiết lập mặc định như sau:
touch /var/cpanel/ApachePHPFPM/system.yaml
touch /var/cpanel/ApachePHPFPM/system_pool_defaults.yaml
Tạo directory:
mkdir -p /var/cpanel/ApachePHPFPM/
Trong các file này, nhập các directive khác để ghi đè lên directive mặc định của hệ thống. Chẳng hạn, nếu bạn muốn đổi emergency_restart_threshold từ giá trị mặc định 0 thành 10 thì file system_pool_defaults.yaml sẽ có dạng như sau:

Lưu ý: Trong tài liệu của PHP còn có một số directive được định dạng bằng dấu chấm (.) hay nhiều kí tự khác. Khi thêm các directive vào file config, những ký tự này sẽ được thay thành dấu “_”.
3. Tạo User Pool trong PHP-FPM
Bây giờ ta sẽ tìm hiểu cách tạo và cấu hình user pool thủ công trong PHP-FPM. Đây là nhóm các worker được sử dụng bởi trang host trên miền của server người dùng.
Module PHP-FPM tạo một worker pool cho một miền nếu nó xác định được một file config trong:
/var/cpanel/userdata/[user]/[domain].php_fpm.yaml
Trong đó, thay [user] và [domain] thành các giá trị tương ứng dụng server. Ta có thể tạo file này hoặc activate PHP-FPM cho một domain cụ thể trong WHM để tự động tạo file:

Cũng như các file hệ thống, ta có thể thêm directive để cấu hình user pool. Sau khi tạo và chỉnh sửa file .yaml xong, chạy lệnh sau để thêm directive vào file config của Apache và đồng thời restart lại PHP-FPM:
/scripts/php_fpm_config – rebuild
Cách cấu hình PHP-FPM với NGINX
Yêu cầu:
- Có khả năng mở một SSH session trên hệ thống Ubuntu 18.05 bằng root hay sudo user.
- Cài đặt sẵn NGINX và PHP trên hê thống.
>> Xem thêm: Session là gì? Toàn bộ kiến thức về Session bạn cần biết
1. Cài đặt PHP-FPM
Nginx không thể tự chạy script PHP mà cần một module như PHP-FPM để có thể quản lý script PHP hiệu quả. Mặt khác, PHP-FPM lại hoạt động ngoài môi trường Nginx bằng cách tạo ra chính process của riêng nó. Vì vậy, khi người dùng yêu cầu một trang PHP thì server nginx sẽ chuyển nó đến dịch vụ PHP-FPM thông qua FastCGI.
Quá trình cài đặt PHP-FPM trong Ubuntu 18.05 tùy vào phiên bản PHP, bạn có thể kiểm tra tài liệu sử dụng trước khi bắt đầu bước này. Đoạn code dưới đây cho phép cài đặt FPM trên phiên bản PHP 7.3:
# apt-get install php7.3-fpm
Dịch vụ FPM sẽ tự động khởi chạy sau khi quá trình hoàn tất. Người dùng có thể xác thực việc cài đặt bằng lệnh systemd sau:
# systemctl status php7.3-fpm
● php7.3-fpm.service - The PHP 7.3 FastCGI Process Manager
Loaded: loaded (/lib/systemd/system/php7.3-fpm.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2019-02-17 06:29:31 UTC; 30s ago
Docs: man:php-fpm7.3(8)
Main PID: 32210 (php-fpm7.3)
Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec"
Tasks: 3 (limit: 1152)
CGroup: /system.slice/php7.3-fpm.service
├─32210 php-fpm: master process (/etc/php/7.3/fpm/php-fpm.conf)
├─32235 php-fpm: pool www
└─32236 php-fpm: pool www
2. Cấu hình PHP-FPM Pool
Dịch vụ php-fpm có tạo một pool mặc định, cấu hình của pool này có thể được tìm thấy trong folder /etc/php/7.3/fpm/pool.d. Người dùng có thể tùy chỉnh pool mặc định theo ý muốn, nhưng ta nên tạo các pool riêng biệt để có thể kiểm soát việc phân bổ tài nguyên cho mỗi FPM process tốt hơn.
Ngoài ra, việc phân tách các pool cũng cho phép chung chạy độc lập với nhau, khi đó mỗi ứng dụng php có thể được cấu hình bằng các cài đặt cache của riêng nó qua PHP-FPM. Mọi thay đổi trong cấu hình của một pool sẽ không yêu cầu người dùng dừng hay khởi động bất kỳ pool nào khác.
Bây giờ hãy cũng tạo một pool FPM để chạy ứng dụng PHP thông qua một user riêng biệt. Trước tiên, tạo user mới có các đặc quyền riêng với pool:
# groupadd wordpress_user
# useradd -g wordpress_user wordpress_user
Tiếp theo, chuyển sang directory cấu hình của FPM để tạo một file config bằng text editor bất kỳ:
# cd /etc/php/7.3/fpm/pool.d
# vi wordpress_pool.conf
[wordpress_site]
user = wordpress_user
group = wordpress_user
listen = /var/run/php7.2-fpm-wordpress-site.sock
listen.owner = www-data
listen.group = www-data
php_admin_value[disable_functions] = exec,passthru,shell_exec,system
php_admin_flag[allow_url_fopen] = off
; Choose how the process manager will control the number of child processes.
pm = dynamic
pm.max_children = 75
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
pm.process_idle_timeout = 10s
Thông tin chi tiết về các tùy chọn cấu hình và giá trị:
- [wordpress_site]: Tên của pool, không được trùng nhau.
- user and group: User và group mà pool sẽ chạy.
- listen: Tên socket file của pool.
- listen.owner and listen.group: Trùng với user và group mà nginx đang chạy.
- php_admin_value: Cho phép đặt các giá trị cấu hình PHP tùy chỉnh.
- php_admin_flag: Cho phép đặt boolean flag.
- pm: Cài đặt trình quản lý các process, giá trị Dynamic cho biết số lượng process con được đặt động, dựa trên các directive dưới đây:
- pm.max_children: Số lượng con (children) tối đa có thể tồn tại cùng lúc.
- pm.start_servers: Số lượng children được tạo khi khởi động.
- pm.min_spare_servers: Số lượng children tối thiểu ở trạng thái ‘idle’ (rảnh rỗi – đang đợi xử lý). Nếu số lượng idle process nhỏ hơn giá trị này, một số children sẽ được tạo thêm.
- pm.max_spare_servers: Số lượng children tối đa ở trạng thái ‘idle’. Nếu số lượng idle process lớn hơn thì một số children sẽ bị hủy.
- pm.process_idle_timeout: Số lượng idle process tối đa, chỉ dùng khi giá trị của pm được đặt thành Dynamic.
Bên cạnh đó, ta cũng có thể truyền một số biến môi trường hệ thống vào dịch vụ php-fpm bằng các lệnh như nv['PHP_FOO'] = $bar
.
Chẳng hạn, ta có thể thêm option sau vào file config để đặt hostname và vị trí folder tạm thời cho môi trường PHP.
...
...
env[HOSTNAME] = $HOSTNAME
env[TMP] = /tmp
...
...
Ngoài ra, các cài đặt cho process manager ở file config của pool ở trên được đặt thành động. Một số tùy chọn khác gồm có:
- Static: Số lượng process PHP duy trì sẽ được cố định.
- ondemand: Không tạo children khi khởi động. Các children sẽ được phân nhánh (fork) khi nhận được request mới từ server.
Sau khi hoàn tất việc tạo file config, restart lại dịch vụ fpm để áp dụng các thay đổi mới:
# systemctl start php7.3-fpm
FPM pool sẽ được tạo ngay lập tức để phục vụ các trang PHP. Lưu ý rằng ta cũng có thể tạo một dịch vụ systemd bằng cách chỉ định những file config FPM ở trên để khởi động/dừng các pool mà không ảnh hưởng nhau.
3. Cấu hình NGINX cho PHP-FPM
Bây giờ ta cần tạo một server block NGINX để sử dụng pool vừa tạo ở trên. Cụ thể, chỉnh sửa file config NGINX rồi truyền đường dẫn đến file socket bằng option fastcgi_pass
:
server {
listen 80;
server_name example.journaldev.com;
root /var/www/html/wordpress;
access_log /var/log/nginx/example.journaldev.com-access.log;
error_log /var/log/nginx/example.journaldev.com-error.log error;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php7.2-fpm-wordpress-site.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
}

Đảm bảo cú pháp các cấu hình đều chính xác, sau đó restart lại NGINX bằng lệnh sau:
# nginx-t
# systemctl restart nginx
4. Kiểm tra cấu hình PHP-FPM NGINX
Để kiểm tra xem file config NGINX có đang sử dụng pool FPM ở trên hay không, ta cần tạo một file PHP info trong web root bằng lệnh sau:
# cd /var/www/html/wordpress
# echo "<?php echo phpinfo();?>" > info.php
Trong đó thay phần đường dẫn /var/www/html/wordpress thành giá trị tương ứng của môi trường.
Tiếp theo, trỏ trình duyệt web đến trang PHP info vừa tạo. Để ý rằng các biến $_SERVER[‘USER’] và $_SERVER[‘HOME’] đều đang trỏ đến wordpress_user và /home/wordpress_user đã được thiết lập trong file config FPM ở bước trước. Vì vậy có thể yên tâm rằng NGINX đang phục vụ các trang PHP sử dụng FPM pool ta đã tạo.
Vietnix – Dịch vụ VPS chuyên nghiệp, nền tảng mạnh mẽ cho doanh nghiệp
Vietnix mang đến dịch vụ VPS chuyên nghiệp, được thiết kế để phục vụ tối đa nhu cầu của các doanh nghiệp. Với công nghệ hiện đại và cơ sở hạ tầng tiên tiến, Vietnix cam kết giúp website vận hành nhanh chóng, an toàn và ổn định. Đội ngũ hỗ trợ kỹ thuật giàu kinh nghiệm luôn sẵn sàng 24/7 để tư vấn và xử lý mọi vấn đề phát sinh. Lựa chọn Vietnix, bạn sẽ có nền tảng trực tuyến mạnh mẽ, uy tín cho doanh nghiệp của mình.
Thông tin liên hệ:
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh
- Hotline: 1800 1093
- Email: sales@vietnix.com.vn
- Website: https://vietnix.vn/
Câu hỏi thường gặp
PHP-FPM có tốt hơn không?
PHP-FPM nhanh hơn các phương pháp dựa trên CGI truyền thống, chẳng hạn như SUPHP, cho môi trường PHP nhiều người dùng. Nó không làm quá tải bộ nhớ của hệ thống với PHP từ các quy trình Apache. Các tính năng của PHP-FPM bao gồm: Sinh sản quy trình thích ứng
FPM là viết tắt của từ gì trong PHP-FPM?
FPM (FastCGI Process Manager) là một triển khai FastCGI PHP chính có chứa một số tính năng (chủ yếu) hữu ích cho các trang web tải nặng.
WordPress có cần PHP-FPM không?
Để chạy WordPress, bạn cần một máy chủ web, máy chủ cơ sở dữ liệu và ngôn ngữ kịch bản PHP. Để WordPress hoạt động ở mức hiệu suất tối đa, bạn phải định cấu hình nhiều máy chủ khác nhau này theo cài đặt được đề xuất của WordPress.
Làm cách nào để start PHP-FPM?
Trên Windows:
Open Services trong Management Console: Start > Run > “services.msc” > OK.
Chọn php-fpm từ list.
Nhấn chuột phải và chọn Start.
PHP-FPM có an toàn không?
Vì mỗi yêu cầu được xử lý bởi một quy trình riêng biệt (được sử dụng lại) trong PHP-FPM, nên an toàn khi sử dụng mô-đun với PHP-FPM.
Với những ưu điểm vượt trội về hiệu suất, khả năng tối ưu tài nguyên, tính linh hoạt và bảo mật, PHP-FPM là một giải pháp lý tưởng cho những ai muốn tăng tốc và nâng cao hiệu quả hoạt động của website. Hy vọng những chia sẻ trên đã giúp bạn hiểu rõ hơn về PHP-FPM là gì và cách ứng dụng nó vào việc cải thiện tốc độ website. Để khám phá thêm các giải pháp tối ưu khác, bạn có thể tham khảo một số bài viết dưới đây:
theo như bài thì e thấy cả cgi và fpm đều tách biệt với webserver. Nhưng với cgi thì được coi là ưu điểm bảo mật. Con fpm thì ko thấy đề cập gì. Không biết 2 tư tưởng có gì khác nhau ạ?