Giunsa ang Pagdagan sa Daghang Website nga adunay Nagkalainlain nga Bersyon sa PHP sa Nginx


Usahay ang mga developer sa PHP gusto nga magtukod ug magpadagan sa lainlaing mga website/aplikasyon gamit ang lainlaing mga bersyon sa PHP sa parehas nga web server. Isip usa ka administrador sa sistema sa Linux, gikinahanglan ka nga mag-setup og usa ka palibot diin makadagan ka og daghang mga website gamit ang lain-laing bersyon sa PHP sa usa ka web server ie Nginx.

Sa kini nga panudlo, ipasabut namon kanimo kung giunsa ang pag-install sa daghang mga bersyon sa PHP ug i-configure ang web server nga Nginx aron magtrabaho uban kanila pinaagi sa mga bloke sa server (virtual host sa Apache) sa mga distribusyon sa CentOS/RHEL 7 gamit ang LEMP stack.

Ang Nginx naggamit sa PHP-FPM (nagbarug alang sa FastCGI Process Manager), nga usa ka alternatibo nga pagpatuman sa PHP FastCGI nga adunay pipila ka dugang, mapuslanon nga mga bahin alang sa daghang mga website.

  1. Usa ka RHEL 7 server nga adunay gamay nga pag-instalar.
  2. Nginx HTTP Server.
  3. PHP 7.1 (aron gamiton isip default nga bersyon) ug 5.6.
  4. MariaDB Database Server.
  5. Server IP address: 192.168.56.10.
  6. Mga Website: example1.com ug example2.com.

Lakang 1: Pag-instalar ug Pag-enable sa EPEL ug Remi Repository

1. Una magsugod pinaagi sa pag-instalar ug pagpagana sa EPEL ug Remi repository, nga nagtanyag sa pinakabag-o nga bersyon sa PHP stack sa CentOS/RHEL 7 distributions.

# yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

2. Sunod nga i-install ang yum-utils nga pakete, nga nagpalapad sa lumad nga mga gamit sa yum ug naghatag og yum-config-manager nga sugo, nga gigamit sa pagpagana o pag-disable sa Yum repository sa sistema.

# yum install yum-utils

Mubo nga sulat: Sa RHEL 7 mahimo nimong mahimo ang opsyonal nga channel alang sa pipila ka mga dependency gamit ang mosunod nga sugo.

# subscription-manager repos --enable=rhel-7-server-optional-rpms

Lakang 2: Pag-instalar sa Nginx Web Server

3. Aron ma-install ang pinakabag-o nga bersyon sa Nginx, kinahanglan natong idugang ang opisyal nga repository sa Nginx, paghimo og file nga ginganlan og /etc/yum.repos.d/nginx.repo.

# vi /etc/yum.repos.d/nginx.repo

Idugang ang mosunod nga mga linya sa pag-file sumala sa imong pag-apod-apod.

--------------- On CentOS 7 --------------- 
[nginx] 
name=nginx repo 
baseurl=http://nginx.org/packages/centos/7/$basearch/ 
gpgcheck=0 
enabled=1 


--------------- On RHEL 7 ---------------
[nginx] 
name=nginx repo 
baseurl=http://nginx.org/packages/rhel/7.x/$basearch/ 
gpgcheck=0 
enabled=1 

4. Sa higayon nga madugang ang nginx repo, mahimo nimong i-install ang Nginx gamit ang yum package manager tool sama sa gipakita.

# yum install nginx

Lakang 3: Pag-instalar sa MariaDB Database Server

5. Aron ma-install ang pinakabag-o nga bersyon sa MariaDB, kinahanglan natong idugang ang opisyal nga repositoryo sa MariaDB, paghimo og file nga ginganlan og /etc/yum.repos.d/mariadb.repo.

# vi /etc/yum.repos.d/mariadb.repo

Idugang ang mosunod nga mga linya sa pag-file sumala sa imong pag-apod-apod.

--------------- On CentOS 7 --------------- 
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.2/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1


--------------- On RHEL 7 ---------------
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.2/rhel7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1 

6. Sa higayon nga madugang ang repo sa MariaDB, mahimo nimong i-install ang MariaDB gamit ang yum package manager tool sama sa gipakita.

# yum install MariaDB-client MariaDB-server

7. Pagkahuman, luwasa ang pag-install sa database server gamit ang script sa ubos. Pagbutang ug root password ug tubaga ang y ug pindota ang [Enter] para sa uban pang sunod-sunod nga mga pangutana aron ma-disable ang remote root user login, tangtangon ang anonymous-user accounts ug test database nga sa default ma-access sa tanang user , bisan ang wala mailhi nga tiggamit.

# mysql_secure_installation

Lakang 4: Pag-instalar sa Daghang Bersyon sa PHP

8. Aron ma-install ang lain-laing mga bersyon sa PHP para sa imong mga proyekto, gamita ang yum-config-manager nga sugo aron ma-install ang daghang bersyon sa PHP kauban ang kadaghanan nga gikinahanglan nga mga module sama sa gipakita.

# 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
# 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

9. Sa higayon nga ma-install ang PHP, mahimo nimong gamiton ang mosunod nga sugo aron masusi ang default nga bersyon sa PHP nga gigamit sa imong server.

# php -v

Lakang 5: Pag-configure sa PHP-FPM ug PHP56-PHP-FPM

10. Kini mao ang labing makaiikag nga bahin niini nga panudlo, kini nagpatin-aw sa unsa nga paagi nga kamo makahimo sa aktuwal nga pagpadagan sa daghang mga bersyon sa PHP sa imong server. Dinhi, imong i-configure ang lainlaing mga bersyon sa php-fpm nga magamit sa Nginx. Kinahanglan nimong ipasabut ang tiggamit/grupo sa mga proseso sa FastCGI ingon man ang mga pantalan nga ilang paminawon.

Kini ang mosunod nga duha ka mga configuration file nga imong usbon.

  • php-fpm (default 7.1) – /etc/php-fpm.d/www.conf
  • php56-php-fpm – /opt/remi/php56/root/etc/php-fpm.d/www.conf

Ablihi ang mga file sa ibabaw, itakda ang user/grupo sa mga proseso sa 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] 

Ang default nga mga kantidad kinahanglan nga apache, usba kini sa nginx sama sa gipakita.

user = nginx
group = nginx

11. Sunod, pangitaa ang mga parameter sa pagpaminaw, ug ipasabut ang address:port diin ang mga hangyo sa FastCGI madawat.

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

12. Kung nahuman na ang tanan nga pag-configure sa ibabaw, kinahanglan nimo nga sugdan ug i-enable ang Nginx, MariaDB ug PHP-FPM nga mag-auto-start sa system boot.

# systemctl enable nginx 
# systemctl start nginx 

# systemctl enable mariadb 
# systemctl start mariadb 

---------------- PHP 7.1 ---------------- 
# systemctl enable php-fpm 
# systemctl start php-fpm 

---------------- PHP 5.6 ----------------
# systemctl enable php56-php-fpm 
# systemctl start php56-php-fpm 

Atensyon: Kung adunay ka mga sayup samtang nagsugod sa ikaduhang higayon sa PHP, php56-php-fpm, ang usa ka palisiya sa SELinux mahimong makapugong niini gikan sa pagsugod. Kung ang SELinux naa sa enforcing mode, ibutang kini sa permissive mode, unya sulayi pagsugod pag-usab ang serbisyo.

# getenforce
# setenforce 0 

Lakang 6: Pag-setup sa mga Website nga adunay Mga Permiso

13. Niini nga punto, mahimo ka na nga maghimo sa gikinahanglan nga mga direktoryo alang sa imong mga website ubos sa /var/www/html/. Kinahanglan ka usab nga maghimo og mga direktoryo aron tipigan ang mga troso sama sa mosunod:

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

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

14. Ibutang ang angay nga pagtugot sa pagpanag-iya sa tanan nga mga direktoryo.

---------------- 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/

Lakang 7: I-setup ang Nginx Server Blocks alang sa mga Website

15. Karon i-configure kung giunsa pagproseso sa Nginx ang mga hangyo sa imong mga website gamit ang mga file sa pagsumpo sa block sa server nga kinahanglan ibutang sa /etc/nginx/conf.d/.

Paghimo og mga configuration file para sa imong mga website nga nagtapos sa .conf extension.

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

Dayon i-paste ang mosunod nga mga configuration sa block sa server sa tagsa-tagsa nga mga file.

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;

        }
}
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;

        }
}

16. Siguroha nga ikaw adunay mosunod nga linya sa panapos nga bahin sa http block sa /etc/nginx/nginx.conf. Makatabang kini sa paglakip sa tanang mga configuration file sulod sa /etc/nginx/conf.d/ directory sa dihang nagdagan ang Nginx.

include /etc/nginx/conf.d/*.conf;

Lakang 8: Pagsulay sa Lahi nga Bersyon sa PHP

17. Sa katapusan, kinahanglan nimong sulayan nga ang imong server naggamit sa duha ka bersyon sa PHP. Makahimo ka ug usa ka sukaranan nga info.php nga script sa mga direktoryo sa gamut nga dokumento sa imong mga website sama sa gipakita.

# echo "<?php phpinfo(); ?>" > /var/www/html/example1.com/info.php
# echo "<?php phpinfo(); ?>" > /var/www/html/example2.com/info.php

18. Aron magamit ang tanan nga mga pagbag-o nga imong nahimo sa ibabaw, kinahanglan nimo nga i-restart ang Nginx, php-fpm ug php56-php-fpm. Apan mahimo nimo una sa tanan susihon nga ang mga file sa pagsumpo sa Nginx alang sa bisan unsang mga sayup sa syntax sa wala pa kini buhaton.

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

19. Adunay usa pa ka katapusan nga butang nga buhaton, labi na kung imong gipadagan ang imong server sa lokal, kinahanglan nimo nga i-setup ang lokal nga DNS gamit ang /etc/hosts file sama sa gipakita sa screen shot sa ubos.

192.168.56.10   example1.com   example1
192.168.56.10   example2.com   example2

20. Sa katapusan, ablihi ang usa ka web browser ug i-type ang mosunod nga mga adres aron mapamatud-an ang mga bersyon sa PHP nga na-install sa sistema.

http://example1.com/index.php
http://example2.com/index.php

Mao na! Karon mahimo nimong i-deploy ang mga file ug pagsulay sa mga website nga adunay lainlaing mga bersyon sa PHP. Kung naa kay mga dugang nga buhaton o mga pangutana nga ibutang sa unahan, gamita ang comment form sa ubos.