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/