Cómo ejecutar múltiples sitios web con diferentes versiones de PHP en Nginx

Cómo ejecutar múltiples sitios web con diferentes versiones de PHP en Nginx

A veces, los desarrolladores de PHP desean construir y ejecutar diferentes sitios web/aplicaciones utilizando diferentes versiones de PHP en el mismo servidor web. Como administrador del sistema de Linux, debe configurar un entorno en el que pueda ejecutar múltiples sitios web utilizando una versión de PHP diferente en un solo servidor web I I.mi. Nginx.

En este tutorial, le explicaremos cómo instalar múltiples versiones de Php y configurar el servidor web Nginx para trabajar con ellos a través de los bloques del servidor (hosts virtuales en Apache) en CentOS/RHEL 7 distribuciones usando Lemplo pila.

Leer también: Pyenv: instale múltiples versiones de Python para un proyecto específico

Nginx usos Php-FPM (representa Fastcgi Process Manager), que es una alternativa PHP Fastcgi Implementación con algunas características adicionales y útiles para sitios web muy cargados.

Configuración del entorno de prueba

  1. Un servidor CentOS 7 o Rhel 7 con una instalación mínima.
  2. Servidor nginx http.
  3. Php 7.1 (para ser utilizado como versión predeterminada) y 5.6.
  4. Servidor de base de datos de mariadb.
  5. Dirección IP del servidor: 192.168.56.10.
  6. Sitios web: Ejemplo 1.comunicarse y ejemplo2.comunicarse.

Paso 1: Instalación y habilitación del repositorio EPEL y REMI

1. Primero comienza instalando y habilitando el Epel y Remi repositorio, que ofrece las últimas versiones de la Php apilar CentOS/RHEL 7 distribuciones.

# yum install https: // dl.federaproject.org/pub/epel/epel-liber-latest-7.noarch.rpm # yum install http: // rpms.remirepo.NET/Enterprise/REMI-Release-7.rpm 

2. Luego instale el Yum-Utils paquete, que extiende las funcionalidades nativas de Yum y proporciona manager yum-config Comando, que se utiliza para habilitar o deshabilitar los repositorios de YUM en el sistema.

# yum instalar yum-uss 

Nota: En Rhel 7 Puede habilitar el canal opcional para algunas dependencias utilizando el siguiente comando.

# suscripción-ganager repos --enable = rhel-7-server-optional-rpms 

Paso 2: Instalación del servidor web NGINX

3. Para instalar la última versión de NGINX, necesitamos agregar el repositorio oficial de Nginx, crear un archivo llamado /etc/yum.repositar.d/nginx.repositorio.

# vi /etc /yum.repositar.d/nginx.repositorio 

Agregue las siguientes líneas para archivar según su distribución.

--------------- En Centos 7 --------------- [nginx] name = nginx repo baseUrl = http: // nginx.org/paquetes/centos/7/$ basearch/gpgcheck = 0 habilitado = 1 --------------- En Rhel 7 --------------- [nginx] name = nginx repo baseUrl = http: // nginx.org/paquetes/rhel/7.x/ $ basearch/ gpgcheck = 0 habilitado = 1 

4. Una vez que se ha agregado el repositorio de Nginx, puede instalar NGINX utilizando la herramienta Yum Package Manager como se muestra.

# yum install nginx 

Paso 3: Instalación del servidor de base de datos MariDB

5. Para instalar la última versión de MariadB, necesitamos agregar el repositorio oficial de Mariadb, crear un archivo llamado /etc/yum.repositar.d/mariadb.repositorio.

# vi /etc /yum.repositar.d/mariadb.repositorio 

Agregue las siguientes líneas para archivar según su distribución.

--------------- En Centos 7 --------------- [mariadb] nombre = mariadb baseurl = http: // yum.mariada.org/10.2/centos7-amd64 gpgkey = https: // yum.mariada.org/rpm-gpg-key-mariadb gpgcheck = 1 --------------- En Rhel 7 --------------- [mariadb] nombre = mariadb baseurl = http: // yum.mariada.org/10.2/rhel7-amd64 gpgkey = https: // yum.mariada.org/rpm-gpg-key-mariadb gpgcheck = 1 

6. Una vez que se ha agregado el repositorio de mariadb, puede instalar mariadb utilizando la herramienta de administrador de paquetes yum como se muestra.

# yum instalar mariadb-client mariadb-server 

7. Posteriormente, asegure la instalación del servidor de la base de datos utilizando el script a continuación. Establezca una contraseña de root y respuesta Y y presionar [Ingresar] Para el resto de las preguntas posteriores para deshabilitar el inicio de sesión de usuario de raíz remota, elimine las cuentas de usuarios anónimos y la base de datos de prueba a la que por defecto pueden acceder a todos los usuarios, incluso usuarios anónimos.

# mysql_secure_installation 

Leer también: 12 Las mejores prácticas de seguridad MySQL/Mariadb para Linux

Paso 4: Instalación de múltiples versiones de PHP

8. Para instalar diferentes versiones de PHP para sus proyectos, use manager yum-config Comando para instalar múltiples versiones de PHP junto con la mayoría de los módulos requeridos como se muestra.

Instalar PHP 7.1 versión

# yum-config-manager --enable remi-php71 [predeterminado] # yum instalación php-common php-fpm # yum instalación php-mysql php-pecl-memcache php-pECl-member-gd php-mBstring-mCrypt PHP-XML PHP-PECL-APC PHP-C-CLI PHP-Pear PHP-PDO 

Instalar PHP 5.6 versión

# yum instalación PHP56 PHP56-PHP-Common PHP56-PHP-FPM # YUM INSTALA PHP56-PHP-MYSQL PHP56-PHP-PECL-MEMCACHE PHP56-PHP-PECL-MEMEMECHED 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. Una vez instalado PHP, puede usar el siguiente comando para verificar la versión predeterminada de PHP utilizada en su servidor.

# PHP -V 
Verifique la versión PHP predeterminada

Paso 5: Configuración de PHP-FPM y PHP56-PHP-FPM

10. Esta es la parte más interesante de este tutorial, explica cómo puede ejecutar varias versiones de PHP en su servidor. Aquí, configurará las diferentes versiones de Php-FPM que nginx funcionará con. Debe definir el usuario/grupo de los procesos FastCGI, así como los puertos en los que escucharán.

Estos son los siguientes dos archivos de configuración que va a editar.

  • Php-FPM (predeterminado 7.1) - /etc /php -fpm.D/www.confusión
  • PHP56-PHP-FPM - /opt/remi/php56/root/etc/php-fpm.D/www.confusión

Abra los archivos anteriores, establezca el usuario/grupo de procesos 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] 

Los valores predeterminados deben ser apache, Cambiarlos a nginx como se muestra.

usuario = grupo nginx = nginx 

11. A continuación, encuentre los parámetros de escucha y defina el Dirección: puerto en el que se recibirán las solicitudes de FastCGI.

escuchar = 127.0.0.1: 9000 [PHP-FPM] Listen = 127.0.0.1: 9001 [PHP56-PHP-FPM] 

12. Una vez que se realice toda la configuración anterior, debe iniciar y habilitar Nginx, Mariada y Php-FPM Para iniciar automáticamente en el arranque del sistema.

# SystemCTL Habilitar Nginx # SystemCTL Inicio Nginx # SystemCTL Habilitar mariadb # SystemCTL Start Mariadb ---------------- Php 7.1 ---------------- # SystemCTL Habilitar PHP-FPM # SystemCTL Inicio PHP-FPM ---------------- Php 5.6 ---------------- # SystemCTL Habilitar PHP56-PHP-FPM # SYSTEMCTL Start PHP56-PHP-FPM 

Atención: En caso de que reciba algún error al comenzar la segunda instancia de PHP, PHP56-PHP-FPM, Una política de Selinux podría estar bloqueandola al comenzar. Si Selinux está en modo de hacer cumplir, establecerlo modo permisivo, Luego intente comenzar el servicio una vez más.

# getenforce # setenforce 0 

Paso 6: Configurar sitios web con permisos

13. En este punto, ahora puede crear los directorios necesarios para sus sitios web en /var/www/html/. También debe crear directorios para almacenar registros de la siguiente manera:

---------------- Sitio web 1 ---------------- # mkdir -p/var/www/html/ejemplo1.com/ # mkdir -p/var/log/nginx/ejemplo1.com/ ---------------- Sitio web 2 ---------------- # mkdir -p/var/www/html/ejemplo2.com/ # mkdir -p/var/log/nginx/ejemplo2.com/ 

14. Establezca los permisos de propiedad apropiados en todos los directorios.

---------------- Sitio web 1 ---------------- # chown -r raíz: nginx/var/www/html/ejemplo1.com/ # chmod -r 755/var/www/html/ejemplo1.com/ # chown -r root: nginx/var/log/nginx/ejemplo1.com/ # chmod -r 660/var/log/nginx/ejemplo1.com/ ---------------- Sitio web 2 ---------------- # chown -r raíz: nginx/var/www/html/ejemplo2.com/ # chmod -r 755/var/www/html/ejemplo2.com/ # chown -r root: nginx/var/log/nginx/ejemplo2.com/ # chmod -r 660/var/log/nginx/ejemplo2.com/ 

Paso 7: Configurar bloques del servidor NGINX para sitios web

15. Ahora configure cómo NGINX procesará las solicitudes en sus sitios web utilizando los archivos de configuración de bloque de servidor que deben ubicarse en /etc/nginx/conf.d/.

Cree los archivos de configuración para sus sitios web que terminan con .confusión extensión.

# vi/etc/nginx/conf.D/Ejemplo1.comunicarse.conf # vi/etc/nginx/conf.D/Ejemplo2.comunicarse.confusión 

Luego pegue las siguientes configuraciones de bloqueo del servidor en los archivos respectivos.

Sitio web 1

Configuración por ejemplo1.comunicarse
servidor escuchar 80; SERVER_NAME Ejemplo1.com www.Ejemplo 1.com; root/var/www/html/ejemplo1.com/; índice índice.índice de PHP.índice HTML.htm; #CharSet KOI8-R; access_log/var/log/nginx/ejemplo1.com/ejemplo1_access_log; ERROR_LOG/VAR/LOG/NGINX/Ejemplo1.com/ejemplo1_error_log error; ubicación / try_files $ uri $ uri / / index.php?$ QUERY_STRING;  # Pase los scripts PHP al servidor FastCGI escuchando en 127.0.0.Ubicación 1: 9000 ~ \.php $ root/var/www/html/ejemplo1.com/; fastcgi_pass 127.0.0.1: 9000; #Set Puerto para PHP-FPM para escuchar en FastCGI_Index Index.php; fastcgi_param script_filename $ document_root $ fastcgi_script_name; incluir fastcgi_params; incluir/etc/nginx/fastcgi_params;  

Sitio web 2

Configuración por ejemplo2.comunicarse
servidor escuchar 80; SERVER_NAME Ejemplo2.com www.ejemplo2.com; root/var/www/html/ejemplo2.com/; índice índice.índice de PHP.índice HTML.htm; #CharSet KOI8-R; access_log/var/log/nginx/ejemplo2.com/ejemplo2_access_log; ERROR_LOG/VAR/LOG/NGINX/Ejemplo2.com/ejemplo2_error_log error; ubicación / try_files $ uri $ uri / / index.php?$ QUERY_STRING;  # Pase los scripts PHP al servidor FastCGI escuchando en 127.0.0.Ubicación 1: 9000 ~ \.php $ root/var/www/html/ejemplo2.com/; fastcgi_pass 127.0.0.1: 9001; #Set Port for PHP56-PHP-FPM para escuchar en el índice FastCGI_Index.php; fastcgi_param script_filename $ document_root $ fastcgi_script_name; incluir fastcgi_params; incluir/etc/nginx/fastcgi_params;  

dieciséis. Asegúrese de tener la siguiente línea en la parte de cierre del bloque HTTP en /etc/nginx/nginx.confusión. Ayuda a incluir todos los archivos de configuración dentro del /etc/nginx/conf.d/ directorio cuando Nginx se está ejecutando.

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

Paso 8: Probar diferentes versiones de PHP

17. Finalmente, debe probar que su servidor está utilizando las dos versiones de PHP. Puedes crear un muy básico información.php Script en el documento de los directorios raíz de sus sitios web como se muestra.

# echo "">/var/www/html/ejemplo1.com/información.php # echo "">/var/www/html/ejemplo2.com/información.php 

18. Para aplicar todos los cambios que ha realizado anteriormente, debe reiniciar Nginx, Php-FPM y PHP56-PHP-FPM. Pero en primer lugar puede verificar que los archivos de configuración de Nginx para cualquier error de sintaxis antes de hacerlo.

# nginx -t # systemCtl reiniciar Nginx PHP-FPM PHP56-PHP-FPM 
Verificar la configuración de Nginx

19. Hay otra última cosa que hacer, especialmente si está ejecutando su servidor localmente, debe configurar DNS locales usando /etc/huéspedes Archivo como se muestra en la captura de pantalla a continuación.

192.168.56.10 Ejemplo1.com ejemplo1 192.168.56.10 Ejemplo2.COM Ejemplo2 
Agregar archivo de sitios web a hosts

20. Finalmente, abra un navegador web y escriba las siguientes direcciones para verificar las versiones de PHP instaladas en el sistema.

http: // Ejemplo1.com/índice.php http: // Ejemplo2.com/índice.php 
Verifique PHP 7.1 versión Verifique PHP 5.6 versión

Eso es todo! Ahora puede implementar archivos y probar sitios web con diferentes versiones de PHP. Si tiene alguna adición para hacer o preguntas para presentar, utilice el formulario de comentarios a continuación.