Kuinka suorittaa useita verkkosivustoja eri PHP-versioilla Nginxissä


Joskus PHP-kehittäjät haluavat rakentaa ja käyttää erilaisia verkkosivustoja/sovelluksia käyttämällä PHP: n eri versioita samalla Web-palvelimella. Linux-järjestelmänvalvojana sinun on määritettävä ympäristö, jossa voit käyttää useita verkkosivustoja käyttämällä eri PHP-versiota yhdessä verkkopalvelimessa, eli Nginxissä.

Tässä opetusohjelmassa kerrotaan, kuinka voit asentaa useita PHP-versioita ja määrittää Nginx-verkkopalvelimen toimimaan niiden kanssa palvelinlohkojen (Apache-virtuaaliasennot) kautta CentOS/RHEL 7 -jakelussa LEMP-pinon avulla.

Nginx käyttää PHP-FPM: ää (lyhenne sanoista FastCGI Process Manager), joka on vaihtoehtoinen PHP FastCGI -toteutus, jossa on hyödyllisiä lisäominaisuuksia raskaasti ladatuille verkkosivustoille.

  1. RHEL 7 -palvelin, jonka asennus on vähäistä.
  2. Nginx HTTP -palvelin.
  3. PHP 7.1 (käytetään oletusversiona) ja 5.6.
  4. MariaDB-tietokantapalvelin.
  5. Palvelimen IP-osoite: 192.168.56.10.
  6. Sivustot: esimerkki1.com ja esimerkki2.com.

Vaihe 1: Asenna ja ota käyttöön EPEL ja Remi Repository

1. Aloita ensin asentamalla ja ottamalla käyttöön EPEL- ja Remi-arkisto, joka tarjoaa uusimmat versiot PHP-pinosta CentOS/RHEL 7 -jakelussa.

# 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. Asenna seuraavaksi yum-utils-paketti, joka laajentaa yumin alkuperäisiä toimintoja ja tarjoaa yum-config-manager -komennon, jota käytetään Yum-arkistojen ottamiseen käyttöön tai poistamiseen käytöstä järjestelmässä.

# yum install yum-utils

Huomaa: RHEL 7: ssä voit ottaa valinnaisen kanavan käyttöön joillekin riippuvuuksille seuraavan komennon avulla.

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

Vaihe 2: Nginx-verkkopalvelimen asentaminen

3. Uusimman Nginx-version asentamiseksi meidän on lisättävä virallinen Nginx-arkisto, luotava tiedosto nimeltä /etc/yum.repos.d/nginx.repo.

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

Lisää seuraavat rivit tiedostoon jakelusi mukaan.

--------------- 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. Kun nginx repo on lisätty, voit asentaa Nginxin käyttämällä yum-paketinhallintatyökalua kuvan osoittamalla tavalla.

# yum install nginx

Vaihe 3: MariaDB-tietokantapalvelimen asentaminen

5. Viimeisimmän version MariaDB asentamiseksi meidän on lisättävä virallinen MariaDB-arkisto, luotava tiedosto nimeltä /etc/yum.repos.d/mariadb.repo.

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

Lisää seuraavat rivit tiedostoon jakelusi mukaan.

--------------- 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. Kun MariaDB-repo on lisätty, voit asentaa MariaDB: n käyttämällä yum-paketinhallintatyökalua kuvan mukaisesti.

# yum install MariaDB-client MariaDB-server

7. Suojaa myöhemmin tietokantapalvelimen asennus alla olevalla komentosarjalla. Aseta pääsalasana ja vastaa y ja paina [Enter] loput seuraavista kysymyksistä poistaaksesi pääkäyttäjän kirjautumisen käytöstä, poistaaksesi nimettömät käyttäjätilit ja testitietokannan, johon oletuksena pääsevät kaikki käyttäjät , jopa tuntemattomat käyttäjät.

# mysql_secure_installation

Vaihe 4: Asenna useita PHP-versioita

8. Asenna PHP: n eri versiot projektiisi käyttämällä yum-config-manager -komentoa asentaaksesi useita PHP-versioita yhdessä useimpien vaadittujen moduulien kanssa kuvan mukaisesti.

# 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. Kun PHP on asennettu, voit käyttää seuraavaa komentoa tarkistaaksesi palvelimellasi käytetyn PHP: n oletusversion.

# php -v

Vaihe 5: Määritä PHP-FPM ja PHP56-PHP-FPM

10. Tämä on tämän opetusohjelman mielenkiintoisin osa. Siinä selitetään, kuinka voit todella suorittaa useita PHP-versioita palvelimellasi. Tässä määritetään php-fpm: n eri versiot, joiden kanssa Nginx toimii. Sinun tulisi määritellä FastCGI-prosessien käyttäjä/ryhmä sekä portit, joita he kuuntelevat.

Nämä ovat seuraavat kaksi määritystiedostoa, joita aiot muokata.

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

Avaa yllä olevat tiedostot, aseta käyttäjä/ryhmä FastCGI-prosesseja.

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

Oletusarvojen tulisi olla apache, vaihda ne nginxiksi kuvan osoittamalla tavalla.

user = nginx
group = nginx

11. Etsi seuraavaksi kuunteluparametrit ja määritä osoite: portti, jolle FastCGI-pyynnöt vastaanotetaan.

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

12. Kun kaikki yllä olevat määritykset on tehty, sinun on käynnistettävä ja sallittava Nginx, MariaDB ja PHP-FPM käynnistyminen automaattisesti järjestelmän käynnistyksen yhteydessä.

# 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 

Huomaa: Jos saat virheitä käynnistettäessä PHP: n toista esiintymää, php56-php-fpm, SELinux-käytäntö saattaa estää sen käynnistymisen. Jos SELinux on pakotustilassa, aseta se sallivaan tilaan ja yritä sitten käynnistää palvelu uudelleen.

# getenforce
# setenforce 0 

Vaihe 6: Määritä verkkosivustot, joilla on käyttöoikeudet

13. Tässä vaiheessa voit nyt luoda tarvittavat hakemistot verkkosivustoillesi hakemistossa/var/www/html /. Sinun on myös luotava hakemistoja lokien tallentamiseksi seuraavasti:

---------------- 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. Määritä asianmukaiset omistajuusoikeudet kaikille hakemistoille.

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

Vaihe 7: Nginx-palvelinblokkien määrittäminen verkkosivustoille

15. Määritä nyt, kuinka Nginx käsittelee pyynnöt verkkosivustoillesi palvelinlohkon määritystiedostojen avulla, joiden tulisi sijaita /etc/nginx/conf.d/.

Luo määritystiedostot verkkosivustoillesi, jotka päättyvät .conf -laajennukseen.

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

Liitä sitten seuraavat palvelinlohkon kokoonpanot vastaaviin tiedostoihin.

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. Varmista, että seuraava rivi on /etc/nginx/nginx.conf: n http-lohkon viimeisessä osassa. Se auttaa sisällyttämään kaikki määritystiedostot hakemistoon /etc/nginx/conf.d/, kun Nginx on käynnissä.

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

Vaihe 8: Eri PHP-versioiden testaaminen

17. Lopuksi sinun on testattava, että palvelimesi käyttää kahta PHP-versiota. Voit luoda erittäin yksinkertaisen info.php-komentosarjan verkkosivustojesi asiakirjan juurihakemistoihin kuvan osoittamalla tavalla.

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

18. Voit soveltaa kaikkia yllä tekemiäsi muutoksia käynnistämällä Nginx, php-fpm ja php56-php-fpm uudelleen. Mutta voit ensin tarkistaa, että Nginx-määritystiedostoissa ei ole syntaksivirheitä, ennen kuin teet niin.

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

19. On vielä yksi tehtävä, varsinkin jos käytät palvelinta paikallisesti, sinun on määritettävä paikallinen DNS/etc/hosts-tiedostolla alla olevan kuvakaappauksen mukaisesti.

192.168.56.10   example1.com   example1
192.168.56.10   example2.com   example2

20. Avaa lopuksi verkkoselain ja kirjoita seuraavat osoitteet varmistaaksesi järjestelmään asennetut PHP-versiot.

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

Se siitä! Nyt voit ottaa käyttöön tiedostoja ja testata verkkosivustoja eri PHP-versioilla. Jos haluat tehdä lisäyksiä tai esittää kysymyksiä, käytä alla olevaa kommenttilomaketta.