Cấu hình phổ biến nhất cho Apache httpd và PHP sử dụng, nhưng điều này có một số hạn chế và nhược điểm
- có thể sử dụng một phiên bản PHP duy nhất của mod_php
- mod_php chạy trong quy trình httpd mà không có bất kỳ sự cô lập nào
- mod_phpis chỉ được hỗ trợ cho prefork MPM
Bài viết này sẽ giải thích cách định cấu hình Apache httpd để ủy quyền thực thi tập lệnh PHP cho phần phụ trợ bằng cách sử dụng giao thức FastCGI, cách sử dụng phiên bản PHP mới hơn, cách chạy nhiều phiên bản PHP và cách cải thiện hiệu suất Apache httpd
Gói Apache httpd có sẵn trong RHEL cung cấp tất cả các tính năng cần thiết để sử dụng cấu hình đó
1. Chuyển sang php-fpm
1. 1. Xóa mod_php
Bạn nên xóa hoặc tắt mod_php để giảm dung lượng bộ nhớ của mỗi quy trình httpd
Bạn có thể xóa gói php chỉ cung cấp mô-đun này
yum remove php
hoặc đơn giản là vô hiệu hóa nó bằng cách nhận xét chỉ thị LoadModule trong /etc/httpd/conf. mô-đun. d/10-php. conf
# disabled # LoadModule php5_module modules/libphp5.so
1. 2. Cài đặt php-fpm
Bây giờ bạn có thể cài đặt php-fpm và kích hoạt dịch vụ của nó
yum install php-fpm systemctl start php-fpm systemctl enable php-fpm
Lưu ý. gói php-fpm có sẵn trong kênh tùy chọn, kênh này phải được bật
Để định cấu hình thực thi tập lệnh PHP, hãy chỉnh sửa hoặc tạo /etc/httpd/conf. d/php. tập tin conf
Các dòng sau đây ngăn chặn. người dùng. đây là các tệp đang được xem bởi các máy khách Web
Require all denied
Cho phép php xử lý Multiviews
AddType text/html .php
Thêm chỉ mục. php vào danh sách các tệp sẽ được dùng làm chỉ mục thư mục
DirectoryIndex index.php
Dòng sau, bật tiêu đề ủy quyền http
SetEnvIfNoCase ^Authorization$ "[.+]" HTTP_AUTHORIZATION=$1
Chuyển hướng thực thi tập lệnh PHP sang phụ trợ FPM
SetHandler "proxy:fcgi://127.0.0.1:9000"
Nếu bạn có một số lệnh php_value trong tệp này, bạn cần xóa chúng, chúng chỉ dành cho mod_php
Bây giờ bạn có thể [khởi động lại] máy chủ web và một trang kiểm tra PHP đơn giản với;
________số 8nó sẽ hiển thị bạn hiện đang chạy PHP thông qua chương trình phụ trợ FastCGI
PHP Version 5.4.16 Server API= FPM/FastCGI
1. 3. điều chỉnh PHP
Tệp cấu hình FPM chính là /etc/php-fpm. conf, trong đó có rất nhiều bình luận giải thích từng tùy chọn
FPM có thể chạy nhiều nhóm khác nhau, mỗi nhóm chạy các tập lệnh PHP có thể có các tùy chọn khác nhau, tệp cấu hình nhóm [www] mặc định là /etc/php-fpm. d/www. conf, cũng có rất nhiều bình luận
1. 3. 1. php_value, php-flag
Tùy chọn PHP có thể được đặt bằng cách sử dụng các chỉ thị php_value, php_admin_value, php_flag và php_admin_flag
- với mod_php, trong tệp cấu hình Apache httpd
- với FPM, trong tệp cấu hình nhóm
1. 3. 2. . htaccess
Các tùy chọn bổ sung có thể được đặt trong một thư mục cụ thể
- với mod_php, sử dụng một. tập tin htaccess
- với FPM, sử dụng một. người dùng. ini [không cần từ khóa php_*]
1. 3. 3. điều chỉnh quy trình
FPM chạy dưới dạng daemon và khởi chạy nhiều quy trình khác nhau để có thể xử lý đồng thời nhiều yêu cầu khác nhau và cung cấp nhiều chế độ khác nhau
- pm = theo yêu cầu, con chỉ bắt đầu khi kết nối được mở và dừng khi không hoạt động, phù hợp với môi trường phát triển
- pm = động, một tập hợp các quy trình nhàn rỗi luôn chạy, có thể bắt đầu nhiều quy trình hơn nếu cần, phù hợp cho sản xuất
- pm = tĩnh, một bộ quy trình cố định luôn chạy, thích hợp cho sản xuất, có thể tốt hơn cho hiệu suất
1. 4. Điều chỉnh Máy chủ HTTP Apache
1. 4. 1. MPM có ren
Theo mặc định, Máy chủ HTTP Apache sử dụng một tập hợp các quy trình để quản lý các yêu cầu đến [MPM prefork]
Vì bây giờ chúng tôi không sử dụng mod_php nên chúng tôi có thể chuyển sang MPM theo luồng [nhân viên của một sự kiện] để một tập hợp các luồng sẽ quản lý các yêu cầu, giảm số lượng quy trình đang chạy và dung lượng bộ nhớ cũng như cải thiện hiệu suất, đặc biệt là khi nhiều các tệp tĩnh được phục vụ
Chuyển đổi MPM đã sử dụng trong /etc/httpd/conf. mô-đun. d/00-mpm. tập tin cấu hình conf
# disabled # LoadModule php5_module modules/libphp5.so0
1. 4. 2. Ổ cắm tên miền Unix
Theo mặc định, FPM lắng nghe các yêu cầu đến trên ổ cắm mạng nhưng có thể sử dụng Ổ cắm miền Unix, điều này có thể cải thiện một chút hiệu suất
Trong cấu hình nhóm FPM
# disabled # LoadModule php5_module modules/libphp5.so1
Trong cấu hình Apache httpd
# disabled # LoadModule php5_module modules/libphp5.so2
1. 4. 2. Máy chủ frontend và backend riêng biệt
Theo mặc định, FPM lắng nghe các yêu cầu đến trên ổ cắm mạng cục bộ. Tất nhiên nó có thể chạy trên server riêng, máy ảo khác hoặc container [docker instance]
Trong cấu hình nhóm FPM
# disabled # LoadModule php5_module modules/libphp5.so3
Trong cấu hình Apache httpd
# disabled # LoadModule php5_module modules/libphp5.so4
1. 4. 3 Nhiều chương trình phụ trợ php
Để có thể xử lý nhiều yêu cầu đồng thời hơn, chúng tôi có thể muốn cân bằng tải giữa các chương trình phụ trợ PHP khác nhau, điều này thật dễ dàng
Mẫu cấu hình Apache httpd, với 3 phụ trợ
# disabled # LoadModule php5_module modules/libphp5.so5
2. Chạy phiên bản PHP gần đây
RHEL cung cấp phiên bản PHP 5. 4 là phiên bản hiện tại khi RHEL-7 được phát hành, nhưng có thể quá cũ đối với một số dự án gần đây
Phiên bản PHP 5. 6 và 7. 0 được hỗ trợ trên RHEL ngày hôm nay như một phần của Bộ sưu tập phần mềm Red Hat [RHSCL] và phiên bản PHP 7. 1 hiện đang trong giai đoạn thử nghiệm Beta với 3. 0 bản cập nhật của RHSCL
Trong ví dụ bên dưới, chúng tôi sẽ sử dụng phiên bản 7. 0, nhưng nó có thể được sử dụng cho các phiên bản có sẵn khác
2. 1. Cài đặt
Cài đặt Bộ sưu tập phần mềm, sau khi đã bật kênh RHSCL
# disabled # LoadModule php5_module modules/libphp5.so6
Cài đặt dịch vụ FPM cho phiên bản này
# disabled # LoadModule php5_module modules/libphp5.so7
Cài đặt bất kỳ tiện ích bổ sung cần thiết nào
# disabled # LoadModule php5_module modules/libphp5.so8
Lời khuyên. so sánh danh sách các tiện ích mở rộng có sẵn để đảm bảo mọi thứ cần thiết đều có sẵn
# disabled # LoadModule php5_module modules/libphp5.so9
Lời khuyên. không bao giờ dựa vào tên gói mà hãy ưu tiên tên mở rộng [e. g. php-mysqli hoặc rh-php70-php-simplexml], vì bố cục gói có thể thay đổi giữa các phiên bản
2. 2. Chuyển sang các phiên bản PHP mới hơn
Khi chạy FPM, điều này đơn giản như việc dừng dịch vụ phiên bản cũ và bắt đầu dịch vụ mới
yum install php-fpm systemctl start php-fpm systemctl enable php-fpm0
2. 3. gói bổ sung
Bộ sưu tập phần mềm cung cấp cùng một bộ phần mở rộng PHP so với các gói tiêu chuẩn trong RHEL
Vì người dùng đã quen với việc tìm kiếm một số tiện ích mở rộng bổ sung, nên trong kho lưu trữ EPEL, bạn có thể tìm thấy tiện ích mở rộng bổ sung trong kho lưu trữ centos-sclo-sclo của cộng đồng, để biết thêm thông tin, hãy tìm kiếm sclo-php trên https. //www. bộ sưu tập phần mềm. tổ chức/
3. Chạy nhiều phiên bản PHP
Khi thực thi PHP được chuyển hướng đến dịch vụ FastCGI bằng cách sử dụng chỉ thị SetHandler, điều này có thể được đặt cho mỗi vhost, dự án hoặc thư mục
Trong ví dụ bên dưới, chúng ta sẽ chạy cả PHP phiên bản 5. 4 từ hệ thống cơ sở [đối với một số ứng dụng cũ, đã được định cấu hình ở trên] và phiên bản PHP 7. 1 đồng thời
3. 1. Cài đặt
Cài đặt Bộ sưu tập phần mềm, sau khi đã bật kênh RHSCL beta
yum install php-fpm systemctl start php-fpm systemctl enable php-fpm1
Định cấu hình FPM để nghe một cổng khác với cổng được sử dụng bởi dịch vụ php-fpm mặc định, trong /etc/opt/rh/rh-php71/php-fpm. d/www. conf