¿En qué podemos ayudarte?
Prepara el servidor
yum update
Instala el repositorio remi si no esta instalado
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
Listar los repositorios de yum para ver las versiones de php disponbles
ls -alFr /etc/yum.repos.d
Habilita el repositorio de php 7.2
Nano /etc/yum.repos.d/remi-php72.repo
enabled=1
ó
yum-config-manager --enable remi-php72 (si no jala este comando instalar yum-utils)
Actualiza y checa la versión de php en el server
yum update (para las dependencias se recomienda también tener el repositorio epel instalado y habilitado) (ejemplo yum update –enablerepo=remi,epel)
yum info php
yum info php-fpm
Instala php fpm
yum install php-fpm php-gd php-pdo php-mbstring php-pear -y (puede ser que ya esten instalados)
habilita php fpm
systemctl enable php-fpm
inicia php-fpm
systemctl start php-fpm
hacer pruebas de phpinfo en el sitio ya debe estar jalando el fpm en el archivo de salida de phpinfo
NOTA los siguientes pasos aplican si hay mas de una versión instalada de php y se quiere agregar al ispconfig 3.1
Ver configuracion php fpm
1. nano /etc/php-fpm.d/www.conf (si no esta en esta ruta buscarlo con el find)
a. revisar que puerto tiene el parámetro listen (ejemplo 9006)
2. Conectarse al ispconfig e ir a la sección de system->additional php
a. Agregar php versión
b. Poner el nombre de la versión
3. Cambiarse a la pestaña de FastCGI Settings
i. Path to the PHP FastCGI binary: /opt/remi/php73/root/usr/bin/php-cgi (si no esta en esta ruta buscarlo con find, recordar que es el archivo de la versión de php nueva, no la default)
ii. Path to the php.ini directory: /etc/opt/remi/php73/ (igual cambiar de acuerdo a la versión)
4. Cambiarse a PHP-FPM Settings
- Path to the PHP-FPM init script :/etc/opt/remi/php73
- Path to the php.ini directory : /etc/opt/remi/php73
- Path to the PHP-FPM pool directory : /etc/opt/remi/php73/php-fpm.d
d. Poner los paths correctos a la nueva versión, buscar con find / -name *fpm* por ejemplo para encontrar las rutas
5. Salvar, si ha mas versiones agregarlas de la misma forma
Si por alguna razon el apahe no interpreta el php realizar lo siguiente:
Valida que estos paquetes esten instaladosrpm -qa|grep httpd rpm -qa|grep httpd-tools rpm -qa|grep mod_ssl
Verifica la existencia de estas lineasnano /etc/httpd/conf.modules.d/00-mpm.conf # LoadModule mpm_prefork_module modules/mod_mpm_prefork.so LoadModule mpm_worker_module #modules/mod_mpm_worker.so (habilitar este y comentar el otro si se manejan
Diferentes pools de php-fpm Para casos donde solo exista un solo website en el server se aconseja que se use el php-fpm de manera de socket y no como conexion tcp, se usa como tcp cuando se quiere tener separado el frontend de la parte del php. Como socket en un solo server Se le dice apache que todos los request de php van por php-fpm
nano /etc/httpd/conf.d/php.conf
# Proxy declaration
<Proxy "unix:/var/run/php-fpm/default.sock|fcgi://php-fpm">
# we must declare a parameter in here (doesn't matter which) or it'll not register the proxy ahead of time
ProxySet disablereuse=off
</Proxy>
# Redirect to the proxy
<FilesMatch \.php$>
SetHandler proxy:fcgi://php-fpm
</FilesMatch>
Edita el php-fpm para usar como socketnano /etc/php-fpm.d/www.conf
; listen = 127.0.0.1:9000
listen = /var/run/php-fpm/default.sock
...
listen.allowed_clients = 127.0.0.1
listen.owner = apache
listen.group = apache
listen.mode = 0660
user = apache
group = apache
Reiniciar servicios
systemctl restart php-fpm
systemctl start httpd
Multiples PHP-FPM pools para que cada virtual host tenga su propio pool en el mismo server (tiene mejor rendimiento por ocket que pot tcp)
Deshabilitar el php a nivel global del apache
mv /etc/httpd/conf.d/php.conf /etc/httpd/conf.d/php.conf.bak
se crea un archivo de conf para el sitio virtualcp /etc/php-fpm.d/www.conf /etc/php-fpm.d/example.com.conf nano /etc/php-fpm.d/example.com.conf listen = /var/run/php-fpm/example.com.sock
Editar el conf del virtual host y agregar las siguientes lineas tanto para el puerto 80 como para el 443 si es que aplica nano /etc/httpd/conf/sites-available/ example.com.conf# Proxy declaration <Proxy "unix:/var/run/php-fpm/example.com.sock|fcgi://php-fpm"> # we must declare a parameter in here (doesn't matter which) or it'll not register the proxy ahead of time ProxySet disablereuse=off # Note: If you configure php-fpm to use the "ondemand" process manager, then use "ProxySet disablereuse=on" </Proxy>
# Redirect to the proxy<FilesMatch \.php$> SetHandler proxy:fcgi://php-fpm </FilesMatch>
systemctl restart php-fpm systemctl start httpd