Hotline : 07 088 44444
Thích
Chia sẻ

[cPanel] Sử dụng PHP-FPM với cPanel

22/09/2021

Hiệu suất của PHP là một vấn đề quan trọng với nhiều web host. PHP là một ngôn ngữ lập trình server được sử dụng rộng rãi nhất ở trên web. Ngày nay, các hệ thống quản lý nội dung và ứng dụng thương mại điện tử phổ biến nhất đều được viết bằng PHP, bao gồm cả WordPress, Joomla, Drupal và Magento,… PHP-FPM giúp tăng tốc độ thực thi của PHP lên đáng kể, giúp nó trở thành một trong những công cụ cải thiện hiệu suất mạnh mẽ nhất cho PHP. Bài viết này sẽ đi sâu vào cách sử dụng PHP-FPM với cPanel.

PHP-FPM là gì?

PHP-FPM là một triển khai thay thế cho PHP, giúp các busy web nhanh hơn đáng kể, đồng thời giúp admin hệ thống kiểm soát mức tiêu thụ tài nguyên trên server của họ. Từ đó giúp hạn chế hiện tượng trang web bị chậm hay cạn kiệt tài nguyên của web server.

Một triển khai PHP, hay còn được gọi là runtime, có nhiệm vụ phiên dịch và thực thi code. Các runtime truyền thống như mod_PHP của Apache chạy bên trong web server. Việc này cũng có một số ưu điểm nhất định, nhưng mỗi kết nối sẽ tiêu tốn một phần tài nguyên của server khi nó tồn tại. Nếu có quá nhiều kết nối đồng thời, server có thể sẽ hết tài nguyên bộ nhớ. Do đó ảnh hưởng xấu đến hiệu suất của tất cả trang mà nó host.

Nhưng PHP-FPM thì lại khác: nó hoạt động bên ngoài web server và sử dụng một nhóm (pool) các worker process để thực thi code. Các worker này luôn sẵn sàng và đợi nhận request đến. Và bạn cũng có thể kiểm soát số lượng worker để tránh việc tiêu thụ RAM quá mức và ảnh hưởng thời gian xử lý của server.

Nó hoạt động như sau:

su-dung-php-fpm-voi-cpanel
  • Apache gửi code đến PHP-FPM thông qua một binary interface tốc độ cao, gọi là FastCGI.
  • Một supervisor process chọn worker process để xử lý, rồi đưa code cho worker đó.
  • Worker sẽ thực thi code rồi gửi kết quả lại Apache, sau đó nó sẽ gửi đến web browser.
  • Khi hoàn thành, worker sẽ quay lại nhóm để chờ thực thi một đoạn code khác.

Nếu có quá nhiều kết nối đồng thời, các kết nối có thể sẽ phải chờ các worker, nhưng nó sẽ không bao giờ tiêu tốn hết tài nguyên của server. Trên các web server busy, các nhóm worker thường nhanh hơn và hoạt động hiệu quả hơn.

Sử dụng PHP-FPM trong cPanel

Việc cài đặt, kích hoạt và sử dụng PHP-FPM với cPanel là rất dễ dàng và nhanh chóng. Bạn có thể chọn domain nào có thể sử dụng PHP-FPM, rồi đặt các biến cấu hình ảnh hưởng đến hoạt động của nó.

Bước đầu tiên là bật PHP-FPM ở trong cài đặt System PHP-FPM trong MultiPHP Manager của WHM.

sử dụng PHP-FPM

Sau khi click vào Turn On, PHP-WHM sẽ khả dụng trên WHM. Tuy nhiên, nó chưa được tự động activate cho tất cả domain. Bạn có thể buộc tất cả tài khoản trên server dùng PHP-FPM bằng cách click vào Convert All Accounts to PHP-FPM.

system PHP Version

Hay bên cạnh đó, bạn có thể activate PHP-FPM cho từng domain riêng lẻ ở trong bảng phía dưới trang. Để kích hoạt cho nhiều domain 1 lúc, chọn các domain trong bảng rồi chọn nút On trong menu drop-down.

set PHP Version per Domain

Cấu hình PHP-FPM trong cPanel

Sau khi kích hoạt xong PHP-FPM, bây giờ bạn cần cấu hình cả các mặc định hệ thống lẫn các cài đặt cho từng domain riêng lẻ trong MultiPHP Manager.

Click vào tab System PHP-FPM Configuration.

MultiPHP Manger

Trong phần này, có 3 nhóm cài đặt để bạn có thể thay đổi. Đây là các giá trị mặc định được áp dụng cho các nhóm domain.

  • Max Requests: giá trị này cho biết số lượng mỗi worker process nên thực thi trước khi nó tự restart. Cài đặt này rất hữu ích để khắc phục các sự cố liên quan đến việc thiếu bộ nhớ. Giá trị mặc định là 20, có thể chấp nhận được với hầu hết các trường hợp của web hosting. Nhưng bạn có thể tăng lên đến 40 hay 60 trên những server có lượng truy cập lớn.
  • Process Idle Timeout: Thời gian idle worker chờ đợi trước khi shut down. Idle process sẽ ngốn tài nguyên, nên chúng ta không muốn có quá nhiều process như vậy tồn tại. Nhưng ta cũng không muốn các process này shut down quá sớm vì cần phải có 1 thời gian để bắt đầu lại các process mới. Giá trị mặc định là 10 (giây), tuy nhiên giá trị này có thể hơi thấp cho các server bận rộn, lưu lượng truy cập lớn.
  • Max Children: chỉ số lượng worker process tối đa có trong nhóm. Giá trị mặc định là 5.

Có nhiều yếu tố ảnh hưởng đến những giá trị tối ưu cho các cài đặt này, trong đó gồm cả code mà server chạy và số lượng RAM mà nó có.

PHP INI Directives

Cách trên sẽ có tác dụng trên toàn bộ hệ thống. Ngoài ra, bạn cũng có thể cấu hình các domain riêng lẻ ở trong WHM interface.

WHM Interface

Trong bảng phía dưới MultiPHP Manager, click vào Edit PHP-FPM ở phía dưới hàng domain. Các tùy chọn hiện ra cũng giống như các tùy chọn trong giao diện cấu hình toàn hệ thống ở trên.

su-dung-php-fpm-voi-cpanel

Cách hoạt động của Mô-đun PHP-FPM cPanel

Để thêm hay chỉnh sửa các mô đun, bạn cần phải sửa file cấu hình trên command line của server hay trong File Manager của cPanel & WHM.

Có hai file cấu hình toàn 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 các file này vì hệ thống không cần đến nó, nhưng bạn có thể tự tạo rồi thêm các directive vào để ghi đè giá trị mặc định.

touch /var/cpanel/ApachePHPFPM/system.yaml
touch /var/cpanel/ApachePHPFPM/system_pool_defaults.yaml

Hoặc bạn cũng có thể tạo directory bằng lệnh:

mkdir -p /var/cpanel/ApachePHPFPM/

Trong các file này, chỉ cần nhập những directive khác directive trong hệ thống, hoặc ghi đè lên directive hệ thống. Ví dụ, nếu bạn muốn thay đổi directive emergency_restart_threshold (mặc định là 0), file system_pool_defaults.yaml sẽ như sau:

su-dung-php-fpm-voi-cpanel

Ba dấu “-” ở đầu file là một phần của ngôn ngữ markup YAML, và bắt buộc phải có. File cấu hình sẽ không thể hoạt động mà không có nó.

Trong tài liệu PHP, bạn cũng có thể thấy nhiều directive có định dạng dấu chấm (.) hay nhiều ký tự khác như syslog.facility. Khi thêm các directive vào file cấu hình, các kí tự này phải được thay thế bằng dấu “_”. Ví dụ, thay vì syslog.facility, ta dùng syslog_facility.

Tạo User Pools trong PHP-FPM

Bước cuối trong hướng dẫn sử dụng PHP-FPM với cPanel là xem cách tạo và cấu hình user pool (nhóm người dùng) trong PHP-FPM. Đây là các worker pool được dùng bởi những trang host trên domain của server bạn.

Mô đun PHP-FPM tạo một worker pool cho domain nếu nó tìm thấy một file cấu hình ở trong:

/var/cpanel/userdata/[user]/[domain].php_fpm.yaml

Trong đó hãy thay [user] và [domain] bằng giá trị tương ứng của server bạn. Bạn có thể tạo file này hoặc activate PHP-FPM cho một domain trong WHM. Sau đó nó sẽ được tự động tạo.

su-dung-php-fpm-voi-cpanel

Tối thiểu, file phải chứa thông tin sau:

Với file hệ thống, bạn có thể thêm directive để cấu hình user pool. Sau khi tạo hoặc chỉnh sửa file .yaml, chạy lệnh sau:

/scripts/php_fpm_config – rebuild

Script sẽ thêm directive vào file cấu hình của Apache rồi restart lại PHP-FPM, sau đó pool mới sẽ xuất hiện và bắt đầu chạy. Bạn có thể tìm thêm nhiều thông tin về việc tạo user pools ở trong PHP-FP User Pools.

Kết luận

PHP-FPM giúp cải thiện hiệu suất và tốc độ đáng kể cho các server bận rộn và có lưu lượng truy cập cao. Và quan trọng không kém, nó cũng giúp các web server tận dụng tối đa tài nguyên server, giúp giảm chi phí trong việc cung cấp trải nghiệm tối đa cho khách hàng và người dùng.

Với cPanel & WHM, PHP-FPM có thể được kích hoạt chỉ trong vài giây, và được cấu hình hoàn chỉnh thành một giao diện trực quan vô cùng đơn giản. Hi vọng hướng dẫn sử dụng PHP-FPM với cPanel giúp các bạn dễ dàng thực hiện các thao tác với PHP-FPM hơn, chúc bạn thành công!

Nếu bạn có thắc mắc hay có vấn đề cần hỗ trợ, bạn có thể liên hệ trực tiếp với Vietnix thông qua các kênh sau:
  • Hotline: 1800 1093 - 07 088 44444
  • Email: support@vietnix.vn
  • Hoặc chat trực tiếp với Vietnix thông qua biểu tượng Livechat ở góc phải màn hình. Đội ngũ chuyên viên của chúng tôi luôn sẵn sàng tư vấn và hỗ trợ bạn 24/7.
Vietnix hiện đang có chương trình khuyến mãi lớn nhất trong năm, giảm giá TRỌN ĐỜI: Đăng ký dùng thử ngay và Vietnix sẽ hoàn tiền 100% nếu quý khách không hài lòng với chất lượng sản phẩm, dịch vụ!
Mình là Bo - admin của Quản Trị Linux. Mình đã có 10 năm làm việc trong mảng System, Network, Security và đã trải nghiệm qua các chứng chỉ như CCNP, CISSP, CISA, đặc biệt là chống tấn công DDoS. Gần đây mình trải nghiệm thêm Digital Marketing và đã hòan thành chứng chỉ CDMP của PersonVUE. Mình rất thích được chia sẻ và hỗ trợ cho mọi người, nhất là các bạn sinh viên. Hãy kết nối với mình nhé!
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments