Cài đặt php7.4 trên centos nginx và cấu hình domain theo phiên bản php tùy ý.

Khi bạn muốn chỉ định domain sử dụng 1 phiên bản php bất kỳ có trên server centos nginx, vd như php7.4 vậy bạn cần làm các việc sau

Cài đặt phiên bản php7.4 trên centos nginx

Bạn cần kiểm tra trên server có phiên bản php7.4 bằng lệnh sau:

rpm -qa | grep php-fpm

Nếu list ra danh sách không có php7.4 tương tự php74-php-fpm-7.4.33-15.el7.remi.x86_64 thì có thể là bạn chưa cài, vậy tiến hành cài.

Cài đặt Remi Repository:

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

Cài đặt PHP 7.4:

sudo yum install yum-utils
sudo yum-config-manager --enable remi-php74
sudo yum install php php-cli php-fpm

Sau đó kiểm tra xem dịch vụ php7.4 chạy chưa bằng lệnh

systemctl list-units --type=service | grep php-fpm

Nếu list ra php74-fpm.service loaded active running LSB: starts php-fpm  chứng tỏ là đã chạy, bạn có thể tiếp tục kiểm tra trạng thái bằng lệnh systemctl status php74-fpm.service nếu trạng thái ready xanh và không báo lỗi gì thì php7.4 đã cài và chạy thành công.

Bạn có thể restart lại php7.4 khi cần bằng lệnh

systemctl restart php74-fpm

Cách setup cấu hình phiên bản php7.4 theo từng domain riêng biệt

Bước 1: Vào thư mục /app/php74/etc/php-fpm.d tạo file domain.com.conf với nội dung sau;

[domain.com]
listen = /app/php74/var/run/php-domain.com.sock
user = nginx
group = nginx
;request_slowlog_timeout = 5s
;slowlog = /app/php74/var/log/slowlog-domain.com.log
listen.allowed_clients = 127.0.0.1
pm = ondemand
pm.max_children = 40
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 8
pm.max_requests = 1000
listen.backlog = 511
pm.status_path = /status
request_terminate_timeout = 120s
rlimit_files = 131072
rlimit_core = unlimited
catch_workers_output = yes
env[HOSTNAME] = $HOSTNAME
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp

sau khi tạo file /app/php74/etc/php-fpm.d/domain.com.conf  bạn cần restart lại php7.4 với lệnh systemctl restart php74-fpm

File /app/php74/var/run/php-domain.com.sock sẽ được tự động tạo ở thư mục /app/php74/var/run

Bước 2: Vào thư mục /etc/nginx/sites-available mở fiel domain.conf thêm đường dẫn socket của php7.4

Tại vị trí location ~ .php$ { … thay phiên bản php mặc định bằng fastcgi_pass unix:/app/php74/var/run/php-domain.com.sock; # Đường dẫn socket của PHP-FPM

code vd đầy đủ như sau:


server {
        listen 80;
        server_name domain.com www.domain.com;
        access_log  /var/log/nginx/domain.com-access.log  main;
        error_log   /var/log/nginx/domain.com-error.log info;

        root         /data/vhosts/domain.com;
        index index.php index.html index.htm;
        client_max_body_size 100M;	
        location / { 
			try_files $uri $uri/ @rewrite;
        }
		
		location @rewrite {
			 try_files $uri $uri/ /index.php?$args;
		}
		
		location ~* /wp-content/uploads/.*\.php$ {
			deny all;
		}
	

    location /wp-login.php {
			auth_basic "Restricted Area";
			auth_basic_user_file /etc/nginx/.htpasswd;
			try_files $uri $uri/ /index.php?$args;
    }

	location /wp-admin {
			auth_basic "Restricted Area";
			auth_basic_user_file /etc/nginx/.htpasswd;
			try_files $uri $uri/ /index.php?$args;
		}
		
	location /_mydb {
            alias /usr/share/nginx/html/_myadmin/;

            location ~ \.php$ {
          	fastcgi_pass  unix:/app/php74/var/run/php-domain.com.sock
          	include fastcgi_params;                       
          	fastcgi_param SCRIPT_FILENAME $request_filename;
      	    }
    	}

        # execute all .php files via php-fpm
        location ~ .php$ {
            # connect to a unix domain-socket:
            #fastcgi_pass unix:/var/run/php5-fpm.sock;
            fastcgi_pass  unix:/app/php74/var/run/php-domain.com.sock; # Đường dẫn socket của PHP-FPM

            fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
            fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;

            fastcgi_buffer_size 128k;
            fastcgi_buffers 256 16k;
            fastcgi_busy_buffers_size 256k;
            fastcgi_temp_file_write_size 256k;

            # This file is present on Debian systems..
            include fastcgi_params;
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }

}


Sau khi chỉnh sửa file domain.conf hoàn chỉnh hãy restart nginx bằng lệnh sudo systemctl restart nginx và thử tạo file chạy với lệnh phpinfo() nếu show thông tin phiên bản php7.4 là bạn đã thành công.