Hướng dẫn cài đặt và cấu hình để dùng nhiều version PHP (Multiple versions PHP)

Để cài đặt nhiều version php cho nhiều project website, dùng yum-config-manager để cài đặt multiple versions of PHP. Và lưu ý bài viết này dành cho những người có kiến thức cơ bản về Nginx và PHP.

1. Cài đặt và cấu hình các version PHP

1.1 Cài đặt PHP 7.1 Version

# yum-config-manager --enable remi-php71 [Default]
# yum install php php-common php-fpm
# yum install php-mysql php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml php-pecl-apc php-cli php-pear php-pdo

1.2 Cài đặt PHP 5.6 Version

# yum install php56 php56-php-common php56-php-fpm
# yum install php56-php-mysql php56-php-pecl-memcache php56-php-pecl-memcached php56-php-gd php56-php-mbstring php56-php-mcrypt php56-php-xml php56-php-pecl-apc php56-php-cli php56-php-pear php56-php-pdo

Kiểm tra version PHP mặc định.

# php -v

1.3 Cấu hình PHP-FPM và PHP56-PHP-FPM

Đây là phần cấu hình php-fpm sẽ hoạt động tương thích với Nginx. Cần thiết lập user/group của FastCGI khi hoạt động trên Nginx sẽ listen đúng port.

php-fpm (default 7.1): /etc/php-fpm.d/www.conf

php56-php-fpm: /opt/remi/php56/root/etc/php-fpm.d/www.conf

Mở file config đề thiết lập user/group của FastCGI.

# vi /etc/php-fpm.d/www.conf [PHP 7.1]
# vi /opt/remi/php56/root/etc/php-fpm.d/www.conf [PHP 5.6]

Cập nhật thông tin user/group

user = nginx
group = nginx

Kế tiếp, cập nhật thiết lập address:port cho FastCGI listen các request sẽ nhận.

listen = 127.0.0.1:9000 [php-fpm]
listen = 127.0.0.1:9001 [php56-php-fpm]

2. Thiết lập Nginx dùng PHP-FPM tương ứng

2.1 Khởi chạy services

----------------  NGINX  ---------------- 
# systemctl enable nginx 
# systemctl start nginx 
---------------- PHP 7.1 ---------------- 
# systemctl enable php-fpm 
# systemctl start php-fpm 
---------------- PHP 5.6 ----------------
# systemctl enable php56-fpm 
# systemctl start php56-php-fpm 

Nếu trường hợp bị lỗi xãy ra thì gõ lệnh sau:

# getenforce
# setenforce 0 

2.2 Thiết lập đường dẫn cho website

Tạo các folder web để chạy các version PHP khác nhau trong /var/www/html/.

---------------- Website 1 ----------------
# mkdir -p /var/www/html/example1.com/
# mkdir -p /var/www/html/example2.com/
---------------- Website 2 ----------------
# mkdir -p /var/log/nginx/example1.com/
# mkdir -p /var/log/nginx/example2.com/

2.3 Thiết lập permission

---------------- Website 1 ----------------
# chown -R root:nginx /var/www/html/example1.com/
# chmod -R 755 /var/www/html/example1.com/
# chown -R root:nginx /var/log/nginx/example1.com/
# chmod -R 660 /var/log/nginx/example1.com/
---------------- Website 2 ----------------
# chown -R root:nginx /var/www/html/example2.com/
# chmod -R 755 /var/www/html/example2.com/
# chown -R root:nginx /var/log/nginx/example2.com/
# chmod -R 660 /var/log/nginx/example2.com/

2.4 Config Nginx Server cho  các Website

Tạo các config Nginx cho các website tại /etc/nginx/conf.d/.

# vi /etc/nginx/conf.d/example1.com.conf
# vi /etc/nginx/conf.d/example2.com.conf

Website 1 cấu hình cho example1.com

server {
	listen 80;
	server_name example1.com www.example1.com;
	root   /var/www/html/example1.com/;
	index index.php index.html index.htm;
	#charset koi8-r;
	access_log /var/log/nginx/example1.com/example1_access_log;
	error_log   /var/log/nginx/example1.com/example1_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/example1.com/;
		fastcgi_pass   127.0.0.1:9000;	#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;
	}
}

Website 2 cấu hình cho example2.com

server {
	listen 80;
	server_name example2.com www.example2.com;
	root /var/www/html/example2.com/;
	index index.php index.html index.htm;
	
	#charset koi8-r;
	access_log /var/log/nginx/example2.com/example2_access_log;
	error_log /var/log/nginx/example2.com/example2_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/example2.com/;
		fastcgi_pass 127.0.0.1:9001; #set port for php56-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;
	}
}

Kế tiếp tạo các nội dung chứa phpinfo() để xem các version PHP của các website.

# echo "" > /var/www/html/example1.com/info.php
# echo "" > /var/www/html/example2.com/info.php

Để apply các cấu hình thì phải restart lại các services.

# nginx -t
# systemctl restart nginx php-fpm php56-php-fpm
Verify Nginx Configuration
Verify Nginx Configuration

Nếu chạy dưới local thì nhớ cấu hình /etc/hosts.

Cuối cùng truy cập vào domain các trang đã setup trong config nginx để xem thành quả.

Sliding Sidebar

About Me

About Me

Hello, my name is Dũng (Johnny). Welcome to my blog.

As I’m a developer, I write about topics related to the field of programming, mainly from a technical point of view. On this blog you’ll find posts which encourage discussion, information about development trends, case studies, reviews, tutorials, tips on how to improve your effectiveness, and anything else that might be fascinating to people from the IT industry.
I love PHP, NodeJS, Java,... and Fullstack.