PHP [PHP Hypertext Preprocessor] là ngôn ngữ mã nguồn, được thiết kế đặc biệt để phát triển ứng dụng web. Vào năm 2021, PHP đại diện cho ít hơn 80% số trang web được tạo trên thế giới. PHP là mã nguồn mở và là cốt lõi của CMS nổi tiếng nhất [WordPress, Drupal, Joomla. , Magento,. ]
PHP-FPM [FastCGI Process Manager] được tích hợp vào PHP kể từ phiên bản 5. 3. 3. Phiên bản FastCGI của php mang đến các chức năng bổ sung
Tổng quát
CGI [Giao diện cổng chung] và FastCGI cho phép giao tiếp giữa máy chủ web [Apache, Nginx,. ] và một ngôn ngữ phát triển [Php, Python, Java]
- Trong trường hợp của CGI, mỗi yêu cầu dẫn đến việc tạo ra một quy trình mới, quy trình này kém hiệu quả hơn về mặt hiệu suất
- FastCGI dựa vào một số quy trình nhất định để xử lý các yêu cầu của máy khách
PHP-FPM, ngoài hiệu suất tốt hơn, mang lại
- Khả năng phân vùng tốt hơn các ứng dụng. khởi chạy các quy trình với uid/gid khác nhau, với php được cá nhân hóa. tập tin ini,
- Quản lý thống kê,
- Quản lý nhật ký,
- Quản lý động các quy trình và khởi động lại mà không bị gián đoạn dịch vụ ['duyên dáng']
Ghi chú
Vì Apache có mô-đun php nên việc sử dụng php-fpm thường được sử dụng nhiều hơn trên máy chủ Nginx
Chọn một phiên bản php
Rocky Linux, giống như thượng nguồn của nó, cung cấp nhiều phiên bản ngôn ngữ. Một số trong số chúng đã hết tuổi thọ nhưng vẫn được tiếp tục lưu trữ các ứng dụng lịch sử chưa tương thích với các phiên bản PHP mới. Vui lòng tham khảo trang phiên bản được hỗ trợ của php. net để chọn phiên bản được hỗ trợ
Để có được danh sách các phiên bản có sẵn, chỉ cần nhập lệnh sau
$ sudo dnf module list php
Rocky Linux 8 - AppStream
Name Stream Profiles Summary
php 7.2 [d] common [d], devel, minimal PHP scripting language
php 7.3 common [d], devel, minimal PHP scripting language
php 7.4 common [d], devel, minimal PHP scripting language
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
Rocky cung cấp, từ kho lưu trữ AppStream, các mô-đun PHP khác nhau
Bạn sẽ lưu ý rằng phiên bản mặc định của Rocky 8. 5 là 7. 2 đã hết tuổi thọ tại thời điểm viết
Bạn có thể kích hoạt một mô-đun mới hơn bằng cách nhập lệnh sau
sudo dnf module enable php:7.4
==============================================================================================
Package Architecture Version Repository Size
==============================================================================================
Enabling module streams:
httpd 2.4
php 7.4
Transaction Summary
==============================================================================================
Is this ok [y/N]: y
Complete!
Ghi chú
Bạn hiện không thể cài đặt php 8 từ kho AppStream. Đối với điều này, bạn sẽ phải đi qua kho REMI. Cài đặt này không có trong tài liệu này
Bây giờ bạn có thể tiến hành cài đặt công cụ php
Chế độ cgi PHP
Trước tiên, hãy xem cách cài đặt và sử dụng php ở chế độ CGI của nó. Chúng tôi sẽ chỉ có thể làm cho nó hoạt động với máy chủ web Apache và mô-đun
$ sudo dnf install php php-cli php-gd php-curl php-zip php-mbstring
5 của nó. Ở phần sau, chúng ta sẽ xem trong phần FastCGI [php-fpm] cách tích hợp PHP trong Nginx [cũng như Apache]Cài đặt
Việc cài đặt php khá đơn giản, vì nó bao gồm việc cài đặt gói chính cũng như một vài mô-đun php mà bạn sẽ cần
Ví dụ dưới đây cài đặt php với các module thường được cài đặt với nó
$ sudo dnf install php php-cli php-gd php-curl php-zip php-mbstring
Bạn có thể kiểm tra xem phiên bản đã cài đặt có tương ứng với phiên bản dự kiến không
$ php -v
PHP 7.4.19 [cli] [built: May 4 2021 11:06:37] [ NTS ]
Copyright [c] The PHP Group
Zend Engine v3.4.0, Copyright [c] Zend Technologies
with Zend OPcache v7.4.19, Copyright [c], by Zend Technologies
Cấu hình
Tích hợp Apache
Để phục vụ các trang php ở chế độ cgi, bạn sẽ phải cài đặt máy chủ apache, định cấu hình, kích hoạt và khởi động nó
- Cài đặt
$ sudo dnf install httpd
- kích hoạt
$ sudo systemctl enable httpd
$ sudo systemctl start httpd
$ sudo systemctl status httpd
- Đừng quên cấu hình tường lửa
$ sudo firewall-cmd --add-service=http --permanent
$ sudo firewall-cmd --reload
Vhost mặc định sẽ hoạt động tốt. PHP cung cấp một hàm
$ sudo dnf install php php-cli php-gd php-curl php-zip php-mbstring
6 để tạo một bảng tóm tắt về cấu hình của nó. Nó rất hữu ích để kiểm tra hoạt động tốt của php. Tuy nhiên, hãy cẩn thận không để các tệp thử nghiệm như vậy nằm xung quanh máy chủ của bạn, chúng thể hiện rủi ro bảo mật rất lớn đối với cơ sở hạ tầng của bạnTạo tệp
$ sudo dnf install php php-cli php-gd php-curl php-zip php-mbstring
7 [$ sudo dnf install php php-cli php-gd php-curl php-zip php-mbstring
8 là thư mục vhost mặc định của cấu hình apache mặc định]sudo dnf module enable php:7.4
==============================================================================================
Package Architecture Version Repository Size
==============================================================================================
Enabling module streams:
httpd 2.4
php 7.4
Transaction Summary
==============================================================================================
Is this ok [y/N]: y
Complete!
1Sử dụng trình duyệt web để kiểm tra xem máy chủ có hoạt động tốt không bằng cách truy cập trang http. // máy chủ của bạn-ip/thông tin. php
Cảnh báo
Không để lại thông tin. php trên máy chủ của bạn
PHP-FPM [FastCGI]
Như chúng tôi đã nhấn mạnh trước đó trong tài liệu này, có nhiều lợi thế khi chuyển dịch vụ lưu trữ web sang chế độ php-fpm
Cài đặt
Việc cài đặt được giới hạn trong gói php-fpm
sudo dnf module enable php:7.4
==============================================================================================
Package Architecture Version Repository Size
==============================================================================================
Enabling module streams:
httpd 2.4
php 7.4
Transaction Summary
==============================================================================================
Is this ok [y/N]: y
Complete!
2Vì php-fpm là một dịch vụ theo quan điểm hệ thống nên nó phải được kích hoạt và bắt đầu
sudo dnf module enable php:7.4
==============================================================================================
Package Architecture Version Repository Size
==============================================================================================
Enabling module streams:
httpd 2.4
php 7.4
Transaction Summary
==============================================================================================
Is this ok [y/N]: y
Complete!
3Cấu hình
Tệp cấu hình chính được lưu trữ dưới
$ sudo dnf install php php-cli php-gd php-curl php-zip php-mbstring
9sudo dnf module enable php:7.4
==============================================================================================
Package Architecture Version Repository Size
==============================================================================================
Enabling module streams:
httpd 2.4
php 7.4
Transaction Summary
==============================================================================================
Is this ok [y/N]: y
Complete!
0Ghi chú
Các tệp cấu hình php-fpm được bình luận rộng rãi. Đi và trải nghiệm
Như bạn có thể thấy, các tệp trong thư mục
$ php -v
PHP 7.4.19 [cli] [built: May 4 2021 11:06:37] [ NTS ]
Copyright [c] The PHP Group
Zend Engine v3.4.0, Copyright [c] Zend Technologies
with Zend OPcache v7.4.19, Copyright [c], by Zend Technologies
0 có phần mở rộng $ php -v
PHP 7.4.19 [cli] [built: May 4 2021 11:06:37] [ NTS ]
Copyright [c] The PHP Group
Zend Engine v3.4.0, Copyright [c] Zend Technologies
with Zend OPcache v7.4.19, Copyright [c], by Zend Technologies
1 luôn được bao gồmTheo mặc định, một nhóm quy trình php, có tên là
$ php -v
PHP 7.4.19 [cli] [built: May 4 2021 11:06:37] [ NTS ]
Copyright [c] The PHP Group
Zend Engine v3.4.0, Copyright [c] Zend Technologies
with Zend OPcache v7.4.19, Copyright [c], by Zend Technologies
2, được khai báo trong $ php -v
PHP 7.4.19 [cli] [built: May 4 2021 11:06:37] [ NTS ]
Copyright [c] The PHP Group
Zend Engine v3.4.0, Copyright [c] Zend Technologies
with Zend OPcache v7.4.19, Copyright [c], by Zend Technologies
3sudo dnf module enable php:7.4
==============================================================================================
Package Architecture Version Repository Size
==============================================================================================
Enabling module streams:
httpd 2.4
php 7.4
Transaction Summary
==============================================================================================
Is this ok [y/N]: y
Complete!
1Hướng dẫnMô tả$ php -v
PHP 7.4.19 [cli] [built: May 4 2021 11:06:37] [ NTS ]
Copyright [c] The PHP Group
Zend Engine v3.4.0, Copyright [c] Zend Technologies
with Zend OPcache v7.4.19, Copyright [c], by Zend Technologies
4Tên nhóm quy trình. Tệp cấu hình có thể bao gồm một số nhóm quy trình [tên của nhóm trong ngoặc bắt đầu một phần mới]. $ php -v
PHP 7.4.19 [cli] [built: May 4 2021 11:06:37] [ NTS ]
Copyright [c] The PHP Group
Zend Engine v3.4.0, Copyright [c] Zend Technologies
with Zend OPcache v7.4.19, Copyright [c], by Zend Technologies
5Xác định giao diện nghe hoặc ổ cắm unix được sử dụngĐịnh cấu hình cách truy cập các quy trình php-fpm
Có 2 cách kết nối
Qua giao diện inet như
$ php -v
PHP 7.4.19 [cli] [built: May 4 2021 11:06:37] [ NTS ]
Copyright [c] The PHP Group
Zend Engine v3.4.0, Copyright [c] Zend Technologies
with Zend OPcache v7.4.19, Copyright [c], by Zend Technologies
6Hoặc thông qua một ổ cắm Unix
$ php -v
PHP 7.4.19 [cli] [built: May 4 2021 11:06:37] [ NTS ]
Copyright [c] The PHP Group
Zend Engine v3.4.0, Copyright [c] Zend Technologies
with Zend OPcache v7.4.19, Copyright [c], by Zend Technologies
7Ghi chú
Việc sử dụng ổ cắm khi máy chủ web và máy chủ php trên cùng một máy cho phép loại bỏ lớp TCP/IP và tối ưu hóa hiệu suất
Khi làm việc qua interface, bạn phải cấu hình
$ php -v
PHP 7.4.19 [cli] [built: May 4 2021 11:06:37] [ NTS ]
Copyright [c] The PHP Group
Zend Engine v3.4.0, Copyright [c] Zend Technologies
with Zend OPcache v7.4.19, Copyright [c], by Zend Technologies
8, $ php -v
PHP 7.4.19 [cli] [built: May 4 2021 11:06:37] [ NTS ]
Copyright [c] The PHP Group
Zend Engine v3.4.0, Copyright [c] Zend Technologies
with Zend OPcache v7.4.19, Copyright [c], by Zend Technologies
9, $ sudo dnf install httpd
0 để chỉ định chủ sở hữu, nhóm chủ sở hữu và quyền của ổ cắm Unix. Cảnh báo. cả hai máy chủ [web và php] phải có quyền truy cập trên ổ cắmKhi làm việc qua socket, bạn phải cấu hình
$ sudo dnf install httpd
1 để hạn chế quyền truy cập vào máy chủ php đối với một số địa chỉ IP nhất địnhVí dụ.
$ sudo dnf install httpd
2Cấu hình tĩnh hoặc động
Các quy trình của php-fpm có thể được quản lý tĩnh hoặc động
Ở chế độ tĩnh, số lượng tiến trình con được đặt theo giá trị của
$ sudo dnf install httpd
3;sudo dnf module enable php:7.4
==============================================================================================
Package Architecture Version Repository Size
==============================================================================================
Enabling module streams:
httpd 2.4
php 7.4
Transaction Summary
==============================================================================================
Is this ok [y/N]: y
Complete!
2Cấu hình này sẽ khởi chạy 10 quy trình
Ở chế độ động, PHP-FPM sẽ khởi chạy tối đa số lượng quy trình được chỉ định bởi giá trị của
$ sudo dnf install httpd
3, bắt đầu bằng cách khởi chạy một số quy trình tương ứng với $ sudo dnf install httpd
5 và giữ ít nhất giá trị $ sudo dnf install httpd
6 của các quy trình không hoạt động và ở mức $ sudo dnf install httpd
7 quy trình không hoạt độngVí dụ
sudo dnf module enable php:7.4
==============================================================================================
Package Architecture Version Repository Size
==============================================================================================
Enabling module streams:
httpd 2.4
php 7.4
Transaction Summary
==============================================================================================
Is this ok [y/N]: y
Complete!
3PHP-FPM sẽ tạo một quy trình mới để thay thế quy trình đã xử lý một số lượng yêu cầu tương đương với
$ sudo dnf install httpd
8Theo mặc định,
$ sudo dnf install httpd
8 được đặt thành 0, có nghĩa là các quy trình không bao giờ được tái chế. Sử dụng tùy chọn $ sudo dnf install httpd
8 có thể thú vị đối với các ứng dụng bị rò rỉ bộ nhớCó một chế độ hoạt động thứ ba, chế độ
$ sudo systemctl enable httpd
$ sudo systemctl start httpd
$ sudo systemctl status httpd
1. Chế độ này chỉ bắt đầu một quá trình khi nhận được yêu cầu. Nó không phải là chế độ tối ưu cho các trang web có ảnh hưởng mạnh và được dành riêng cho các nhu cầu cụ thể [các trang web có yêu cầu rất yếu, phụ trợ quản lý, v.v. ]Ghi chú
Cấu hình chế độ hoạt động của PHP-FPM là điều cần thiết để đảm bảo máy chủ web của bạn hoạt động tối ưu
Trạng thái đang diễn ra
Cung cấp PHP-FPM, như Apache và mô-đun
$ sudo systemctl enable httpd
$ sudo systemctl start httpd
$ sudo systemctl status httpd
2 của nó, một trang cho biết trạng thái của quy trìnhĐể kích hoạt trang, hãy thiết lập đường dẫn truy cập của trang thông qua chỉ thị
$ sudo systemctl enable httpd
$ sudo systemctl start httpd
$ sudo systemctl status httpd
3sudo dnf module enable php:7.4
==============================================================================================
Package Architecture Version Repository Size
==============================================================================================
Enabling module streams:
httpd 2.4
php 7.4
Transaction Summary
==============================================================================================
Is this ok [y/N]: y
Complete!
4sudo dnf module enable php:7.4
==============================================================================================
Package Architecture Version Repository Size
==============================================================================================
Enabling module streams:
httpd 2.4
php 7.4
Transaction Summary
==============================================================================================
Is this ok [y/N]: y
Complete!
5Ghi nhật ký các yêu cầu dài
Chỉ thị slowlog chỉ định tệp nhận ghi nhật ký các yêu cầu quá dài [i. e. , có thời gian vượt quá giá trị của chỉ thị
$ sudo systemctl enable httpd
$ sudo systemctl start httpd
$ sudo systemctl status httpd
4]Vị trí mặc định của tệp được tạo là
$ sudo systemctl enable httpd
$ sudo systemctl start httpd
$ sudo systemctl status httpd
5sudo dnf module enable php:7.4
==============================================================================================
Package Architecture Version Repository Size
==============================================================================================
Enabling module streams:
httpd 2.4
php 7.4
Transaction Summary
==============================================================================================
Is this ok [y/N]: y
Complete!
6Giá trị 0 cho
$ sudo systemctl enable httpd
$ sudo systemctl start httpd
$ sudo systemctl status httpd
4 sẽ vô hiệu hóa ghi nhật kýTích hợp NGinx
Cài đặt mặc định của nginx đã bao gồm các cấu hình cần thiết để php hoạt động với PHP-FPM
Tệp cấu hình
$ sudo systemctl enable httpd
$ sudo systemctl start httpd
$ sudo systemctl status httpd
7 [hoặc $ sudo systemctl enable httpd
$ sudo systemctl start httpd
$ sudo systemctl status httpd
8] nằm trong $ sudo systemctl enable httpd
$ sudo systemctl start httpd
$ sudo systemctl status httpd
9sudo dnf module enable php:7.4
==============================================================================================
Package Architecture Version Repository Size
==============================================================================================
Enabling module streams:
httpd 2.4
php 7.4
Transaction Summary
==============================================================================================
Is this ok [y/N]: y
Complete!
7Để nginx xử lý các tệp
$ sudo firewall-cmd --add-service=http --permanent
$ sudo firewall-cmd --reload
0, các lệnh sau phải được thêm vào tệp cấu hình trang webNếu php-fpm đang lắng nghe trên cổng 9000
sudo dnf module enable php:7.4
==============================================================================================
Package Architecture Version Repository Size
==============================================================================================
Enabling module streams:
httpd 2.4
php 7.4
Transaction Summary
==============================================================================================
Is this ok [y/N]: y
Complete!
8Nếu php-fpm đang lắng nghe trên ổ cắm unix
sudo dnf module enable php:7.4
==============================================================================================
Package Architecture Version Repository Size
==============================================================================================
Enabling module streams:
httpd 2.4
php 7.4
Transaction Summary
==============================================================================================
Is this ok [y/N]: y
Complete!
9Tích hợp Apache
Việc cấu hình apache để sử dụng php pool khá đơn giản. Ví dụ, bạn chỉ cần sử dụng các mô-đun proxy với chỉ thị
$ sudo firewall-cmd --add-service=http --permanent
$ sudo firewall-cmd --reload
1$ sudo dnf install php php-cli php-gd php-curl php-zip php-mbstring
0Cấu hình vững chắc của nhóm php
Điều cần thiết là tối ưu hóa số lượng yêu cầu có thể được phục vụ, phân tích bộ nhớ được sử dụng bởi các tập lệnh php và do đó để tối ưu hóa số lượng luồng khởi chạy tối đa
Trước hết, chúng ta cần biết dung lượng bộ nhớ trung bình được sử dụng bởi một quy trình PHP, bằng lệnh
$ sudo dnf install php php-cli php-gd php-curl php-zip php-mbstring
1Sau một thời gian, điều này sẽ cho chúng ta một ý tưởng khá chính xác về dung lượng bộ nhớ trung bình của một quy trình php trên máy chủ này
Đối với phần còn lại của tài liệu này, giả sử rằng kết quả là dung lượng bộ nhớ là 120 MB cho mỗi quy trình khi đầy tải
Trên máy chủ có 8Gb RAM, giữ 1Gb cho hệ thống và 1Gb cho OPCache [xem phần còn lại của tài liệu này], còn lại 6Gb để xử lý các yêu cầu PHP từ máy khách
Chúng ta có thể dễ dàng kết luận rằng máy chủ này có thể chấp nhận tối đa 50 chủ đề
$ sudo firewall-cmd --add-service=http --permanent
$ sudo firewall-cmd --reload
2Một cấu hình tốt của
$ sudo firewall-cmd --add-service=http --permanent
$ sudo firewall-cmd --reload
3 dành riêng cho trường hợp sử dụng này sẽ là$ sudo dnf install php php-cli php-gd php-curl php-zip php-mbstring
2với
5 = 25% của$ sudo dnf install httpd
5$ sudo firewall-cmd --add-service=http --permanent $ sudo firewall-cmd --reload
6 = 25% của$ sudo dnf install httpd
5$ sudo firewall-cmd --add-service=http --permanent $ sudo firewall-cmd --reload
8 = 75% của$ sudo firewall-cmd --add-service=http --permanent $ sudo firewall-cmd --reload
5$ sudo firewall-cmd --add-service=http --permanent $ sudo firewall-cmd --reload
cấu hình opcache
sudo dnf module enable php:7.4
==============================================================================================
Package Architecture Version Repository Size
==============================================================================================
Enabling module streams:
httpd 2.4
php 7.4
Transaction Summary
==============================================================================================
Is this ok [y/N]: y
Complete!
10 [Optimizer Plus Cache] là cấp bộ đệm đầu tiên mà chúng tôi có thể tác độngNó giữ trong bộ nhớ các tập lệnh php đã biên dịch, tác động mạnh mẽ đến việc thực thi các trang web [loại bỏ việc đọc tập lệnh trên đĩa + thời gian biên dịch]
Để cấu hình nó, chúng ta phải làm việc trên
- Kích thước của bộ nhớ dành riêng cho opcache theo tỷ lệ trúng
Bằng cách cấu hình chính xác
- số lượng tập lệnh php vào bộ đệm [số lượng khóa + số lượng tập lệnh tối đa]
- số lượng chuỗi vào bộ đệm
Để cài đặt nó
$ sudo dnf install php php-cli php-gd php-curl php-zip php-mbstring
3Để định cấu hình, hãy chỉnh sửa tệp cấu hình
sudo dnf module enable php:7.4
==============================================================================================
Package Architecture Version Repository Size
==============================================================================================
Enabling module streams:
httpd 2.4
php 7.4
Transaction Summary
==============================================================================================
Is this ok [y/N]: y
Complete!
11$ sudo dnf install php php-cli php-gd php-curl php-zip php-mbstring
4ở đâu
12 tương ứng với dung lượng bộ nhớ cần thiết cho opcache [sẽ tăng lên cho đến khi đạt được tỷ lệ truy cập chính xác]sudo dnf module enable php:7.4 ============================================================================================== Package Architecture Version Repository Size ============================================================================================== Enabling module streams: httpd 2.4 php 7.4 Transaction Summary ============================================================================================== Is this ok [y/N]: y Complete!
13 số lượng chuỗi vào bộ đệmsudo dnf module enable php:7.4 ============================================================================================== Package Architecture Version Repository Size ============================================================================================== Enabling module streams: httpd 2.4 php 7.4 Transaction Summary ============================================================================================== Is this ok [y/N]: y Complete!
14 gần với kết quả của lệnhsudo dnf module enable php:7.4 ============================================================================================== Package Architecture Version Repository Size ============================================================================================== Enabling module streams: httpd 2.4 php 7.4 Transaction Summary ============================================================================================== Is this ok [y/N]: y Complete!
15sudo dnf module enable php:7.4 ============================================================================================== Package Architecture Version Repository Size ============================================================================================== Enabling module streams: httpd 2.4 php 7.4 Transaction Summary ============================================================================================== Is this ok [y/N]: y Complete!
Bạn có thể tham khảo trang
sudo dnf module enable php:7.4
==============================================================================================
Package Architecture Version Repository Size
==============================================================================================
Enabling module streams:
httpd 2.4
php 7.4
Transaction Summary
==============================================================================================
Is this ok [y/N]: y
Complete!
16 [bao gồm cả sudo dnf module enable php:7.4
==============================================================================================
Package Architecture Version Repository Size
==============================================================================================
Enabling module streams:
httpd 2.4
php 7.4
Transaction Summary
==============================================================================================
Is this ok [y/N]: y
Complete!
17] để định cấu hình opcache [xem ví dụ về các giá trị của sudo dnf module enable php:7.4
==============================================================================================
Package Architecture Version Repository Size
==============================================================================================
Enabling module streams:
httpd 2.4
php 7.4
Transaction Summary
==============================================================================================
Is this ok [y/N]: y
Complete!
18 và sudo dnf module enable php:7.4
==============================================================================================
Package Architecture Version Repository Size
==============================================================================================
Enabling module streams:
httpd 2.4
php 7.4
Transaction Summary
==============================================================================================
Is this ok [y/N]: y
Complete!
19]Ghi chú
Tại mỗi lần triển khai mã mới, cần phải làm trống opcache [ví dụ: bằng cách khởi động lại quy trình php-fpm]
Ghi chú
Đừng đánh giá thấp mức tăng tốc độ có thể đạt được bằng cách thiết lập và định cấu hình opcache chính xác