Hướng dẫn redhat apache php configuration - redhat apache php cấu hình

RHEL 7 cung cấp máy chủ Apache HTTP Phiên bản 2.4 và Php phiên bản 5.4. provides the Apache HTTP Server version 2.4 and PHP version 5.4.

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:

  • Một phiên bản PHP duy nhất của mod_php có thể được sử dụng
  • mod_php chạy trong quy trình httpd, không có bất kỳ sự cô lập nào
  • mod_phpis chỉ được hỗ trợ cho mpm prefork

Bài viết này sẽ giải thích cách định cấu hình Apache HTTPD để ủy thác thực thi tập lệnh PHP cho một phụ trợ bằng giao thức FastCGI, cách sử dụng phiên bản PHP gần đây 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.FastCGI protocol, how to use a more recent PHP version, how to run multiple PHP versions, and how to improve Apache httpd performance.

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

Nên loại bỏ hoặc vô hiệu hóa MOD_PHP để giảm dấu chân bộ nhớ của từng quy trình HTTPD.

Bạn có thể xóa gói PHP, chỉ cung cấp mô -đun này:php package, which only provides this module:

 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.modules.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à bật dịch vụ của nó.

 yum install php-fpm
 systemctl start php-fpm
 systemctl enable php-fpm

Thông báo: Gói PHP-FPM có sẵn trong kênh tùy chọn, phải được bật.php-fpm package is available in the optional channel, which has to be enabled.

Để định cấu hình thực thi tập lệnh PHP, chỉnh sửa hoặc tạo tệp /etc/httpd/conf.d/php.conf:

Các dòng sau ngăn các tệp .user.ini không được xem bởi các máy khách web.

  
    Require all denied
  

Cho phép PHP xử lý nhiều lượt xem:

  AddType text/html .php

Thêm index.php vào danh sách các tệp sẽ được phục vụ làm chỉ mục thư mục:

  DirectoryIndex index.php

Dòng sau, bật các 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ố chỉ thị PHP_VALUE trong tệp này, bạn cần xóa chúng, chúng chỉ dành cho mod_php.php_value directive in this file, you need to remove them, they are only for mod_php.

Bây giờ bạn có thể (Re) khởi động máy chủ web và trang thử nghiệm PHP đơn giản với;

Nó sẽ cho thấy bạn hiện đang chạy PHP thông qua phụ trợ FATCGI.

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, có rất nhiều nhận xét giải thích từng tùy chọn.

FPM có thể chạy các nhóm khác nhau, mỗi nhóm chạy tập lệnh PHP với các tùy chọn khác nhau có thể, tệp cấu hình nhóm mặc định (www) là /etc/php-fpm.d/www.conf, cũng có rất nhiều nhận xét.

1.3.1. PHP_VALUE, PHP-flag

Các tùy chọn PHP có thể được đặt bằng cách sử dụng PHP_VALUE, PHP_ADMIN_VALUE, PHP_FLAG và PHP_ADMIN_FLAG Chỉ thị:

  • với mod_php, & nbsp; Trong các tệp cấu hình Apache HTTPD.
  • Với FPM, trong các 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 tệp .htaccess..htaccess file.
  • với fpm, sử dụng tệp .user.ini (không cần thiết từ khóa PHP_*)..user.ini file (php_* keywords are not needed).

1.3.3. Điều chỉnh quá trình

FPM chạy dưới dạng daemon và khởi chạy các quy trình khác nhau để có thể xử lý đồng thời các yêu cầu khác nhau và cung cấp các chế độ khác nhau:

  • PM = ondemand, trẻ chỉ được bắt đầu khi kết nối mở và dừng khi nhàn rỗi, phù hợp với môi trường phát triển
  • PM = Dynamic, một tập hợp các quy trình không tải luôn chạy, có thể bắt đầu nhiều quy trình hơn nếu cần, phù hợp để sản xuất
  • PM = tĩnh, một bộ quy trình cố định luôn chạy, phù hợp để sản xuất, có thể tốt hơn cho hiệu suất

1.4. Apache HTTP Server điều chỉnh

1.4.1. MPM chủ đề

Theo mặc định, máy chủ Apache HTTP sử dụng một bộ quy trình để quản lý các yêu cầu đến (Prefork MPM).

Vì bây giờ chúng ta không sử dụng mod_php, chúng ta có thể chuyển sang mpm có luồng (công nhân của một sự kiện), vì vậy 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 chạy và dấu chân bộ nhớ và cải thiện hiệu suất, đặc biệt là khi rất nhiều của các tập tin tĩnh được phục vụ.

Chuyển MPM đã sử dụng trong /etc/httpd/conf.modules.d/00-mpm.conf Tệp cấu hình.

 # disabled # LoadModule php5_module modules/libphp5.so
0

1.4.2. Ổ cắm 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, có thể cải thiện hiệu suất một chút.

Trong cấu hình nhóm FPM:FPM pool configuration:

 # disabled # LoadModule php5_module modules/libphp5.so
1

Trong cấu hình Apachehttpd:Apache httpd configuration:

 # disabled # LoadModule php5_module modules/libphp5.so
2

1.4.2. Máy chủ phía trước và phụ trợ 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 một máy chủ riêng biệt, một máy ảo khác hoặc một container (cá thể Docker)

Trong cấu hình nhóm FPM:FPM pool configuration:

 # disabled # LoadModule php5_module modules/libphp5.so
3

Trong cấu hình Apachehttpd:Apache httpd configuration:

 # disabled # LoadModule php5_module modules/libphp5.so
4

1.4.2. Máy chủ phía trước và phụ trợ 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 một máy chủ riêng biệt, một máy ảo khác hoặc một container (cá thể Docker)

Trong Apache HTTPD Cấu hình: configuration sample, with 3 backends:

 # disabled # LoadModule php5_module modules/libphp5.so
5

1.4.3 Nhiều phụ trợ PHP

Để có thể xử lý các 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 phụ trợ PHP khác nhau, điều này rất dễ dàng.5.4 which was the current version when RHEL-7 was released, but which can be too old for some recent projects.

Các phiên bản PHP 5.6 và 7.0 được hỗ trợ trên RHEL Today như một phần của Bộ sưu tập phần mềm Red Hat (RHSCL) và Php phiên bản 7.1 hiện đang được thử nghiệm beta với bản cập nhật 3.0 của RHSCL.5.6 and 7.0 are supported on RHEL today as part of Red Hat Software Collections (RHSCL), and PHP version 7.1 is currently in Beta testing with the 3.0 update of RHSCL.

Trong ví dụ dưới đây, 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 khác có sẵn.

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.so
6

Cài đặt dịch vụ FPM cho phiên bản này:

 # disabled # LoadModule php5_module modules/libphp5.so
7

Cài đặt bất kỳ tiện ích mở rộng nào cần thiết:

 # disabled # LoadModule php5_module modules/libphp5.so
8

Mẹo: 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.: compare the list of available extensions to ensure everything needed is available.

 # disabled # LoadModule php5_module modules/libphp5.so
9

Mẹo: Không bao giờ dựa vào tên gói, nhưng thích tên mở rộng (ví dụ: PHP-MYSQLI hoặc RH-PHP70-PHP-SIMPLEXML), vì bố cục gói có thể thay đổi trên các phiên bản.: never rely on the package name, but prefer extension name (e.g. php-mysqli or rh-php70-php-simplexml), as the package layout may change across versions.

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ư dừng dịch vụ phiên bản cũ và bắt đầu phiên bản mới:

 yum install php-fpm
 systemctl start php-fpm
 systemctl enable php-fpm
0

2.3. Gói bổ sung

Các bộ sưu tập phần mềm cung cấp cùng một bộ tiện ích mở rộng PHP so với các gói tiêu chuẩn trong RHEL.

Vì người dùng được sử dụng để tìm một số tiện ích mở rộng bổ sung, & NBSP; Trong kho lưu trữ Epel, một tiện ích mở rộng bổ sung có thể được tìm thấy trong kho lưu trữ cộng đồng Centos-sclo-sclo, để biết thêm thông tin tìm kiếm SCLO-PHP trên https://www.softwarecollections.org/.centos-sclo-sclo repository, for more information search sclo-php on https://www.softwarecollections.org/.

3. Chạy nhiều phiên bản của PHP

Vì thực thi PHP được chuyển hướng đến dịch vụ FASTCGI bằng Chỉ thị Sethandler, điều này có thể được đặt trên mỗi vhost, dự án hoặc thư mục.SetHandler directive, this can be set per vhost, project or directory.

Trong ví dụ dưới đây, chúng tôi 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 cấu hình ở trên) và Php phiên bản 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 Beta RHSCL:

 yum install php-fpm
 systemctl start php-fpm
 systemctl enable php-fpm
1

Định cấu hình FPM để nghe một cổng khác so với mã đượ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.

 yum install php-fpm
 systemctl start php-fpm
 systemctl enable php-fpm
2

Đảm bảo cổng này không bị chặn bởi Selinux:

 yum install php-fpm
 systemctl start php-fpm
 systemctl enable php-fpm
3

Bắt đầu dịch vụ:

 yum install php-fpm
 systemctl start php-fpm
 systemctl enable php-fpm
4

Bây giờ, có thể chọn phiên bản PHP cho mỗi thư mục, từ tệp cấu hình Apache HTTPD.

Thí dụ:

 yum install php-fpm
 systemctl start php-fpm
 systemctl enable php-fpm
5

4. Kết luận

Tôi hy vọng bài viết nhỏ này đã cho thấy những lợi ích khác nhau của việc chuyển sang FPM cho các tập lệnh PHP của bạn:

  • Quá trình cô lập giữa Frontend (HTTPD) và phụ trợ (FPM)
  • cải thiện hiệu suất
  • Chạy phiên bản PHP hiện đại
  • Chạy nhiều phiên bản PHP

Cập nhật lần cuối: ngày 18 tháng 10 năm 2018