Tạo một tệp "/etc/profile.d/php.sh". Sử dụng PathMunge để thêm đường dẫn vào thùng PHP mà bạn muốn làm mặc định trên dòng một và lưu tệp.
Example:
pathmunge /opt/remi/php73/root/binTải lại hồ sơ của bạn sau đó bằng cách đăng nhập lại.
Bây giờ nếu bạn thực hiện một PHP và PHP -V, bạn sẽ thấy đầu ra sau trong trường hợp của tôi
[root@host etc]# which php /opt/remi/php73/root/bin/php [root@host etc]# php -v PHP 7.3.4 (cli) (built: Apr 2 2019 13:48:50) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.3.4, Copyright (c) 1998-2018 Zend Technologies with the ionCube PHP Loader (enabled) + Intrusion Protection from ioncube24.com (unconfigured) v10.3.4, Copyright (c) 2002-2019, by ionCube Ltd.Đây là cách ưa thích để thực hiện nhiệm vụ này bằng cách sử dụng các công cụ đã được cung cấp trên cài đặt tối thiểu. Điều này cũng cho phép các tập lệnh và lệnh nhấn đúng nhị phân PHP khi hoàn thành các tác vụ khác. Các lệnh như, lê, pecl, phar, php-config. Bạn muốn trải nghiệm của mình là toàn cầu khi thiết lập mặc định, nếu không bạn có thể tiếp tục nhận được các công cụ của phiên bản 5.6 khi cố gắng cài đặt tiện ích mở rộng hoặc hoàn thành một tác vụ khác.
Tác giả đã chọn Quỹ Cứu trợ Covid-19 để nhận quyên góp như một phần của Chương trình Viết cho Đóng góp.
Giới thiệu
Máy chủ Web Apache sử dụng máy chủ ảo để quản lý nhiều miền trên một thể hiện duy nhất. Tương tự, PHP-FPM sử dụng trình nền để quản lý nhiều phiên bản PHP trên một phiên bản duy nhất. Cùng với nhau, bạn có thể sử dụng Apache và PHP-FPM để lưu trữ nhiều ứng dụng web PHP, mỗi ứng dụng sử dụng một phiên bản PHP khác nhau, tất cả trên cùng một máy chủ và tất cả cùng một lúc. Điều này rất hữu ích vì các ứng dụng khác nhau có thể yêu cầu các phiên bản PHP khác nhau, nhưng một số ngăn xếp máy chủ, như ngăn xếp đèn được cấu hình thường xuyên, chỉ có thể quản lý một. Kết hợp Apache với PHP-FPM cũng là một giải pháp tiết kiệm chi phí hơn so với việc lưu trữ mỗi ứng dụng trên trường hợp riêng của nó.
PHP-FPM cũng cung cấp các tùy chọn cấu hình cho ghi nhật ký
- sudo yum install centos-release-scl -y
- sudo yum list rh-php7[0-9].x86_64
Trong hướng dẫn này, bạn sẽ thiết lập hai trang web PHP trên một trường hợp duy nhất. Mỗi trang web sẽ sử dụng tên miền riêng của mình và mỗi miền sẽ triển khai phiên bản PHP của riêng mình. Đầu tiên,
- sudo yum list rh-php7[0-9].x86_64
- sudo yum list rh-php7[0-9].x86_64
Điều kiện tiên quyết
- Một máy chủ Centos 7 có ít nhất 1GB RAM được thiết lập bằng cách theo dõi thiết lập máy chủ ban đầu với Centos 7, bao gồm người dùng không root sudo và tường lửa.
- Một máy chủ web Apache được thiết lập và định cấu hình bằng cách theo dõi cách cài đặt máy chủ web Apache trên CentOS 7.
- Một tên miền được cấu hình để trỏ đến máy chủ CentOS 7 của bạn. Bạn có thể tìm hiểu cách trỏ các tên miền vào các giọt DigitalOcean bằng cách làm theo cách trỏ đến các máy chủ tên DigitalOcean từ các nhà đăng ký miền chung. Đối với các mục đích của hướng dẫn này, chúng tôi sẽ sử dụng hai tên miền phụ, mỗi tên miền được chỉ định với bản ghi
- sudo yum list rh-php7[0-9].x86_64
- sudo yum list rh-php7[0-9].x86_64
- sudo yum list rh-php7[0-9].x86_64
Bước 1-Cài đặt phiên bản PHP 7.0 và 7.2 với PHP-FPM
Với các điều kiện tiên quyết đã hoàn thành, giờ đây bạn sẽ cài đặt Php phiên bản 7.0 và 7.2. Kho lưu trữ SCL (Bộ sưu tập phần mềm) duy trì nhiều phiên bản của ngăn xếp PHP cho hệ thống CentOS 7. Nếu bạn yêu cầu phiên bản mới nhất tuyệt đối của PHP và nó không có sẵn trên SCL, hãy kiểm tra
- sudo yum list rh-php7[0-9].x86_64
Bắt đầu bằng cách cài đặt kho lưu trữ SCL vào hệ thống của bạn:
- sudo yum install centos-release-scl -y
Đầu tiên, hãy để khám phá những phiên bản của PHP 7 có sẵn trên SCL:
- sudo yum list rh-php7[0-9].x86_64
Bạn sẽ thấy một đầu ra như thế này:
Output
Available Packages rh-php70.x86_64 2.3-1.el7 centos-sclo-rh rh-php71.x86_64 1-1.el7 centos-sclo-rh rh-php72.x86_64 1-2.el7 centos-sclo-rh rh-php73.x86_64 1-1.el7 centos-sclo-rhBạn sẽ lưu ý rằng phiên bản mới nhất, Php 7.3, cũng có sẵn. Tuy nhiên, đối với các ví dụ của chúng tôi, chúng tôi sẽ cài đặt phiên bản 7.0 và 7.2.
Hãy bắt đầu với phiên bản cũ hơn. Cài đặt
- sudo yum list rh-php7[0-9].x86_64
- sudo yum list rh-php7[0-9].x86_64
- sudo yum install rh-php70 rh-php70-php-fpm -y
- sudo yum list rh-php7[0-9].x86_64
- sudo yum list rh-php7[0-9].x86_64
Bây giờ lặp lại quy trình cho Php phiên bản 7.2. Cài đặt
Output
Available Packages rh-php70.x86_64 2.3-1.el7 centos-sclo-rh rh-php71.x86_64 1-1.el7 centos-sclo-rh rh-php72.x86_64 1-2.el7 centos-sclo-rh rh-php73.x86_64 1-1.el7 centos-sclo-rh 1 vàOutput
Available Packages rh-php70.x86_64 2.3-1.el7 centos-sclo-rh rh-php71.x86_64 1-1.el7 centos-sclo-rh rh-php72.x86_64 1-2.el7 centos-sclo-rh rh-php73.x86_64 1-1.el7 centos-sclo-rh 2.- sudo yum install rh-php72 rh-php72-php-fpm -y
Tiếp theo, chạy các lệnh sau để bắt đầu bằng cả hai bộ sưu tập phần mềm:
- sudo scl enable rh-php70 bash
- sudo scl enable rh-php72 bash
Theo mặc định, cả hai phiên bản PHP đều nghe trên cổng
Output
Available Packages rh-php70.x86_64 2.3-1.el7 centos-sclo-rh rh-php71.x86_64 1-1.el7 centos-sclo-rh rh-php72.x86_64 1-2.el7 centos-sclo-rh rh-php73.x86_64 1-1.el7 centos-sclo-rh 3. Nhưng trong hướng dẫn này, chúng tôi muốn chạy hai phiên bản đồng thời. Do đó, hãy để chỉ định hai cổng mới:Để thực hiện điều này, bạn có thể mở
Output
Available Packages rh-php70.x86_64 2.3-1.el7 centos-sclo-rh rh-php71.x86_64 1-1.el7 centos-sclo-rh rh-php72.x86_64 1-2.el7 centos-sclo-rh rh-php73.x86_64 1-1.el7 centos-sclo-rh 4 trong trình chỉnh sửa văn bản yêu thích của bạn và thay đổi mọi diện mạo củaOutput
Available Packages rh-php70.x86_64 2.3-1.el7 centos-sclo-rh rh-php71.x86_64 1-1.el7 centos-sclo-rh rh-php72.x86_64 1-2.el7 centos-sclo-rh rh-php73.x86_64 1-1.el7 centos-sclo-rh 3 thànhOutput
Available Packages rh-php70.x86_64 2.3-1.el7 centos-sclo-rh rh-php71.x86_64 1-1.el7 centos-sclo-rh rh-php72.x86_64 1-2.el7 centos-sclo-rh rh-php73.x86_64 1-1.el7 centos-sclo-rh 6. Sau đó lưu và đóng tệp và lặp lại quy trình choOutput
Available Packages rh-php70.x86_64 2.3-1.el7 centos-sclo-rh rh-php71.x86_64 1-1.el7 centos-sclo-rh rh-php72.x86_64 1-2.el7 centos-sclo-rh rh-php73.x86_64 1-1.el7 centos-sclo-rh 7, chỉ bây giờ thay thếOutput
Available Packages rh-php70.x86_64 2.3-1.el7 centos-sclo-rh rh-php71.x86_64 1-1.el7 centos-sclo-rh rh-php72.x86_64 1-2.el7 centos-sclo-rh rh-php73.x86_64 1-1.el7 centos-sclo-rh 3 bằngOutput
Available Packages rh-php70.x86_64 2.3-1.el7 centos-sclo-rh rh-php71.x86_64 1-1.el7 centos-sclo-rh rh-php72.x86_64 1-2.el7 centos-sclo-rh rh-php73.x86_64 1-1.el7 centos-sclo-rh 9. Thay phiên, bạn có thể sử dụng hai lệnh- sudo yum install rh-php70 rh-php70-php-fpm -y
- sudo sed -i 's/:9000/:9002/' /etc/opt/rh/rh-php70/php-fpm.d/www.conf
- sudo sed -i 's/:9000/:9003/' /etc/opt/rh/rh-php72/php-fpm.d/www.conf
Bây giờ bạn đã chỉ định một cổng chuyên dụng cho mỗi dịch vụ PHP của bạn. Tuy nhiên, trước khi các sửa đổi này sẽ hoạt động, bạn phải thêm các cổng vào cấu hình SELinux của mình.
Selinux viết tắt cho Linux nâng cao bảo mật và nó được bật theo mặc định trên Centos 7. Bạn phải thêm các cổng mới là
Output
Available Packages rh-php70.x86_64 2.3-1.el7 centos-sclo-rh rh-php71.x86_64 1-1.el7 centos-sclo-rh rh-php72.x86_64 1-2.el7 centos-sclo-rh rh-php73.x86_64 1-1.el7 centos-sclo-rh 6 vàOutput
Available Packages rh-php70.x86_64 2.3-1.el7 centos-sclo-rh rh-php71.x86_64 1-1.el7 centos-sclo-rh rh-php72.x86_64 1-2.el7 centos-sclo-rh rh-php73.x86_64 1-1.el7 centos-sclo-rh 9 vào cơ sở dữ liệu SELINUX của bạn và gán chúng cho dịch vụ HTTPD của bạn hoặc các ứng dụng của bạn sẽ không chạy. Sử dụng lệnh- sudo yum install rh-php70 rh-php70-php-fpm -y
- sudo semanage port -a -t http_port_t -p tcp 9002
- sudo semanage port -a -t http_port_t -p tcp 9003
Cờ
- sudo yum install rh-php70 rh-php70-php-fpm -y
- sudo yum install rh-php70 rh-php70-php-fpm -y
- sudo yum install rh-php70 rh-php70-php-fpm -y
- sudo yum install rh-php70 rh-php70-php-fpm -y
- sudo yum install rh-php70 rh-php70-php-fpm -y
- sudo yum install rh-php70 rh-php70-php-fpm -y
Bây giờ bạn đã sẵn sàng để bắt đầu và bật các dịch vụ PHP của bạn. Bắt đầu với dịch vụ
- sudo yum list rh-php7[0-9].x86_64
Tiếp theo, xác minh trạng thái của dịch vụ
- sudo yum list rh-php7[0-9].x86_64
Bạn sẽ thấy một đầu ra như thế này:
[root@host etc]# which php /opt/remi/php73/root/bin/php [root@host etc]# php -v PHP 7.3.4 (cli) (built: Apr 2 2019 13:48:50) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.3.4, Copyright (c) 1998-2018 Zend Technologies with the ionCube PHP Loader (enabled) + Intrusion Protection from ioncube24.com (unconfigured) v10.3.4, Copyright (c) 2002-2019, by ionCube Ltd. 2Lặp lại quá trình này, hãy bắt đầu dịch vụ
Output
Available Packages rh-php70.x86_64 2.3-1.el7 centos-sclo-rh rh-php71.x86_64 1-1.el7 centos-sclo-rh rh-php72.x86_64 1-2.el7 centos-sclo-rh rh-php73.x86_64 1-1.el7 centos-sclo-rh 2 và cho phép bắt đầu khi khởi động:[root@host etc]# which php /opt/remi/php73/root/bin/php [root@host etc]# php -v PHP 7.3.4 (cli) (built: Apr 2 2019 13:48:50) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.3.4, Copyright (c) 1998-2018 Zend Technologies with the ionCube PHP Loader (enabled) + Intrusion Protection from ioncube24.com (unconfigured) v10.3.4, Copyright (c) 2002-2019, by ionCube Ltd. 3Tiếp theo, xác minh trạng thái của dịch vụ
Output
Available Packages rh-php70.x86_64 2.3-1.el7 centos-sclo-rh rh-php71.x86_64 1-1.el7 centos-sclo-rh rh-php72.x86_64 1-2.el7 centos-sclo-rh rh-php73.x86_64 1-1.el7 centos-sclo-rh 2 của bạn:[root@host etc]# which php /opt/remi/php73/root/bin/php [root@host etc]# php -v PHP 7.3.4 (cli) (built: Apr 2 2019 13:48:50) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.3.4, Copyright (c) 1998-2018 Zend Technologies with the ionCube PHP Loader (enabled) + Intrusion Protection from ioncube24.com (unconfigured) v10.3.4, Copyright (c) 2002-2019, by ionCube Ltd. 4Bạn sẽ thấy một đầu ra khác như thế này:
[root@host etc]# which php /opt/remi/php73/root/bin/php [root@host etc]# php -v PHP 7.3.4 (cli) (built: Apr 2 2019 13:48:50) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.3.4, Copyright (c) 1998-2018 Zend Technologies with the ionCube PHP Loader (enabled) + Intrusion Protection from ioncube24.com (unconfigured) v10.3.4, Copyright (c) 2002-2019, by ionCube Ltd. 5Tại thời điểm này, bạn đã cài đặt hai phiên bản PHP trên máy chủ của mình. Tiếp theo, bạn sẽ tạo một cấu trúc thư mục cho mỗi trang web bạn muốn triển khai.
Bước 2 - Tạo cấu trúc thư mục cho cả hai trang web
Trong phần này, bạn sẽ tạo một thư mục gốc tài liệu và trang chỉ mục cho mỗi hai trang web của bạn.
Đầu tiên, hãy tạo các thư mục gốc tài liệu cho cả
- sudo yum list rh-php7[0-9].x86_64
- sudo yum list rh-php7[0-9].x86_64
Theo mặc định, máy chủ web Apache chạy với tư cách là người dùng
- sudo yum install rh-php72 rh-php72-php-fpm -y
- sudo yum install rh-php72 rh-php72-php-fpm -y
- sudo yum install rh-php72 rh-php72-php-fpm -y
Lệnh
- sudo yum install rh-php72 rh-php72-php-fpm -y
- sudo yum install rh-php72 rh-php72-php-fpm -y
- sudo yum install rh-php72 rh-php72-php-fpm -y
- sudo scl enable rh-php70 bash
- sudo scl enable rh-php72 bash
Tiếp theo bạn sẽ tạo một tệp
- sudo scl enable rh-php70 bash
- sudo scl enable rh-php72 bash
- sudo scl enable rh-php70 bash
- sudo scl enable rh-php72 bash
Thêm dòng sau:
/var/www/site1.your_domain/info.php
[root@host etc]# which php /opt/remi/php73/root/bin/php [root@host etc]# php -v PHP 7.3.4 (cli) (built: Apr 2 2019 13:48:50) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.3.4, Copyright (c) 1998-2018 Zend Technologies with the ionCube PHP Loader (enabled) + Intrusion Protection from ioncube24.com (unconfigured) v10.3.4, Copyright (c) 2002-2019, by ionCube Ltd. 9Lưu và đóng tập tin. Bây giờ sao chép tệp
- sudo scl enable rh-php70 bash
- sudo scl enable rh-php72 bash
- sudo scl enable rh-php70 bash
- sudo scl enable rh-php72 bash
- sudo yum install centos-release-scl -y
Máy chủ web của bạn hiện có các thư mục gốc tài liệu mà mỗi trang web yêu cầu để phục vụ dữ liệu cho khách truy cập. Tiếp theo, bạn sẽ định cấu hình máy chủ web Apache của mình để hoạt động với hai phiên bản PHP khác nhau.
Bước 3 - Định cấu hình Apache cho cả hai trang web
Trong phần này, bạn sẽ tạo hai tệp cấu hình máy chủ ảo. Điều này sẽ cho phép hai trang web của bạn hoạt động đồng thời với hai phiên bản PHP khác nhau.
Để Apache phục vụ nội dung này, cần phải tạo một tệp máy chủ ảo với các chỉ thị chính xác. Bạn sẽ tạo hai tệp cấu hình máy chủ ảo mới bên trong thư mục
- sudo scl enable rh-php70 bash
- sudo scl enable rh-php72 bash
Trước tiên, hãy tạo một tệp cấu hình máy chủ ảo mới cho trang web
- sudo yum list rh-php7[0-9].x86_64
- sudo yum install centos-release-scl -y
Thêm nội dung sau. Đảm bảo đường dẫn thư mục trang web, tên máy chủ, cổng và phiên bản PHP phù hợp với thiết lập của bạn:
/etc/httpd/conf.d/site1.your_domain.conf
- sudo yum install centos-release-scl -y
Đối với
- sudo scl enable rh-php70 bash
- sudo scl enable rh-php72 bash
- sudo sed -i 's/:9000/:9002/' /etc/opt/rh/rh-php70/php-fpm.d/www.conf
- sudo sed -i 's/:9000/:9003/' /etc/opt/rh/rh-php72/php-fpm.d/www.conf
- sudo sed -i 's/:9000/:9002/' /etc/opt/rh/rh-php70/php-fpm.d/www.conf
- sudo sed -i 's/:9000/:9003/' /etc/opt/rh/rh-php72/php-fpm.d/www.conf
- sudo sed -i 's/:9000/:9002/' /etc/opt/rh/rh-php70/php-fpm.d/www.conf
- sudo sed -i 's/:9000/:9003/' /etc/opt/rh/rh-php72/php-fpm.d/www.conf
- sudo sed -i 's/:9000/:9002/' /etc/opt/rh/rh-php70/php-fpm.d/www.conf
- sudo sed -i 's/:9000/:9003/' /etc/opt/rh/rh-php72/php-fpm.d/www.conf
Output
Available Packages rh-php70.x86_64 2.3-1.el7 centos-sclo-rh rh-php71.x86_64 1-1.el7 centos-sclo-rh rh-php72.x86_64 1-2.el7 centos-sclo-rh rh-php73.x86_64 1-1.el7 centos-sclo-rh 6. Các chỉ thị còn lại cũng định cấu hình dịch vụ của bạn để triển khai Php 7.0.Lưu và đóng tập tin.
Tiếp theo, tạo một tệp cấu hình máy chủ ảo mới cho trang web
- sudo yum list rh-php7[0-9].x86_64
- sudo yum install centos-release-scl -y
Thêm nội dung sau. Một lần nữa, hãy đảm bảo đường dẫn thư mục trang web, tên máy chủ, cổng và phiên bản PHP phù hợp với thông tin duy nhất của bạn:
/etc/httpd/conf.d/site2.your_domain.conf
- sudo yum install centos-release-scl -y
Lưu và đóng tệp khi bạn hoàn thành. Sau đó kiểm tra tệp cấu hình Apache để biết bất kỳ lỗi cú pháp nào:
- sudo yum install centos-release-scl -y
Bạn sẽ thấy một bản in đầu ra
- sudo sed -i 's/:9000/:9002/' /etc/opt/rh/rh-php70/php-fpm.d/www.conf
- sudo sed -i 's/:9000/:9003/' /etc/opt/rh/rh-php72/php-fpm.d/www.conf
- sudo yum install centos-release-scl -y
Cuối cùng, hãy khởi động lại dịch vụ Apache để thực hiện các thay đổi của bạn:
- sudo yum install centos-release-scl -y
Bây giờ bạn đã cấu hình Apache để phục vụ từng trang web, bạn sẽ kiểm tra chúng để đảm bảo các phiên bản PHP phù hợp đang chạy.
Bước 4 - Kiểm tra cả hai trang web
Tại thời điểm này, bạn đã cấu hình hai trang web để chạy hai phiên bản PHP khác nhau. Bây giờ kiểm tra kết quả.
Mở trình duyệt web của bạn và truy cập cả hai trang web
- sudo sed -i 's/:9000/:9002/' /etc/opt/rh/rh-php70/php-fpm.d/www.conf
- sudo sed -i 's/:9000/:9003/' /etc/opt/rh/rh-php72/php-fpm.d/www.conf
- sudo sed -i 's/:9000/:9002/' /etc/opt/rh/rh-php70/php-fpm.d/www.conf
- sudo sed -i 's/:9000/:9003/' /etc/opt/rh/rh-php72/php-fpm.d/www.conf
Lưu ý các tiêu đề. Trang đầu tiên chỉ ra rằng
- sudo yum list rh-php7[0-9].x86_64
- sudo yum list rh-php7[0-9].x86_64
Bây giờ bạn đã kiểm tra các trang web của mình, hãy xóa các tệp
- sudo scl enable rh-php70 bash
- sudo scl enable rh-php72 bash
- sudo yum install centos-release-scl -y
Bây giờ bạn có một máy chủ Centos 7 xử lý hai trang web với hai phiên bản PHP khác nhau. PHP-FPM, tuy nhiên, không giới hạn trong một ứng dụng này.
Sự kết luận
Bây giờ bạn đã kết hợp máy chủ ảo và PHP-FPM để phục vụ nhiều trang web và nhiều phiên bản PHP trên một máy chủ. Giới hạn thực tế duy nhất về số lượng trang web PHP và phiên bản PHP mà dịch vụ Apache của bạn có thể xử lý là sức mạnh xử lý của phiên bản của bạn.
Từ đây, bạn có thể xem xét khám phá các tính năng nâng cao hơn của PHP-FPM, như quy trình sinh sản thích ứng của nó hoặc làm thế nào nó có thể đăng nhập
- sudo semanage port -a -t http_port_t -p tcp 9002
- sudo semanage port -a -t http_port_t -p tcp 9003
- sudo yum install centos-release-scl -y