Table of Contents
Cómo ejecutar varios sitios web con diferentes versiones de PHP en Nginx
A veces, los desarrolladores de PHP desean crear y ejecutar diferentes sitios web/aplicaciones utilizando diferentes versiones de PHP en el mismo servidor web. Como administrador del sistema Linux, debe configurar un entorno en el que pueda ejecutar varios sitios web utilizando diferentes versiones de PHP en un solo servidor web, es decir, Nginx.
En este tutorial, le explicará 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/Distribuciones de RHEL 7. usando la pila LEMP.
Lea también. Pyenv-Instale múltiples versiones de Python para un proyecto específico
Nginx. utiliza PHP-FPM. (significa FastCGI Process Manager. , que es una implementación alternativa de PHP FastCGI. con algunas funciones adicionales y útiles para sitios web muy cargados.
Configuración del entorno de prueba
- Un servidor CentOS 7 o RHEL 7 con una instalación mínima.
- Servidor HTTP Nginx.
- PHP 7.1 (para usar como versión predeterminada ion) y 5.6.
- Servidor de base de datos MariaDB.
- Dirección IP del servidor: 192.168.56.10.
- Sitios web: example1.com. y example2.com.
Paso 1: Instalar y habilitar EPEL y Remi Repository
1.. Primero, comience instalando y habilitando el repositorio EPEL. y Remi. que ofrece las últimas versiones de la pila PHP. en distribuciones CentOS/RHEL 7.
# 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 freestar.config.enabled_slots.push
2.. A continuación, instale el paquete yum-utils. que amplía las funcionalidades nativas de yum y proporciona el comando yum-config-manager. que se utiliza para habilitar o deshabilitar el reposito de Yum. en el sistema.
# yum install yum-utils
Nota. En RHEL 7. puede habilitar el opcional canal para algunas dependencias usando el siguiente comando.
# subscription-manager 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.repos.d/nginx.repo.
# vi/etc/yum.repos.d/nginx.repoAgregue las siguientes líneas al archivo según su distribución.
—————En CentOS 7————— [nginx] name = nginx repo baseurl = http://nginx.org/packages/centos/7/$basearch/gpgcheck = 0 habilitado = 1 —————En RHEL 7————— [nginx] nombre = nginx repo baseurl = http://nginx.org/packages/rhel/7.x/$basearch/gpgcheck = 0 enabled = 1
4.. Una vez que se ha agregado el repositorio nginx d, puede instalar Nginx usando la herramienta de administración de paquetes yum como se muestra.
# yum install nginx
Paso 3: Instalar el servidor de base de datos MariaDB
5.. Para instalar última versión de MariaDB, necesitamos agregar el repositorio oficial de MariaDB, crear un archivo llamado /etc/yum.repos.d/mariadb.repo.
# vi/etc/yum.repos .d/mariadb.repo
Agregue las siguientes líneas al archivo según su distribución.
—————En CentOS 7————— [mariadb] nombre = MariaDB baseurl = http://yum.mariadb.org/10.2/centos7-amd64 gpgkey = https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck = 1 —————En RHEL 7————— [ mariadb] nombre = MariaDB baseurl = http://yum.mariadb.org/10.2/rhel7-amd64 gpgkey = https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck = 1
6.. Una vez que se ha agregado el repositorio de MariaDB, puede instalar MariaDB usando la herramienta de administrador de paquetes yum como se muestra.
# yum install MariaDB-client Mar iaDB-server
7.. Luego, asegure la instalación del servidor de la base de datos usando el siguiente script. Establezca una contraseña de root y responda y presione [Enter]. para el resto de las preguntas siguientes para deshabilitar el inicio de sesión de usuario root remoto, eliminar cuentas de usuario anónimo y probar la base de datos a la que todos los usuarios pueden acceder de forma predeterminada., incluso usuarios anónimos.
# mysql_secure_installation
Lea también. 12 Prácticas recomendadas de seguridad de MySQL/MariaDB para Linux
Paso 4: Instalación de varias versiones de PHP
8.. Para instalar diferentes versiones de PHP para sus proyectos, use el comando yum-config-manager. para instalar múltiples versiones de PHP junto con la mayoría de los módulos requeridos como mostrado.
Instalar PHP 7.1 Versión # yum-config-manager–enable remi-php71 [Predeterminado] # yum instalar php php-common php-fpm # yum instalar 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 Instalar PHP 5.6 Versión # 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.. Una vez instalado PHP, puede usar el siguiente comando para verificar la versión predeterminada de PHP utilizada en su servidor.
# php-v
Comprobar la versión predeterminada de PHP
Paso 5: Configurar PHP-FPM y PHP56-PHP-FPM
10.. Esto es La parte más interesante de este tutorial, explica cómo puede ejecutar múltiples versiones de PHP en su servidor. Aquí, configurará las diferentes versiones de php-fpm. con las que trabajará Nginx. 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 editará.
- php-fpm. (predeterminado 7.1)-/etc/php-fpm.d/www.conf
- php56-php-fpm. /opt/remi/php56/root/etc/php-fpm.d/www.conf
Abra los archivos de arriba, configure 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. cámbielos a nginx. como se muestra.
user = nginx group = nginx
11.. A continuación, busque el archivo listen parámetros y defina la dirección: puerto. en el que se recibirán las solicitudes FastCGI.
listen = 127.0.0.1:9000 [php-fpm] listen = 127.0.0.1:9001 [php56-php-fpm]
12.. Una vez realizada toda la configuración anterior, debe iniciar y habilitar Nginx. MariaDB. y PHP-FPM. para iniciarse automáticamente al arrancar el sistema.
# systemctl enable nginx # systemctl start nginx # systemctl enable mariadb # systemctl start mariadb —————-PHP 7.1—————- # systemctl enable php-fpm # systemctl iniciar php-fpm —————-PHP 5.6—————- # systemctl enable php56-php-fpm # systemctl start php56-php-fpm
Atención. en caso de que obtenga algún error al iniciar la segunda instancia de PHP, php56-php-fpm. una política de SELinux podría estar bloqueando su inicio. Si SELinux está en modo de ejecución. configúrelo en modo permisivo. luego intente iniciar 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 necesita crear directorios para almacenar registros de la siguiente manera:
—————-Sitio web 1—————- # mkdir-p/var/www/html/example1.com/# mkdir-p/var/log/nginx/example1.com/—————-Sitio web 2—————- # mkdir-p/var/www/html/example2.com/# mkdir-p/var/log/nginx/example2.com/
14.. Establezca los permisos de propiedad apropiados en todos los directorios.
—————-Sitio web 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/—————-Sitio web 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/
Paso 7: Configurar Nginx Serve r Bloques para sitios web
15.. Ahora configure cómo Nginx procesará las solicitudes a sus sitios web utilizando los archivos de configuración del bloque del servidor que deben estar ubicados en /etc/nginx/conf .d/.
Cree los archivos de configuración para sus sitios web que terminen con la extensión .conf.
# vi/etc/nginx/conf.d/example1.com.conf # vi/etc/nginx/conf.d/example2.com.conf
Luego pegue las siguientes configuraciones de bloques del servidor en los archivos respectivos .
Configuración del sitio web 1 para el servidor example1.com listen 80; nombre_servidor 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; ubicación/try_files $ uri $ uri//index.php?$query_string; # pasar los scripts PHP al servidor FastCGI escuchando en 127.0.0.1:9000 ubicación ~ \ .php $ root/var/www/html/example1.com/; fastcgi_pass 127.0.0.1:9000; #set puerto para php-fpm para escuchar en fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $ raíz_documento $ fastcgi_script_name; incluir fastcgi_params; incluir/etc/nginx/fastcgi_params; Configuración del sitio web 2 para el servidor example2.com listen 80; nombre_servidor 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; ubicación/try_files $ uri $ uri//index.php?$query_string; # pasar los scripts PHP al servidor FastCGI escuchando en 127.0.0.1:9000 ubicación ~ \ .php $ root/var/www/html/example2.com/; fastcgi_pass 127.0.0.1:9001; #set puerto para php56-php-fpm para escuchar en fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $ raíz_documento $ fastcgi_script_name; incluir fastcgi_params; incluir/etc/nginx/fastcgi_params;
16.. Asegúrese de tener la siguiente línea en la parte de cierre del bloque http en /etc/nginx/nginx.conf. Ayuda incluir todos los archivos de configuración dentro del directorio /etc/nginx/conf.d/ cuando Nginx se está ejecutando.
include/etc/nginx/conf.d/*.conf;
Paso 8: Probar diferentes versiones de PHP
17.. Finalmente, necesita probar que su servidor está usando las dos versiones de PHP. Puede crear un script info.php. muy básico en los directorios raíz de documentos de sus sitios web como se muestra.
# echo “ Php phpinfo ();?>“>/Var/www/html/example1.com/info.php # echo “ php phpinfo ();?>“>/var/www/html/example2.com/info.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 no tengan errores de sintaxis antes de hacerlo.
# nginx-t # systemctl restart 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, necesita configurar local DNS usando el archivo /etc/hosts. como se muestra en la captura de pantalla a continuación.
192.168.56.10 example1.com example1 192.168.56.10 example2.com example2
Agregar sitios web al archivo de hosts
20.. Finalmente, abra un navegador web y escriba las siguientes direcciones para verificar las versiones de PHP instaladas en el sistema.
http://example1.com/index.php http://example2.com/index.php
Verifique la versión de PHP 7.1
Verifique la versión de PHP 5.6
¡Eso es! Ahora puede implementar archivos y probar sitios web con diferentes versiones de PHP. Si tiene alguna adición que hacer o preguntas que presentar, utilice el formulario de comentarios a continuación.