Skip to main content

[Thủ Thuật Linux] Cài đặt nhiều phiên bản PHP trên Centos 7/RHEL 7

Hướng dẫn Cài đặt nhiều phiên bản PHP trên Centos 7/RHEL 7 là bài viết hướng dẫn nhanh cho bạn nào cần chạy nhiều project với các phiên bản khác nhau trên cùng một Server.

Ví dụ ở đây Project 1: example1.com chạy PHP 8.0 và project 2 : example2.com chạy PHP 7.4

Bước 1 : Cài đặt Yum Repositories 

Bỏ qua nếu bạn đã cài đặt rồi

yum install epel-release
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
sudo yum install yum-utils -y

Bước 2: Cài đặt thêm phiên bản PHP

Trong ví dụ, server hiện đang sử dụng để test thì dùng PHP 8.0 làm mặc định và giờ mình muốn cài PHP 7.4 cho project khác.

Kiểm tra phiên bản hiện tại của server 

php -v

# kết quả như sau
PHP 8.0.18 (cli) (built: Apr 13 2022 02:45:05) ( NTS gcc x86_64 )
Copyright (c) The PHP Group
Zend Engine v4.0.18, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.18, Copyright (c), by Zend Technologies

Giờ ta sẽ cài đặt package PHP74 mới dùng cho riêng domain example.com bằng lệnh.

sudo yum install php74 php74-php-common php74-php-fpm  
sudo yum install php74-php-mysql php74-php-pecl-memcache php74-php-pecl-memcached php74-php-gd php74-php-mbstring php74-php-mcrypt php74-php-xml php74-php-pecl-apc php74-php-cli php74-php-pear php74-php-pdo  php74-php-zip

Bước 3: Config phiên bản PHP trong nginx

Theo mặc định hiện tại của server vẫn là phiên bản php 8 và dùng port 9000 làm mặc định cho php-fpm, giờ mình phải config riêng cho phiên bản php 7.4 trên một port khác là 9001

Mở file /opt/remi/php74/root/etc/php-fpm.d/www.conf

và thay đổi các giá trị như sau

user = nginx
group = nginx
listen = 127.0.0.1:9001 

Khởi động php 7.4

sudo systemctl enable php74-php-fpm 
sudo systemctl restart php74-php-fpm 

Lưu ý: Nếu bạn gặp bất kỳ sự cố nào khi khởi động lại PHP 7.4 , SELinux có thể chặn nó khởi động.

Để vô hiệu hoá SELinux bạn lần lượt làm theo các bước sau:

sudo vi /etc/sysconfig/selinux

Sau đó tìm đến dòng SELINUX=enforcing chọn phím i để vào trạng thái chỉnh sửa tệp tin và chỉnh thành SELINUX=disabled. Sau đó nhấn phím ESC để thoát trạng thái chỉnh sửa và sử dụng tổ hợp phím :x + Enter để lưu lại.

Dùng lệnh sestatus check lại 

sestatus

#Kết quả
SELinux status:                 disabled

Bước 4: Config virtual host trong nginx

Thay giá trị fastcgi_pass của virtual host mà bạn muốn sử dụng PHP 7.4, ví như sau

server {
    listen 80;
    server_name example.com www.example.com;

    root   /var/www/html/example.com;
    index index.php index.html index.htm;

    #charset koi8-r;
    access_log /var/log/nginx/access_log;
    error_log   /var/log/nginx/error_log   error;

   location / {
            try_files $uri $uri/ /index.php?$query_string;
    }

   # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    location ~ \.php$ {

            root    /var/www/html/example.com;
            fastcgi_pass   127.0.0.1:9001;    #set port for php-fpm to listen on
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include         fastcgi_params;
            include /etc/nginx/fastcgi_params;

    }
}

Restart lại service

sudo systemctl restart nginx php-fpm php74-php-fpm

GIờ bạn sẽ check, các virtual host sẽ sử dụng php 8 và chỉ riêng example.com sẽ sử dụng php 7.4

Tham khảo bài viết tại đây : https://cloudwafer.com/