GNU/Linux >> Linux Esercitazione >  >> Linux

Esegui più versioni di PHP per diversi domini in NGNIX

Di recente ho acquistato il plug-in WordPress EduExpression per un client per configurare un software di esame. Sono stato in grado di installare e configurare il plugin senza troppi problemi. Tuttavia, il problema è iniziato a verificarsi quando è stato effettuato l'accesso all'accesso dello studente:la pagina del plug-in è diventata vuota quando lo studente ha tentato di sostenere un esame. Bene, ho un supporto giusto? Ho contattato il team di supporto e mi hanno detto che il plugin non funziona con PHP 7.1 e supporta solo PHP 5.6. Questo è il mio male, perché avevo configurato il mio server con PHP 7.1 e tutto il mio sito Web client funzionava su PHP 7.1. Ora per far funzionare EduExpression, devo configurare la versione PHP 5.6. Il downgrade di PHP non è mai una buona opzione, ma ho dovuto farlo per far funzionare questo plugin per il client. Che ne dici di configurare PHP 5.6 solo per un particolare dominio e lasciare che il resto funzioni su PHP 7.1. Bene, in questo tutorial spiegherò come configurare più versioni dell'ambiente PHP e collegare una versione specifica di PHP con un particolare dominio in NGINX.

Ambiente

Sistema operativo:CentOS 7, Server Web:Nginx, PHP:v7.1 (predefinito), PHP FastCGI:PHP-FPM

Nota:l'ambiente sopra è già configurato e funziona correttamente.

Passaggio 1 :Installazione di più versioni di PHP, ad esempio PHPv5.6 insieme a PHP7.1

Qui uso yum comando per installare più versioni di PHP insieme ai moduli necessari come mostrato di seguito:

Installazione della versione PHP5.6

# yum install php56 php56-php-common 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

Installa PHP-FPM per la versione PHP 5.6

PHP su Nginx funziona tramite PHP-FPM (FastCGI Process manager). PHP-FPM è un'implementazione alternativa di PHP FastCGI con alcune funzionalità aggiuntive utili per siti di qualsiasi dimensione, in particolare quelli più affollati.

# yum install php56-php-fpm

Bene, abbiamo installato PHP 5.6, ma dovremmo assicurarci che la versione predefinita di PHP sia ancora 7.1.

# php -v
PHP 7.1.22 (cli) (built: Sep 12 2018 07:22:13) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
 with Zend OPcache v7.1.22, Copyright (c) 1999-2018, by Zend Technologies

Configura PHP-FPM e PHP56-PHP-FPM

La parte più importante di questo tutorial è configurare due diversi PHP-FPM per due versioni di PHP. Qui configureremo due diverse versioni di PHP-FPM con cui Nginx funzionerà. La cosa principale durante la configurazione è l'utente/gruppo di processi FastCGI e le porte su cui sono in ascolto.

File di configurazione PHP-FPM (impostazione predefinita 7.1).

/etc/php-fpm.d/www.conf

Assicurati che l'utente/gruppo sia impostato su nginx (Il valore predefinito è apache).

user = nginx
group = nginx

Trova il parametro di ascolto e impostalo sulla porta 9000 su cui verranno ricevute le richieste FastCGI.

listen = 127.0.0.1:9000	[php-fpm]
File di configurazione PHp56-PHP-FPM

/opt/remi/php56/root/etc/php-fpm.d/www.conf

Assicurati che l'utente/gruppo abbia impostato nginx (Il valore predefinito è apache).

user = nginx
group = nginx

Trova il parametro di ascolto e impostalo sulla porta 9001 su cui verranno ricevute le richieste FastCGI.

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

Abilita PHP-FPM, PHP56-PHP-FPM e NGINX avvio automatico all'avvio del sistema su CentOS 7

Dopo aver completato le configurazioni di cui sopra, è necessario abilitare PHP-FPM, PHP56-PHP-FPM e Nginx per l'avvio automatico all'avvio del sistema.

# systemctl enable nginx

# systemctl enable php-fpm

# systemctl enable php56-php-fpm
Disattiva SELinux

#sudo imposta 0

Configura domini con PHP-FPM corrispondente per esecuzioni PHP

Apri il file di configurazione del dominio corrispondente di Nginx (/etc/nginx/conf.d/ ) e cerca la riga fastcgi_pass e modificalo di conseguenza per collegare la versione corretta di PHP che deve eseguire.

File di configurazione Nginx del dominio 1:/etc/nginx/conf.d/example1.conf

server {
 listen :80;
 server_name example1.com;
 server_name www.example1.com;

 root /home/example1/public_html;
 index index.php index.html index.htm;

 location / {
      try_files $uri $uri/ /index.php?q=$uri$args;
 }
 location ~ \.php$ {
      try_files $uri =404;
      fastcgi_pass 127.0.0.1:9000;
      fastcgi_index index.php;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      fastcgi_param SCRIPT_NAME $fastcgi_script_name;
      include fastcgi_params;
 }
}

File di configurazione Nginx del dominio 2: /etc/nginx/conf.d/example2.conf

server {
 listen :80;
 server_name example2.com;
 server_name www.example2.com;

 root /home/example2/public_html;
 index index.php index.html index.htm;

 location / {
       try_files $uri $uri/ /index.php?q=$uri$args;
 }
 location ~ \.php$ {
       try_files $uri =404;
       fastcgi_pass 127.0.0.1:9001;
       fastcgi_index index.php;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       fastcgi_param SCRIPT_NAME $fastcgi_script_name;
       include fastcgi_params;
 }
}

Controlla i file di configurazione di Nginx per eventuali errori di sintassi prima di riavviare Nginx

# nginx -t

Riavvia Nginx, PHP-fpm, PHp56-PHP-FPM

# systemctrl restart nginx, php-fpm php56-php-fpm

Testa diverse versioni PHP per diversi domini

Crea phpinfo diversi file nella directory principale dei due domini diversi

# echo "<?php phpinfo(); ?>" > /home/example1/public_html/info.php

# echo "<?php phpinfo(); ?>" > /home/example2/public_html/info.php

Ora apri info.php nel browser per verificare example1.com usando PHP 7.1 e example2.com usando PHP 5.6.

http://example1.com/info.php

http://example2.com/info.php

Questo è tutto! Ho appena distribuito il plugin EduExpression su example2.com che gira su PHP 5.6.


Linux
  1. Più versioni di PHP in plesk

  2. Come faccio a scegliere una versione diversa di PHP per il mio sito web?

  3. Come configurare un sottodominio o ospitare più domini usando nginx nel server Linux

  4. apt-get install per diverse versioni di Python

  5. Utilizza un eseguibile CLI di versione PHP diversa per un comando

Come passare tra più versioni di PHP in Ubuntu

Come eseguire uno script Python in PHP

Come installare più versioni di PHP su Ubuntu 20.04, 18.04, 20.10

Come eseguire diverse versioni di PHP sullo stesso server

Come installare diverse versioni di PHP (5.6, 7.x e 8.0) in Ubuntu

Ospita più siti Web con diverse versioni di PHP su Ubuntu 18.04 VPS