Hướng dẫn chạy nhiều trang web dùng các phiên bản PHP khác nhau sử dụng PHP-FPM và Apache trên CentOS 7

A. Điều kiện

B. Cài đặt

Bước 1: Cài đặt SCL repository

sudo yum install centos-release-scl -y

Bước 2: Xem tên các gói của các phiên bản PHP7 bằng lệnh

sudo yum list rh-php7[0-9].x86_64

  • Lưu ý các mã gói/Folder tương ứng với các phiên bản PHP
    • php70 – PHP 7.0
    • php71 – PHP 7.1
    • php72 – PHP 7.2
    • php73 – PHP 7.3

Bước 3: Tiến hành cài đặt PHP phiên bản phù hợp vào hệ thống

  • Lưu ý Trong bài này sẽ hướng dẫn thiết lập 2 site cho PHP 7.0 và PHP 7.2. Còn các bạn sẽ tự tuỳ chỉnh theo nhu cầu của các bạn
  • Cài PHP 7.0:
sudo yum install rh-php70 rh-php70-php-fpm -y
  • Cài PHP 7.1
sudo yum install rh-php71 rh-php71-php-fpm -y
  • Cài PHP 7.2:
sudo yum install rh-php72 rh-php72-php-fpm -y
  • Cài PHP 7.3
sudo yum install rh-php73 rh-php73-php-fpm -y

Bước 4: Tiến hành kích hoạt PHP

  • PHP 7.0
sudo scl enable rh-php70 bash
  • PHP 7,1
sudo scl enable rh-php71 bash
  • PHP 7,2
sudo scl enable rh-php72 bash
  • PHP 7.3
sudo scl enable rh-php73 bash

Bước 5: Đổi cổng cho PHP

  • Bình thường PHP sẽ chạy trên cổng 9000. Tuy nhiên ở đây tôi muốn 2 phiên bản chạy cùng lúc do vậy tôi sẽ cho PHP 7.0 chạy ở cổng 9002 và PHP 7.2 chạy ở cổng 9003
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
  • Cấp quyền trong SELinux
sudo semanage port -a -t http_port_t -p tcp 9002

sudo semanage port -a -t http_port_t -p tcp 9003

Bước 6: Kích hoạt PHP 7.0 và PHP 7.2

  • Đối với PHP 7.0
sudo systemctl start rh-php70-php-fpm

sudo systemctl enable rh-php70-php-fpm
  • Đối với PHP 7.2
sudo systemctl start rh-php72-php-fpm

sudo systemctl enable rh-php72-php-fpm

Bước 6: Cấu hình Folder lưu mã nguồn

sudo chown -R apache:apache /var/www/vnexpress.tech/html

sudo chown -R apache:apache /var/www/greatlink.tech/html
  • Cấp quyền 755
sudo chmod -R 755 /var/www/vnexpress.tech/html

sudo chmod -R 755 /var/www/greatlink.tech/html
  • Tạo file info.php để test
sudo nano /var/www/vnexpress.tech/html/info.php

Nhập nội dung Files

<?php phpinfo(); ?>

copy sang folder còn lại

sudo cp /var/www/vnexpress.tech/html/info.php /var/www/greatlink.tech/html/info.php

Bước 7

Sửa file cấu hình Apache.

Ở bài Thiết lập Virtual Host trên Apache trong CentOS 7 chúng ta đã có 2 file cấu hình được lưu tại /etc/httpd/sites-available

Giờ chúng ta sẽ sửa chúng để chúng hoạt động với PHP

Ví dụ site chạy PHP 7.0 ở cổng 9002 (đã cấu hình ở trên) thì chúng ta sẽ thêm những dòng sau vào giữa block <Virutal Host>

SetHandler "proxy:fcgi://127.0.0.1:9002
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
AddHandler php70-fcgi .php
Action php70-fcgi /cgi-bin/php70.fcgi

Tương tự với site chạy PHP 7.2 ở cổng 9003

SetHandler "proxy:fcgi://127.0.0.1:9003
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
AddHandler php72-fcgi .php
Action php72-fcgi /cgi-bin/php72.fcgi

Với các bạn đã cài Let’s Encrypt thì có thêm 2 file -le dành cho SSL thì các bạn sửa hết nhé

Bước 8: Kiểm tra cấu hình xem bị sai đâu không

sudo apachectl configtest

Thấy báo Syntax OK là được

Bước 9: Khởi chạy lại Apache

sudo systemctl restart httpd

Bước 10: Truy cập vào đường dẫn domain/info.php để kiểm tra PHP đang chạy

Hướng dẫn này có ích cho bạn?

Hướng dẫn liên quan