Jinsi ya Kuendesha Wavuti Nyingi na Matoleo tofauti ya PHP katika Nginx


Wakati mwingine watengenezaji PHP wanataka kujenga na kuendesha tovuti/programu mbalimbali kwa kutumia matoleo tofauti ya PHP kwenye seva moja ya wavuti. Kama msimamizi wa mfumo wa Linux, unatakiwa kusanidi mazingira ambapo unaweza kuendesha tovuti nyingi kwa kutumia toleo tofauti la PHP kwenye seva moja ya wavuti yaani Nginx.

Katika somo hili, tutakueleza jinsi ya kusakinisha matoleo mengi ya PHP na kusanidi seva ya wavuti ya Nginx ili kufanya kazi nayo kupitia vizuizi vya seva (wapangishi halisi katika Apache) katika usambazaji wa CentOS/RHEL 7 kwa kutumia rafu ya LEMP.

Nginx hutumia PHP-FPM (inasimama kwa Kidhibiti cha Mchakato cha FastCGI), ambayo ni utekelezaji mbadala wa PHP FastCGI na huduma zingine za ziada, muhimu kwa tovuti zilizopakiwa sana.

  1. Seva ya RHEL 7 yenye usakinishaji mdogo.
  2. Seva ya HTTP ya Nginx.
  3. PHP 7.1 (itatumika kama toleo chaguo-msingi) na 5.6.
  4. Seva ya Hifadhidata ya MariaDB.
  5. Anwani ya IP ya seva: 192.168.56.10.
  6. Tovuti: example1.com na example2.com.

Hatua ya 1: Kusakinisha na Kuwezesha EPEL na Hifadhi ya Remi

1. Anza kwanza kwa kusakinisha na kuwezesha hazina ya EPEL na Remi, ambayo inatoa matoleo mapya zaidi ya mkusanyiko wa PHP kwenye usambazaji wa CentOS/RHEL 7.

# 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. Kisha sakinisha kifurushi cha yum-utils, ambacho hupanua utendakazi asili wa yum na kutoa amri ya yum-config-manager, ambayo hutumika kuwezesha au kuzima hazina za Yum kwenye mfumo.

# yum install yum-utils

Kumbuka: Kwenye RHEL 7 unaweza kuwezesha chaneli ya hiari kwa baadhi ya vitegemezi kwa kutumia amri ifuatayo.

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

Hatua ya 2: Kufunga Seva ya Wavuti ya Nginx

3. Ili kusakinisha toleo la hivi punde la Nginx, tunahitaji kuongeza hazina rasmi ya Nginx, unda faili iitwayo /etc/yum.repos.d/nginx.repo.

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

Ongeza mistari ifuatayo kwenye faili kulingana na usambazaji wako.

--------------- 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. Mara nginx repo imeongezwa, unaweza kusakinisha Nginx kwa kutumia zana ya kidhibiti kifurushi cha yum kama inavyoonyeshwa.

# yum install nginx

Hatua ya 3: Kufunga Seva ya Hifadhidata ya MariaDB

5. Ili kusakinisha toleo jipya zaidi la MariaDB, tunahitaji kuongeza hazina rasmi ya MariaDB, kuunda faili inayoitwa /etc/yum.repos.d/mariadb.repo.

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

Ongeza mistari ifuatayo kwenye faili kulingana na usambazaji wako.

--------------- 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. Mara tu repo ya MariaDB imeongezwa, unaweza kusakinisha MariaDB kwa kutumia zana ya kidhibiti kifurushi cha yum kama inavyoonyeshwa.

# yum install MariaDB-client MariaDB-server

7. Baadaye, linda usakinishaji wa seva ya hifadhidata kwa kutumia hati iliyo hapa chini. Weka nenosiri la msingi na ujibu y na ubonyeze [Enter] kwa maswali mengine yanayofuata ili kuzima kuingia kwa mtumiaji wa mbali, kuondoa akaunti za mtumiaji asiyejulikana na hifadhidata ya majaribio ambayo kwa chaguomsingi inaweza kufikiwa na watumiaji wote. , hata watumiaji wasiojulikana.

# mysql_secure_installation

Hatua ya 4: Kusakinisha Matoleo Nyingi ya PHP

8. Ili kusakinisha matoleo tofauti ya PHP kwa miradi yako, tumia yum-config-manager amri kusakinisha matoleo mengi ya PHP pamoja na moduli nyingi zinazohitajika kama inavyoonyeshwa.

# 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. Mara baada ya kusakinisha PHP, unaweza kutumia amri ifuatayo kuangalia toleo chaguo-msingi la PHP linalotumika kwenye seva yako.

# php -v

Hatua ya 5: Kusanidi PHP-FPM na PHP56-PHP-FPM

10. Hii ni sehemu ya kuvutia zaidi ya mafunzo haya, inaelezea jinsi unaweza kweli kuendesha matoleo mengi ya PHP kwenye seva yako. Hapa, utasanidi matoleo tofauti ya php-fpm ambayo Nginx itafanya kazi nayo. Unapaswa kufafanua mtumiaji/kikundi cha michakato ya FastCGI na vile vile bandari watakazosikiliza.

Hizi ni faili mbili za usanidi zifuatazo ambazo utaenda kuhariri.

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

Fungua faili zilizo hapo juu, weka mtumiaji/kikundi cha michakato ya 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] 

Thamani chaguo-msingi zinapaswa kuwa apache, zibadilishe kuwa nginx kama inavyoonyeshwa.

user = nginx
group = nginx

11. Kisha, pata vigezo vya kusikiliza, na ueleze anwani: bandari ambayo maombi ya FastCGI yatapokelewa.

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

12. Mara tu usanidi wote ulio hapo juu utakapokamilika, unahitaji kuanza na kuwezesha Nginx, MariaDB na PHP-FPM kuanza kiotomatiki kwenye kuwasha mfumo.

# 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 

Makini: Iwapo utapata makosa yoyote unapoanza mfano wa pili wa PHP, php56-php-fpm, sera ya SELinux inaweza kuwa inaizuia kuanza. Ikiwa SELinux iko katika hali ya kutekeleza, iweke katika hali ya kuruhusu, kisha ujaribu kuanzisha huduma tena.

# getenforce
# setenforce 0 

Hatua ya 6: Sanidi Tovuti zenye Ruhusa

13. Katika hatua hii, sasa unaweza kuunda saraka zinazohitajika kwa tovuti zako chini ya /var/www/html/. Pia unahitaji kuunda saraka ili kuhifadhi kumbukumbu kama ifuatavyo:

---------------- 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. Weka ruhusa zinazofaa za umiliki kwenye saraka zote.

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

Hatua ya 7: Sanidi Vitalu vya Seva ya Nginx kwa Wavuti

15. Sasa sanidi jinsi Nginx itakavyoshughulikia maombi kwa tovuti zako kwa kutumia faili za usanidi za kuzuia seva ambazo zinapaswa kupatikana katika /etc/nginx/conf.d/.

Unda faili za usanidi za tovuti zako zinazoishia na .conf kiendelezi.

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

Kisha ubandike usanidi ufuatao wa kuzuia seva kwenye faili husika.

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. Hakikisha kuwa una mstari ufuatao katika sehemu ya kufunga ya kizuizi cha http katika /etc/nginx/nginx.conf. Inasaidia kujumuisha faili zote za usanidi ndani ya /etc/nginx/conf.d/ saraka wakati Nginx inafanya kazi.

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

Hatua ya 8: Kujaribu matoleo tofauti ya PHP

17. Hatimaye, unahitaji kupima kama seva yako inatumia matoleo mawili ya PHP. Unaweza kuunda hati ya msingi sana ya info.php katika saraka za mizizi ya tovuti zako kama inavyoonyeshwa.

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

18. Ili kutumia mabadiliko yote uliyofanya hapo juu, unahitaji kuanzisha upya Nginx, php-fpm na php56-php-fpm. Lakini unaweza kwanza kuangalia kuwa faili za usanidi wa Nginx kwa makosa yoyote ya syntax kabla ya kufanya hivyo.

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

19. Kuna jambo lingine la mwisho la kufanya, hasa ikiwa unaendesha seva yako ndani ya nchi, unahitaji kusanidi DNS ya ndani kwa kutumia /etc/hosts faili kama inavyoonyeshwa kwenye picha ya skrini hapa chini.

192.168.56.10   example1.com   example1
192.168.56.10   example2.com   example2

20. Hatimaye, fungua kivinjari na uandike anwani zifuatazo ili kuthibitisha matoleo ya PHP iliyosakinishwa kwenye mfumo.

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

Hiyo ndiyo! Sasa unaweza kupeleka faili na tovuti za kujaribu na matoleo tofauti ya PHP. Ikiwa una nyongeza yoyote ya kufanya au maswali ya kuweka mbele, tumia fomu ya maoni hapa chini.