php-fpm cho phép tăng tốc nhiều php, đặc biệt đối với các máy chủ web có lưu lượng truy cập lớn. Bài viết này sẽ giải thích sâu về php-fpm là gì và cách hoạt động của php-fpm cũng như cấu hình ph-fpm thông qua cpanel và nginx. Đọc tiếp!
php-fpm là gì?
php-fpm là viết tắt của fastcgi Process Manager là một triển khai php giúp tăng tốc độ thực thi của các ứng dụng web trong khi cho phép quản trị viên kiểm soát mức tiêu thụ tài nguyên trên máy chủ.
Triển khai php (còn gọi là thời gian chạy) thông dịch và thực thi mã. Các thời gian chạy truyền thống như mod_php của apache hoạt động trong các máy chủ web. Trong cách triển khai này, mỗi kết nối tồn tại tiêu thụ một phần tài nguyên cụ thể của máy chủ. Do đó, nếu có quá nhiều kết nối đồng thời, máy chủ sẽ nhanh hết tài nguyên, ảnh hưởng nghiêm trọng đến hiệu suất của website.
Mặt khác, php-fpm chạy bên ngoài máy chủ web và sử dụng một tập hợp các quy trình để thực thi mã (tập hợp này thường được gọi là nhóm và các quy trình này được gọi là quy trình công nhân) . Các công nhân sẽ sẵn sàng chờ các yêu cầu đến và cho phép quản trị viên quản lý số lượng công nhân trong mỗi hồ bơi.
Cách hoạt động của php-fpm
php-fpm hoạt động như sau:
- apache gửi mã tới php-fpm thông qua một giao diện nhị phân tốc độ cao được gọi là fastcgi.
- Người giám sát sau đó chọn công nhân từ nhóm và gán mã nhận được.
- worker hiện thực thi mã và trả kết quả về apache để gửi tới trình duyệt web.
- Sau khi trình xử lý kết thúc, trình xử lý sẽ trở lại nhóm và tiếp tục chờ thực thi mã.
Nếu có quá nhiều kết nối đồng thời, đôi khi hệ thống phải đợi cho đến khi có nhân viên. Nhưng nó không bao giờ tiêu tốn toàn bộ tài nguyên của máy chủ, vì vậy nó hiệu quả hơn các phương pháp khác trên các máy chủ web lớn.
Sự khác biệt giữa php-cgi và php-fpm
Khi chạy php thông qua một máy chủ web, có hai tùy chọn phổ biến: chạy nó bằng cgi của php hoặc chạy nó dưới dạng php-fpm. Vì vậy, sự khác biệt giữa hai là gì? Chúng ta cùng tìm hiểu trong phần tiếp theo của bài viết này nhé.
php-cgi
php-cgi là một giao thức giao tiếp giữa máy chủ web và các chương trình cgi. Chương trình cgi là bất kỳ chương trình nào được thiết kế để nhận và trả lại dữ liệu theo tiêu chuẩn cgi. Về cơ bản đây là một cách để chạy một tập lệnh phía máy chủ (php, perl, python) khi có yêu cầu http.
Chạy ứng dụng trên máy chủ web bằng cách thực thi tập lệnh php bằng ứng dụng cgi rất kém hiệu quả và hiếm khi được sử dụng vì cần có quy trình mới mỗi khi mã php cần được thực thi. Tuy nhiên, mỗi khi người dùng tải trang, php sẽ đọc các cài đặt. Vì vậy, nếu php đang chạy dưới dạng mô-đun, bất kỳ thay đổi nào trong tệp php.ini sẽ có hiệu lực cho đến khi người dùng khởi động lại máy chủ web. Do đó, cgi thường được sử dụng nếu người dùng cần kiểm tra nhiều cài đặt và xem phản hồi ngay lập tức của họ.
Hơn nữa, chạy một ứng dụng trên cgi là nó cô lập việc thực thi mã khỏi máy chủ web, điều này giúp tăng tính bảo mật của hệ thống. Ví dụ: một tập lệnh php xấu hoặc không an toàn được thực thi qua php-cgi sẽ không thể làm ảnh hưởng đến bảo mật của bất kỳ tệp nào khác bên ngoài miền mà nó nằm trong đó.
Ưu điểm
- Bảo mật tốt hơn fpm vì việc thực thi mã hoàn toàn độc lập với máy chủ web.
Nhược điểm
- Hiệu suất kém.
php-fpm
Đây là một daemon fastcgi thay thế php, cho phép các trang web xử lý tải nặng nhanh hơn thông qua các nhóm lưu trữ. php-fpm nhanh hơn các phương pháp dựa trên cgi truyền thống như suphp. Ngoài ra, việc triển khai này không làm quá tải bộ nhớ hệ thống với quá trình apache.
Một số tính năng của php-fpm bao gồm:
- Thống kê cơ bản (apache mod_status).
- Quản lý quy trình nâng cao.
- Sử dụng một php.ini khác để bắt đầu công việc.
- Ghi nhật ký & amp; stderr.
- Khởi động lại khẩn cấp trong trường hợp bộ nhớ cache opcode vô tình bị hỏng.
- Tăng tốc độ tải lên.
- Hỗ trợ ghi chậm.
Ưu điểm
- Tối ưu hóa cách chạy của các ứng dụng hiện đại.
- Hiệu suất mạnh mẽ và tiêu thụ tài nguyên thấp.
- Nó chiếm ít bộ nhớ hơn và có thể dễ dàng tải lại mà không cần dừng các truy vấn khác.
Nhược điểm
- Không an toàn như php-cgi.
- Yêu cầu nhiều cấu hình hơn php-cgi.
Nói chung, nếu trang web của bạn có nhiều lưu lượng truy cập và ít tài nguyên máy chủ, thì php-fpm sẽ là một lựa chọn hợp lý. Mặt khác, các trang web cơ bản nên sử dụng php-cgi vì nó có thể thực thi mã php tốt hơn và không chiếm quá nhiều tài nguyên cho các trang web nhỏ.
Cách sử dụng php-fpm với cpanel và easyapache
Kích hoạt và định cấu hình php-fpm whm trong cpanel & amp; đơn giản hơn . Người dùng có thể chọn tê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 tiên, hãy bật hệ thống php-fpm trong trình quản lý multiphp .
Khi được bật, whm vẫn không bật php-fpm cho tất cả các miền có sẵn .
Chúng tôi có thể buộc tất cả tài khoản trên máy chủ sử dụng php-fpm bằng cách nhấp vào nút Chuyển đổi tất cả tài khoản thành php-fpm .
Ngoài ra, bạn có thể bật php-fpm cho từng tên miền trong bảng ở cuối trang.
Chọn tên miền, sau đó nhấp vào vào trong trình đơn thả xuống, như được hiển thị bên dưới:
Định cấu hình php-fpm trong cpanel
Sau khi kích hoạt php-fpm, bạn có thể định cấu hình cài đặt mặc định của hệ thống và cài đặt miền cụ thể trong trình quản lý multiphp.
Nhấp vào Cấu hình php-fpm của hệ thống .
Người dùng có thể thay đổi ba cài đặt nhóm. Các giá trị mặc định bao gồm:
- Yêu cầu tối đa: Số lượng yêu cầu mà mỗi nhân viên phải thực hiện trước khi khởi động lại. Cài đặt này giúp hạn chế rò rỉ bộ nhớ. Giá trị mặc định là 20 phù hợp với hầu hết các máy chủ web, nhưng chúng tôi khuyên bạn nên đặt nó thành 40 hoặc 60 cho các máy chủ có lưu lượng truy cập cao.
- Thời gian chờ xử lý khi không hoạt động: Xác định thời gian chờ cho nhân viên không hoạt động (nhàn rỗi) trước khi tự tắt. Những công nhân nhàn rỗi này không tiêu tốn tài nguyên, nhưng chúng ta vẫn nên tắt những công nhân này trước để giảm thời gian khởi tạo. Giá trị mặc định là 10, tương đối thấp đối với nhiều máy chủ có lưu lượng truy cập cao.
- con tối đa: Số luồng công nhân tối đa trong mỗi nhóm, mặc định là 5.
Có nhiều yếu tố ảnh hưởng đến cài đặt tối ưu, bao gồm mã máy chủ đang chạy và dung lượng bộ nhớ trên hệ thống.
Mô-đun cpanel
php-fpm hoạt động như thế nào?
Giao diện của whm có hầu hết các cài đặt cấu hình quan trọng, người dùng có thể tham khảo tài liệu php để biết thêm nội dung. Để thêm hoặc chỉnh sửa cài đặt, chúng tôi cần chỉnh sửa tệp cấu hình trên dòng lệnh của máy chủ hoặc trong trình quản lý tệp cpanel & amp; whm.
Hai tệp cấu hình 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 tệp này vì hệ thống không cần chúng, nhưng người dùng vẫn có thể dễ dàng tạo và thêm lệnh vào cài đặt mặc định của tài liệu như sau:
Tạo thư mục:
Trong các tệp này, hãy nhập các lệnh khác để ghi đè các lệnh mặc định của hệ thống. Ví dụ: nếu bạn muốn thay đổi khẩn cấp_restart_threshold từ giá trị mặc định 0 thành 10, tệp system_pool_defaults.yaml sẽ trông như thế này:
Lưu ý: Một số lệnh trong tài liệu php được định dạng bằng dấu chấm (.) hoặc các ký tự khác. Khi thêm chỉ thị vào tệp cấu hình, các ký tự này sẽ được đổi thành “_”.
Tạo nhóm người dùng trong php-fpm
Bây giờ chúng ta sẽ tìm hiểu cách tạo và định cấu hình nhóm người dùng theo cách thủ công trong php-fpm. Đây là một nhóm công nhân được sử dụng bởi máy chủ lưu trữ trang web trên miền máy chủ của người dùng.
Mô-đun php-fpm tạo nhóm công nhân cho miền nếu nó xác định tệp cấu hình tại:
Tại đó, hãy thay thế [người dùng] và [miền] bằng các giá trị ứng dụng máy chủ thích hợp. Chúng tôi có thể tạo tệp này hoặc kích hoạt php-fpm trong whm cho một miền cụ thể để tự động tạo tệp:
Ngoài các tệp hệ thống, bạn có thể thêm các lệnh để định cấu hình nhóm người dùng. Sau khi tạo và chỉnh sửa tệp .yaml, hãy chạy lệnh sau để thêm chỉ thị vào tệp cấu hình apache và khởi động lại php-fpm:
Cách định cấu hình php-fpm với nginx
Yêu cầu:
- Có thể mở phiên ssh với tư cách người dùng root hoặc sudo trên hệ thống ubuntu 18.05.
- nginx và php được cài đặt sẵn trên hệ thống.
& gt; & gt; Xem thêm: Phiên là gì? Tất cả những gì bạn cần biết về các cuộc trò chuyện
Cài đặt php-fpm
nginx không thể tự chạy các tập lệnh php và yêu cầu một mô-đun như php-fpm để quản lý các tập lệnh php một cách hiệu quả. Mặt khác, php-fpm hoạt động bên ngoài môi trường nginx bằng cách tạo quy trình của riêng nó. Vì vậy, khi người dùng yêu cầu một trang php, máy chủ nginx sẽ chuyển nó đến dịch vụ php-fpm thông qua fastcgi.
Việc cài đặt php-fpm trên ubuntu 18.05 tùy thuộc vào phiên bản php, bạn có thể kiểm tra tài liệu trước khi bắt đầu bước này. Đoạn mã sau cho phép cài đặt fpm trên php phiên bản 7.3:
Dịch vụ fpm sẽ tự động bắt đầu sau khi quá trình hoàn tất. Người dùng có thể xác thực cài đặt bằng các lệnh systemd sau:
Định cấu hình nhóm php-fpm
Dịch vụ php-fpm tạo một nhóm mặc định có cấu hình có thể được tìm thấy trong thư mục /etc/php/7.3/fpm/pool.d. Người dùng có thể tùy chỉnh nhóm mặc định nếu cần, nhưng chúng ta nên tạo các nhóm riêng biệt để kiểm soát tốt hơn việc phân bổ tài nguyên cho mỗi quy trình fpm.
Hơn nữa, việc tách các nhóm cho phép các tài nguyên chung chạy độc lập với nhau, giúp bạn có thể định cấu hình từng ứng dụng php với cài đặt bộ nhớ cache của riêng nó thông qua php-fpm. Bất kỳ thay đổi nào đối với cấu hình nhóm không yêu cầu người dùng dừng hoặc bắt đầu bất kỳ nhóm nào khác.
Bây giờ cũng tạo một nhóm fpm để chạy các ứng dụng php với tư cách là một người dùng riêng biệt. Trước tiên, hãy tạo một người dùng mới với các quyền dành riêng cho nhóm:
Tiếp theo, thay đổi sang thư mục cấu hình của fpm và sử dụng bất kỳ trình soạn thảo văn bản nào để tạo tệp cấu hình:
Chi tiết về các tùy chọn và giá trị cấu hình:
- [wordpress_site] : Tên của nhóm, không được giống nhau.
- Người dùng và Nhóm : Người dùng và nhóm của nhóm sẽ sử dụng run.
- nghe : Tên tệp ổ cắm cho nhóm.
- hear.owner và listening.group : Đối sánh nginx người dùng và nhóm đang chạy dưới đó.
- 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 cờ boolean.
- pm : Đặt trình quản lý quy trình, giá trị động cho biết số lượng quy trình con cần đặt động, dựa trên chỉ thị sau:
- pm.max_children : Số lượng nút con tối đa có thể tồn tại cùng một lúc.
- pm.start_servers : số lượng nút con được tạo khi khởi động.
- pm.min_spare_servers : ở trạng thái “nhàn rỗi” ( Số trẻ em không hoạt động) tối thiểu. Nếu số lượng quy trình không hoạt động nhỏ hơn giá trị này, một số quy trình con bổ sung sẽ được tạo.
- pm.max_spare_servers : Số lượng tối đa các quy trình con ở trạng thái “không hoạt động”. Nếu số lượng quy trình không hoạt động lớn, một số quy trình con sẽ bị hủy.
- pm.process_idle_timeout : số lượng quy trình không hoạt động tối đa, chỉ được sử dụng khi giá trị của pm được đặt thành động.
Ngoài ra, bạn có thể chuyển một số biến môi trường hệ thống sang dịch vụ php-fpm bằng cách sử dụng các lệnh như nv [‘php_foo’] = $ bar.
Ví dụ: bạn có thể thêm các tùy chọn sau vào tệp cấu hình của mình để đặt tên máy chủ và vị trí thư mục tạm thời cho môi trường php của bạn.
Ngoài ra, cài đặt cho trình quản lý quy trình trong tệp cấu hình nhóm ở trên được đặt thành động. Một số tùy chọn khác bao gồm:
- Tĩnh: Số lượng tiến trình được duy trì bởi php sẽ được cố định.
- ondemand: Sẽ không có quy trình con nào được tạo khi khởi động. Các nút con sẽ được chia nhỏ khi nhận được yêu cầu mới từ máy chủ.
Sau khi tạo tệp cấu hình, hãy khởi động lại dịch vụ fpm để áp dụng các thay đổi mới:
Nhóm fpm bây giờ sẽ được tạo để phục vụ các trang php. Lưu ý rằng bạn cũng có thể tạo dịch vụ systemd để bắt đầu / dừng các nhóm mà không ảnh hưởng đến nhau bằng cách chỉ định tệp cấu hình fpm ở trên.
cấu hình nginx cho php-fpm
Bây giờ chúng ta cần tạo một khối máy chủ nginx để sử dụng nhóm vừa tạo ở trên. Cụ thể, chỉnh sửa tệp cấu hình nginx và chuyển đường dẫn đến tệp socket với tùy chọn fastcgi_pass:
Đảm bảo rằng cú pháp cấu hình chính xác, sau đó khởi động lại nginx bằng lệnh sau:
Kiểm tra cấu hình php-fpm nginx
Để kiểm tra xem tệp cấu hình nginx có sử dụng nhóm fpm ở trên hay không, chúng tôi cần tạo tệp thông tin php trong thư mục gốc của web bằng lệnh sau:
Trong đó / var / www / html / wordpress được thay thế bằng giá trị tương ứng cho môi trường.
Tiếp theo, trỏ trình duyệt web của bạn đến trang thông tin php mới được tạo. Lưu ý rằng các biến $ _server [‘user’] và $ _server [‘home’] đều trỏ đến wordpress_user và / home / wordpress_user được đặt trong tệp cấu hình fpm ở bước trước. Vì vậy, bạn có thể yên tâm rằng nginx đang cung cấp các trang php bằng cách sử dụng nhóm fpm mà chúng tôi đã tạo.
Kết luận
Hy vọng rằng bài viết trên đã giải đáp về php-fpm và cách định cấu hình php-fpm cho bạn. Mọi thắc mắc hay ý kiến đóng góp các bạn vui lòng để lại bình luận bên dưới bài viết này. vietnix chân thành cảm ơn sự quan tâm của bạn!