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

⚠️ CentOS 7 đã hết hỗ trợ từ 30/06/2024. Hệ điều hành này không còn nhận bản vá an ninh, nên đừng dựng máy chủ mới trên nó. Các bước trong bài phần lớn vẫn chạy được, nhưng với máy mới hãy chọn AlmaLinux 9 (dòng kế thừa CentOS, lệnh yum và dnf gần như giữ nguyên) hoặc Ubuntu 24.04. Đang chạy CentOS 7 và cần chuyển, hãy nhắn qua khung chat ở góc phải màn hình.

⚠️ CentOS 7 đã hết hỗ trợ từ ngày 30/06/2024. Hệ điều hành này không còn nhận bản vá bảo mật, nên không nên dùng cho máy chủ dựng mới. Bài này giữ lại cho các máy đang chạy CentOS 7 và chưa chuyển được: các bước bên dưới vẫn đúng với những máy đó. Với máy mới, Cloudzone khuyên dùng AlmaLinux 9 hoặc một bản Ubuntu LTS; phần lớn các bước bên dưới áp dụng được, khác chủ yếu ở lệnh quản lý gói (dnf thay cho yum). Xem bài Chọn hệ điều hành nào cho VPS.

Lưu ý: CentOS 7 đã hết vòng đời từ tháng 6/2024 (không còn bản vá bảo mật). Các bước trong bài vẫn áp dụng tương tự cho AlmaLinux / Rocky Linux – dòng kế thừa CentOS; máy mới quý khách nên chọn AlmaLinux hoặc Ubuntu LTS. Xem thêm bài chọn hệ điều hành nào cho VPS.


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?

Cần đặt dịch vụ? Xem cấu hình và giá tại bảng giá Cloudzone - đặt gói trực tuyến, nhận dịch vụ ngay sau thanh toán. Cần tư vấn, mở khung chat ở góc phải màn hình.

Hướng dẫn liên quan