Cách cấu hình chạy nhiều phiên bản PHP cho webserver Nginx trên CentOs 7

Cài đặt gói Epel và Remi

# yum -y install epel-release
# yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

Cài đặt webserver nginx trên CentOs 7

# yum --enablerepo=epel -y install nginx

Cấu hình webserver nginx trên CentOs 7

# vi /etc/nginx/nginx.conf

Dòng 41: Đổi Server name

server_name  nginx.centos7;

Khởi động webserver Nginx

# systemctl start nginx
# systemctl enable nginx

Nếu Firewall đang mở thì phải cho phép port 80

#  firewall-cmd --add-service=http --permanent 
success
# firewall-cmd --reload
success

Kiểm tra kết quả

Mặc định server Nginx chỉ có thể show được thông qua địa chỉ IP .Không show được thông tin webserver qua Name Server như hình dưới:

# curl -I http://192.168.48.131
Cách cấu hình chạy nhiều phiên bản PHP cho webserver Nginx trên CentOs 7

Để có thể show được thông qua Name Server, chúng ta phải cấu hình thêm cho file hosts trên CentOs 7

# vi /etc/hosts
Thêm vào dòng sau:
192.168.48.131 nginx.centos7

Kiểm tra lại

# curl -I http://nginx.centos7

Tương tự trên Laptop hay PC ssh vào server cùng mạng local, chúng ta cũng chỉnh sửa file hosts như trên để có thể kiểm tra được webserver nginx có đang hoạt động trên cả tên miền lẫn địa chỉ IP được hay không?

Cài MySQL5.7 database server trên CentOs 7

Cài gói MySQL Repository

# yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

Cài MySQL 5.7 Server

# yum install mysql-community-server
# systemctl start mysqld
# systemctl enable mysqld

Sử dụng câu lệnh sau đây để lấy temporary MySQL password ( phần in đậm)

# grep 'A temporary password' /var/log/mysqld.log |tail -1
2019-02-19T06:45:59.649316Z 1 [Note] A temporary password is generated for [email protected]: ;jLk6tiQ6AKD
# mysql_secure_installation

Rồi dùng mật khẩu ở trên login vào sau đó đổi mật khẩu và các bước như sau:

# Enter password for user root:      ==>           ( nhập password)
# Change the password for root ? ==> Hỏi có muốn đổi password hay không?
# Remove anonymous users? ==> hỏi có muốn xóa user vô danh không?
# Disallow root login remotely?==> Không cho phép user root đăng nhập từ xa ?
# Remove test database and access to it? ==> Hỏi là có muốn xóa database test và truy cập vào nó không?
# Reload privilege tables now? ==> Hỏi là có muốn tải lại các trạng thái quyền của các bảng không?

Kiểm tra version của MySql Server

# mysql -V
mysql Ver 14.14 Distrib 5.7.25, for Linux (x86_64) using EditLine wrapper

Đăng nhập vào MySql server và test

# mysql -u root -p 

1 số cách đăng nhập khác:

# mysql -h 192.168.48.131 root -p
# mysql -h localhost root -p

Sau khi sử dụng password của user root để đăng nhâp vào, chúng ta tạo thử 1 database hoàn toàn mới :

/* tạo database testdb */
mysql> CREATE DATABASE testdb;
/* tạo MySql user/password cho database */
mysql> CREATE USER 'adminuser'@'localhost' IDENTIFIED BY '[email protected]';
/* Phân quyền cho user vừa tạo ( ở đây mình set full quyền) */
mysql> GRANT ALL ON testdb.* TO 'adminuser'@'localhost';
/* Reload lại privileges để apply quyền */
mysql> FLUSH PRIVILEGES;

Kiểm tra xem đã có database testdb chưa?

mysql> show databases;

Cài đặt php56 và php56-php-fpm trên CentOs7

# yum install --enablerepo=remi php56-php php56-php-pecl-memcached  php56-php-mysql php56-php-bcmath php56-php-cli php56-php-common php56-php-dba php56-php-devel php56-php-embedded php56-php-enchant php56-php-gd php56-php-imap php56-php-mbstring php56-php-mcrypt php56-php-pdo php56-php-xml php56-php-fpm

Cài đặt php72 và php72-php-fpm trên CentOs7

# yum install --enablerepo=remi php72-php php72-php-pecl-memcached php72-php-mysql php72-php-bcmath php72-php-cli php72-php-common php72-php-dba php72-php-devel php72-php-embedded php72-php-enchant php72-php-gd php72-php-imap php72-php-mbstring php72-php-mcrypt php72-php-pdo php72-php-xml php72-php-fpm 

Muốn hiển thị lệnh mặc định khi kiểm tra version PHP thì add thêm lệnh

ln -s /usr/bin/php72 /usr/bin/php

Kiểm tra xem file config php đang load ở 5.6 hay là 7.2 thì dùng lệnh

php --ini | grep "Loaded Configuration File"

Đổi port mà FastCGI requests , sau đó đổi User/group thành nginx ( mặc định là apache)

# vi /opt/remi/php56/root/etc/php-fpm.d/www.conf
Dòng 23,25
user = nginx
group = nginx

Dòng 39
listen = 127.0.0.1:9056
# vi /etc/opt/remi/php72/php-fpm.d/www.conf
Dòng 24,26
user = nginx
group = nginx

Dòng 38
listen = 127.0.0.1:9072

Khởi động php-fpm trên 2 version

# systemctl start php56-php-fpm
# systemctl enable php56-php-fpm
# systemctl start php72-php-fpm
# systemctl enable php72-php-fpm

Tạo 2 folder chứa đường dẫn của 2 websites

# mkdir -p /var/www/html/nginx56
# mkdir -p /var/www/html/nginx72

Tạo 2 đường dẫn chứa file logs của 2 websites

# mkdir -p /var/log/nginx/nginx56
# mkdir -p /var/log/nginx/nginx72

Phân quyền cho các folder đã tạo của website chạy PHP5.6

# chown -R root:nginx /var/www/html/nginx56
# chmod -R 755 /var/www/html/nginx56
# chown -R root:nginx /var/log/nginx/nginx56
# chmod -R 660 /var/log/nginx/nginx56

Phần quyền cho các folder đã tạo của website chạy PHP7.2


# chown -R root:nginx /var/www/html/nginx72
# chmod -R 755 /var/www/html/nginx72
# chown -R root:nginx /var/log/nginx/nginx72
# chmod -R 660 /var/log/nginx/nginx72

Cấu hình Virtual host cho website chạy PHP5.6


# vi /etc/nginx/conf.d/nginx56.conf

Dán vào file cấu hình như bên dưới


server {
        listen 80;
        server_name nginx56.centos7 www.nginx56.centos7;
 
        root   /var/www/html/nginx56/;
        index index.php index.html index.htm;
 
        #charset koi8-r;
        access_log /var/log/nginx/nginx56/nginx56_access_log;
        error_log   /var/log/nginx/nginx56/nginx56_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/nginx56/;
                fastcgi_pass   127.0.0.1:9056;  #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;
 
        }
}

Cấu hình Virtual host cho webserver nginx chạy PHP7.2

# vi /etc/nginx/conf.d/nginx72.conf

Dán vào file cấu hình như sau

 
server {
        listen 80;
        server_name nginx72.centos7 www.nginx72.centos7;
 
        root   /var/www/html/nginx72/;
        index index.php index.html index.htm;
 
        #charset koi8-r;
        access_log /var/log/nginx/nginx72/nginx72_access_log;
        error_log   /var/log/nginx/nginx72/nginx72_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/nginx56/;
                fastcgi_pass   127.0.0.1:9072;  #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;
 
        }
}

Tạo 2 file PHP để kiểm tra version của website đã đúng chưa?


# echo "<?php phpinfo(); ?>" > /var/www/html/nginx56/info.php
# echo "<?php phpinfo(); ?>" > /var/www/html/nginx72/info.php

Khởi động lại các dịch vụ

# systemctl restart nginx php56-php-fpm php72-php-fpm

Kiểm tra trên Client

Cách cấu hình chạy nhiều phiên bản PHP cho webserver Nginx trên CentOs 7

Cảm ơn mọi người đã theo dõi

Leave a Reply

Your email address will not be published. Required fields are marked *