Nginx-de dürli PHP wersiýalary bilen birnäçe web sahypasyny nädip işletmeli


Käwagt PHP döredijiler şol bir web serwerinde PHP-iň dürli wersiýalaryny ulanyp dürli web sahypalaryny/programmalary gurmak we işletmek isleýärler. Linux ulgamynyň dolandyryjysy hökmünde bir web serwerinde, ýagny Nginx-de dürli PHP wersiýasyny ulanyp, birnäçe web sahypasyny işledip boljak gurşaw gurmaly.

Bu gollanmada, PHP-iň birnäçe wersiýasyny nädip gurmalydygyny we LEMP stackini ulanyp, CentOS/RHEL 7 paýlanyşlarynda serwer bloklary (Apache-de wirtual hostlar) arkaly olar bilen işlemek üçin Nginx web serwerini nädip düzmelidigini düşündireris.

Nginx, PHP-FPM ulanýar (FastCGI Prosess Dolandyryjysyny aňladýar), bu agyr ýüklenen web sahypalary üçin goşmaça, peýdaly aýratynlyklar bilen alternatiw PHP FastCGI ýerine ýetirişidir.

  1. Iň az gurnamaly RHEL 7 serweri.
  2. Nginx HTTP serweri.
  3. PHP 7.1 (deslapky wersiýa hökmünde ulanmak üçin) we 5.6.
  4. MariaDB maglumat bazasynyň serweri.
  5. Serwer IP adresi: 192.168.56.10.
  6. Web sahypalary: example1.com we example2.com.

1-nji ädim: EPEL we Remi ammaryny gurmak we işletmek

1. Ilki bilen CentOS/RHEL 7 paýlamalarynda PHP ýygyndysynyň iň soňky wersiýalaryny hödürleýän EPEL we Remi ammaryny gurmak we işletmek bilen başlaň.

# 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. Ondan soň yumyň ýerli funksiýalaryny giňeldýän we ulgamdaky Yum ammarlaryny işletmek ýa-da öçürmek üçin ulanylýan yum-config-manager buýrugyny üpjün edýän yum-utils paketini guruň.

# yum install yum-utils

Bellik: RHEL 7-de aşakdaky buýrugy ulanyp, käbir baglylyklar üçin goşmaça kanaly işledip bilersiňiz.

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

2-nji ädim: Nginx web serwerini gurmak

3. Nginx-iň soňky wersiýasyny gurmak üçin resmi Nginx ammaryny goşmaly, /etc/yum.repos.d/nginx.repo atly faýl döretmeli.

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

Paýlanyşyňyza görä aşakdaky setirleri goşuň.

--------------- 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. Nginx repo goşulandan soň, görkezilişi ýaly yum paket dolandyryjy guralyny ulanyp, Nginx-i gurup bilersiňiz.

# yum install nginx

3-nji ädim: MariaDB maglumat bazasynyň serwerini gurmak

5. MariaDB-iň iň soňky wersiýasyny gurmak üçin resmi MariaDB ammaryny goşmaly, /etc/yum.repos.d/mariadb.repo atly faýl döretmeli.

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

Paýlanyşyňyza görä aşakdaky setirleri goşuň.

--------------- 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. MariaDB repo goşulandan soň, görkezilişi ýaly yum paket dolandyryjy guralyny ulanyp, MariaDB gurup bilersiňiz.

# yum install MariaDB-client MariaDB-server

7. Ondan soň aşakdaky skripti ulanyp, maglumat bazasynyň serwerini gurmagy üpjün ediň. Kök parolyny düzüň we y jogap beriň we uzakdaky ulanyjylaryň girişini öçürmek, anonim ulanyjy hasaplaryny aýyrmak we deslapky görnüşde ähli ulanyjylar tarapyndan girip boljak synag bazasyny barlamak üçin indiki soraglaryň galanlary üçin [Enter] basyň. , hatda näbelli ulanyjylar.

# mysql_secure_installation

4-nji ädim: PHP-iň köp wersiýasyny gurmak

8. Taslamalaryňyz üçin PHP-iň dürli wersiýalaryny gurmak üçin, görkezilişi ýaly iň zerur modullar bilen birlikde PHP-iň birnäçe wersiýasyny gurmak üçin yum-config-manager buýrugyny ulanyň.

# 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. PHP gurlansoň, serweriňizde ulanylýan PHP-iň deslapky wersiýasyny barlamak üçin aşakdaky buýrugy ulanyp bilersiňiz.

# php -v

5-nji ädim: PHP-FPM we PHP56-PHP-FPM sazlamak

10. Bu gollanmanyň iň gyzykly tarapy, serweriňizde birnäçe PHP wersiýasyny nädip işledip boljakdygyny düşündirýär. Bu ýerde, Nginx bilen işleýän php-fpm-iň dürli wersiýalaryny düzersiňiz. “FastCGI” prosesleriniň ulanyjysyny/toparyny, şeýle hem diňlän portlaryny kesgitlemeli.

Bular redaktirlejek aşakdaky iki konfigurasiýa faýly.

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

Aboveokardaky faýllary açyň, FastCGI amallarynyň ulanyjysyny/toparyny düzüň.

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

Bellenen bahalar apache bolmaly, görkezilişi ýaly nginx-e üýtgediň.

user = nginx
group = nginx

11. Ondan soň, diňlemek parametrlerini tapyň we FastCGI haýyşlarynyň kabul ediljek salgysyny kesgitläň.

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

12. aboveokardaky konfigurasiýalaryň hemmesi ýerine ýetirilenden soň, Nginx, MariaDB we PHP-FPM-i ulgam ýüklemesinde awtomatiki başlamaga başlamaly we işletmeli.

# 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 

Üns beriň: PHP-iň ikinji mysalyny başlanyňyzda haýsydyr bir ýalňyşlyk ýüze çyksa, php56-php-fpm, SELinux syýasaty ony başlamagynyň öňüni alyp biler. SELinux ýerine ýetiriş re iniminde bolsa, rugsat beriji re modeime düzüň, hyzmaty täzeden başlamaga synanyşyň.

# getenforce
# setenforce 0 

6-njy ädim: Rugsatly web sahypalaryny gurmak

13. Şu wagt, web sahypalaryňyz üçin/var/www/html/aşagyndaky zerur kataloglary döredip bilersiňiz. Şeýle hem gündelikleri saklamak üçin kataloglar döretmeli:

---------------- 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. directorieshli kataloglara degişli eýeçilik rugsatlaryny belläň.

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

7-nji ädim: Web sahypalary üçin Nginx serwer bloklaryny guruň

15. Indi Nginx-iň /etc/nginx/conf.d/ salgysynda ýerleşýän serwer blok konfigurasiýa faýllaryny ulanyp, web sahypalaryňyza haýyşlary nähili işlejekdigini düzüň.

.conf giňeltmesi bilen gutarýan web sahypalaryňyz üçin konfigurasiýa faýllaryny dörediň.

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

Soňra aşakdaky serwer blok konfigurasiýalaryny degişli faýllara goýuň.

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. /etc/nginx/nginx.conf sahypasyndaky http blokunyň ýapylýan böleginde aşakdaky setiriň bardygyna göz ýetiriň. Nginx işleýän wagty /etc/nginx/conf.d/ katalogynyň içindäki ähli konfigurasiýa faýllaryny goşmaga kömek edýär.

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

8-nji ädim: Dürli PHP wersiýalaryny barlamak

17. Netijede, serweriňiziň PHP-iň iki wersiýasyny ulanýandygyny barlamaly. Görkezilişi ýaly web sahypalaryňyzyň resminama kök kataloglarynda gaty esasy info.php skriptini döredip bilersiňiz.

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

18. aboveokarda eden ähli üýtgeşmeleriňizi ulanmak üçin Nginx, php-fpm we php56-php-fpm täzeden açmaly. Emma, ilki bilen, Nginx konfigurasiýa faýllarynyň haýsydyr bir sintaksis ýalňyşlygy barlygyny barlap bilersiňiz.

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

19. doene bir soňky edilmeli iş bar, esasanam serweriňizi ýerli derejede işleýän bolsaňyz, aşakdaky ekranda görkezilişi ýaly/etc/host faýlyny ulanyp ýerli DNS gurmaly.

192.168.56.10   example1.com   example1
192.168.56.10   example2.com   example2

20. Netijede, web brauzerini açyň we ulgamda gurlan PHP wersiýalaryny barlamak üçin aşakdaky salgylary ýazyň.

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

Bu! Indi dürli PHP wersiýalary bolan faýllary ýerleşdirip we web sahypalaryny synap bilersiňiz. Goşmak üçin goşmaçalaryňyz ýa-da öňe sürjek soraglaryňyz bar bolsa, aşakdaky düşündiriş formundan peýdalanyň.