GNU/Linux >> Tutoriales Linux >  >> Linux

Ejecute múltiples versiones de PHP para diferentes dominios en NGNIX

Recientemente compré el complemento EduExpression WordPress para que un cliente configurara un software de examen. Pude instalar y configurar el complemento sin muchos problemas. Sin embargo, el problema comenzó a ocurrir cuando se accedió al inicio de sesión del estudiante:la página del complemento quedó en blanco cuando el estudiante intentó realizar un examen. Bueno, tengo un apoyo, ¿verdad? Me puse en contacto con el equipo de soporte y me dijeron que el complemento no funciona con PHP 7.1 y solo es compatible con PHP 5.6. Ese es mi error, porque tenía mi servidor configurado con PHP 7.1 y todo el sitio web de mi cliente se ejecuta en PHP 7.1. Ahora, para que EduExpression funcione, necesito configurar la versión PHP 5.6. Degradar PHP nunca es una buena opción, pero tuve que hacer esto para que este complemento funcionara para el cliente. Entonces, ¿qué tal configurar PHP 5.6 solo para un dominio en particular y dejar que el resto se ejecute en PHP 7.1? Bueno, en este tutorial explicaré cómo configurar varias versiones del entorno PHP y vincular una versión específica de PHP con un dominio particular en NGINX.

Medioambiente

SO:CentOS 7, servidor web:Nginx, PHP:v7.1 (predeterminado), PHP FastCGI:PHP-FPM

Nota:el entorno anterior ya está configurado y funcionando correctamente.

Paso 1 :Instalación de varias versiones de PHP, es decir, PHPv5.6 junto con PHP7.1

Aquí uso yum comando para instalar varias versiones de PHP junto con los módulos necesarios como se muestra a continuación:

Instalando la versión 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

Instalar PHP-FPM para la versión PHP 5.6

PHP en Nginx funciona a través de PHP-FPM (administrador de procesos FastCGI). PHP-FPM es una implementación alternativa de PHP FastCGI con algunas características adicionales útiles para sitios de cualquier tamaño, especialmente para sitios más concurridos.

# yum install php56-php-fpm

Bueno, hemos instalado PHP 5.6, pero debemos asegurarnos de que la versión predeterminada de PHP siga siendo 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

Configurar PHP-FPM y PHP56-PHP-FPM

La parte más importante de este tutorial es configurar dos PHP-FPM diferentes para dos versiones de PHP. Aquí configuraremos dos versiones diferentes de PHP-FPM con las que trabajará Nginx. Lo principal durante la configuración es el usuario/grupo de procesos FastCGI y los puertos en los que escuchan.

Archivo de configuración de PHP-FPM (predeterminado 7.1)

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

Asegúrese de que el usuario/grupo esté configurado en nginx (El valor predeterminado es apache).

user = nginx
group = nginx

Busque el parámetro de escucha y configúrelo en el puerto 9000 en el que se recibirán las solicitudes FastCGI.

listen = 127.0.0.1:9000	[php-fpm]
Archivo de configuración PHP56-PHP-FPM

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

Asegúrese de que el usuario/grupo establezca nginx (El valor predeterminado es apache).

user = nginx
group = nginx

Busque el parámetro de escucha y configúrelo en el puerto 9001 en el que se recibirán las solicitudes FastCGI.

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

Habilitar PHP-FPM, PHP56-PHP-FPM y NGINX inicio automático en el arranque del sistema en CentOS 7

Después de completar las configuraciones anteriores, debe habilitar PHP-FPM, PHP56-PHP-FPM y Nginx para que se inicien automáticamente en el arranque del sistema.

# systemctl enable nginx

# systemctl enable php-fpm

# systemctl enable php56-php-fpm
Desactivar SELinux

#sudo setenforce 0

Configurar dominios con PHP-FPM correspondiente para ejecuciones de PHP

Abra el archivo de configuración de dominio correspondiente de Nginx (/etc/nginx/conf.d/ ) y busque la línea fastcgi_pass y cámbielo en consecuencia para vincular la versión correcta de PHP que debe ejecutar.

Archivo de configuración 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;
 }
}

Archivo de configuración 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;
 }
}

Revise los archivos de configuración de Nginx para ver si hay errores de sintaxis antes de reiniciar Nginx

# nginx -t

Reiniciar Nginx, PHP-fpm, PHp56-PHP-FPM

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

Prueba diferentes versiones de PHP para diferentes dominios

Crear diferentes phpinfo archivos en el directorio raíz de dos dominios diferentes

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

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

Ahora abre info.php en el navegador para verificar example1.com usando PHP 7.1 y example2.com usando PHP 5.6.

http://example1.com/info.php

http://example2.com/info.php

¡Eso es todo! Acabo de implementar el complemento EduExpression en example2.com que se ejecuta en PHP 5.6.


Linux
  1. nginx - 413 Entidad de solicitud demasiado grande

  2. Configuración de Apache para Magento para mostrar diferentes vistas de la tienda desde diferentes URL/dominios.

  3. ¿Cómo elijo una versión diferente de PHP para mi sitio web?

  4. ¿Cómo ejecutar múltiples procesos Tor a la vez con diferentes direcciones IP de salida?

  5. ¿Cómo comprobar si hay varias versiones de PHP instaladas en Ubuntu 12.04 LTS?

Cómo cambiar entre varias versiones de PHP en Ubuntu

Cómo ejecutar un script de Python en PHP

Cómo instalar varias versiones de PHP en Ubuntu 20.04, 18.04, 20.10

Cómo ejecutar diferentes versiones de PHP en el mismo servidor

Cómo instalar diferentes versiones de PHP (5.6, 7.x y 8.0) en Ubuntu

Aloje múltiples sitios web con diferentes versiones de PHP en Ubuntu 18.04 VPS