Saltar al contenido

AlmaLinux 9 + Webmin + Apache + multiphp fpm 8.3, 7.4 y 5.6

En la terminal de AlmaLinux:

Recomendación: Instalar Webmin (opcional):

Descargar el instalar rpm (para RedHat y similares) ubicado en la sección Manual de https://webmin.com/download/

https://www.webmin.com/download/rpm/webmin-current.rpm

Ubicarse en el directorio de descarga e instalar

sudo dnf install ./webmin-2.402-1.noarch.rpm

Actualizar el sistema:

sudo dnf update -y
sudo dnf install epel-release -y

Instalar Apache

sudo dnf install httpd -y
sudo systemctl enable httpd –now

Instalar MariaDB

sudo dnf install mariadb mariadb-server -y
sudo systemctl enable mariadb --now
sudo mysql_secure_installation

Agregar repositorio Remi (soporta múltiples versiones: Php 7.4 y 8.3)

sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm
sudo dnf module reset php -y

Instalar múltiples versiones de PHP-FPM

sudo dnf module enable php:remi-8.3 -y
sudo dnf install php83 php83-php php83-php-fpm php83-php-mysqlnd -y
sudo systemctl enable php83-php-fpm --now
sudo dnf install php74 php74-php php74-php-fpm php74-php-mysqlnd -y
sudo systemctl enable php74-php-fpm --now

Instalación de PHP 5.6 desde RPM de AlmaLinux 8 (Remi Repo)

Crea un directorio de trabajo

mkdir ~/php56-rpms && cd ~/php56-rpms

Descarga los paquetes RPM necesarios

wget http://rpms.remirepo.net/enterprise/8/remi/x86_64/php56-php-5.6.40-45.el8.remi.x86_64.rpm
wget http://rpms.remirepo.net/enterprise/8/remi/x86_64/php56-php-cli-5.6.40-45.el8.remi.x86_64.rpm
wget http://rpms.remirepo.net/enterprise/8/remi/x86_64/php56-php-common-5.6.40-45.el8.remi.x86_64.rpm
wget http://rpms.remirepo.net/enterprise/8/remi/x86_64/php56-php-fpm-5.6.40-45.el8.remi.x86_64.rpm
wget http://rpms.remirepo.net/enterprise/8/remi/x86_64/php56-php-mysqlnd-5.6.40-45.el8.remi.x86_64.rpm
wget http://rpms.remirepo.net/enterprise/8/remi/x86_64/php56-runtime-3.0-1.el8.remi.x86_64.rpm
wget http://rpms.remirepo.net/enterprise/8/remi/x86_64/php56-syspaths-5.6-1.el8.remi.x86_64.rpm

Instalarlos en AlmaLinux 9 

sudo dnf install *.rpm --allowerasing

Y si hay conflictos graves con dependencias:

sudo rpm -Uvh --nodeps --force *.rpm

Como resultado debe aparecer algo similar a esto:

advertencia:php56-php-5.6.40-45.el8.remi.x86_64.rpm: EncabezadoV4 RSA/SHA256 Signature, ID de clave 5f11735a: NOKEY Verifying... ################################# [100%] Preparando... ################################# [100%] Actualizando / instalando... 1:php56-runtime-3.0-1.el8.remi ################################# [ 14%] 2:php56-php-common-5.6.40-45.el8.re################################# [ 29%] 3:php56-php-cli-5.6.40-45.el8.remi ################################# [ 43%] 4:php56-php-fpm-5.6.40-45.el8.remi ################################# [ 57%] 5:php56-php-5.6.40-45.el8.remi ################################# [ 71%] 6:php56-syspaths-5.6-1.el8.remi ################################# [ 86%] 7:php56-php-mysqlnd-5.6.40-45.el8.r################################# [100%] ===================================================================== WARNING : PHP 5.6 have reached its "End of Life" in January 2019. Even, if this package includes some of the important security fixes, backported from 8.1, the UPGRADE to a maintained version is very strongly RECOMMENDED. =====================================================================

Verificar que PHP 5.6 esté instalado

sudo /opt/remi/php56/root/usr/bin/php -v

Si aparece este error:

/opt/remi/php56/root/usr/bin/php: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory

Instalar manualmente OpenSSL 1.1

sudo dnf install compat-openssl11

Volver a verificar:

/opt/remi/php56/root/usr/bin/php -v

Si aparece este error:

PHP Warning: PHP Startup: Unable to load dynamic library '/opt/remi/php56/root/usr/lib64/php/modules/pdo_mysql.so' - /opt/remi/php56/root/usr/lib64/php/modules/pdo_mysql.so: undefined symbol: pdo_parse_params in Unknown on line 0 PHP 5.6.40 (cli) (built: Dec 6 2024 10:27:24) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
wget http://rpms.remirepo.net/enterprise/8/remi/x86_64/php56-php-pdo-5.6.40-45.el8.remi.x86_64.rpm
sudo rpm -Uvh --force php56-php-pdo-5.6.40-45.el8.remi.x86_64.rpm
wget http://rpms.remirepo.net/enterprise/8/remi/x86_64/php56-php-pdo-5.6.40-45.el8.remi.x86_64.rpm
sudo rpm -Uvh --force php56-php-pdo-5.6.40-45.el8.remi.x86_64.rpm
/opt/remi/php56/root/usr/bin/php -v

Si aparece este mensaje, PHP 5.6.40 ya está funcionando.

/opt/remi/php56/root/usr/bin/php -v 
PHP 5.6.40 (cli) (built: Dec 6 2024 10:27:24) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

Verifica módulos instalados:

/opt/remi/php56/root/usr/bin/php -m

Si faltan módulos que necesites (curl, mbstring, gd, etc.), puedes buscar e instalar desde:

cd ~/php56-rpms

wget http://rpms.remirepo.net/enterprise/8/remi/x86_64/php56-php-mbstring-5.6.40-45.el8.remi.x86_64.rpm

wget http://rpms.remirepo.net/enterprise/8/remi/x86_64/php56-php-gd-5.6.40-45.el8.remi.x86_64.rpm

sudo rpm -Uvh --force php56-php-mbstring-*.rpm

sudo rpm -Uvh --force php56-php-gd-*.rpm

wget http://rpms.remirepo.net/enterprise/8/remi/x86_64/gd-last-2.3.3-2.el8.remi.x86_64.rpm

sudo rpm -Uvh --force --nodeps gd-last-*.rpm

/opt/remi/php56/root/usr/bin/php -m | grep -E 'curl|mbstring|gd'

Debe resultar:

php56-rpms]$ /opt/remi/php56/root/usr/bin/php -m | grep -E 'curl|mbstring|gd' 
curl
mbstring

Asegura que los servicios estén habilitados y corriendo

# PHP 5.6
sudo systemctl enable php56-php-fpm --now

# PHP 7.4
sudo systemctl enable php74-php-fpm --now

# PHP 8.3
sudo systemctl enable php83-php-fpm --now

Verifica los puertos de escucha de cada FPM

sudo ss -ltnp | grep php-fpm

Habilitar módulos en Apache

sudo dnf install -y mod_fcgid

Verificar:

httpd -M | grep proxy_fcgi

Posible resultado:
 httpd -M | grep proxy_fcgi
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
 proxy_fcgi_module (shared)

Listar servicios y reiniciarlos:

systemctl list-units --type=service | grep php

Resultado:
systemctl list-units --type=service | grep php
  php56-php-fpm.service              loaded active running The PHP FastCGI Process Manager
  php74-php-fpm.service              loaded active running The PHP FastCGI Process Manager
  php83-php-fpm.service              loaded active running The PHP FastCGI Process Manager

Reiniciar:

sudo systemctl restart php56-php-fpm
sudo systemctl restart php74-php-fpm
sudo systemctl restart php83-php-fpm

Verificar socket Unix:

sudo nano /etc/opt/remi/php56/php-fpm.d/www.conf
Debe estar está directiva:
listen = /var/opt/remi/php56/run/php-fpm/www.sock

Comando opcional:
sudo find / -name www.conf 2>/dev/null | grep php56

Configurar Apache para permitir .htaccess

En tu VirtualHost (por ejemplo /etc/httpd/conf/httpd.conf o /etc/httpd/conf.d/sitioejemplo.conf), asegúrate de tener AllowOverride All por ejemplo:

<Directory "/var/www/html">
    AllowOverride All
    Require all granted
</Directory>

DocumentRoot /var/www/html
ServerName localhost
<Directory "/var/www/html">
    AllowOverride All
    Require all granted
</Directory>

Directorios de prueba para cada versión (opcional)

sudo mkdir -p /var/www/php56 /var/www/php74 /var/www/php83

echo "<?php phpinfo(); ?>" | sudo tee /var/www/php56/index.php
echo "<?php phpinfo(); ?>" | sudo tee /var/www/php74/index.php
echo "<?php phpinfo(); ?>" | sudo tee /var/www/php83/index.php

Crear archivos .htaccess por versión de php en los directorios deseados

/var/www/php83/.htaccess → PHP 8.3

<FilesMatch \.php$>
    SetHandler "proxy:unix:/var/opt/remi/php83/run/php-fpm/www.sock|fcgi://localhost"
</FilesMatch>


/var/www/php74/.htaccess → PHP 7.4

<FilesMatch \.php$>
    SetHandler "proxy:unix:/var/opt/remi/php74/run/php-fpm/www.sock|fcgi://localhost"
</FilesMatch>


/var/www/php56/.htaccess → PHP 5.6

<FilesMatch \.php$>
    SetHandler "proxy:unix:/var/opt/remi/php56/run/php-fpm/www.sock|fcgi://localhost"
</FilesMatch>

Cambiar propietario de los directorios (opcional)

sudo chown -R apache:apache /var/www/php56 /var/www/php74 /var/www/php83

Configurar Firewall para habilitar el servicio HTTP (puerto 80)

sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --reload

Configurar Firewall para habilitar el servicio HTTPS (puerto 43)

sudo firewall-cmd --add-service=https --permanent
sudo firewall-cmd --reload

Verificar:

sudo firewall-cmd --list-all

Resultado esperado:

sudo firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: wlp1s0
sources:
services: cockpit dhcpv6-client http https ssh
ports:
protocols:
forward: yes
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

Opcional: Configurar Firewall para habilitar el puerto 10000 (Webmin)

sudo firewall-cmd --permanent --add-port=10000/tcp
sudo firewall-cmd --reload

Verificar:

sudo firewall-cmd --list-ports

Resultado esperado:

10000/tcp

Publicado enManualesSoftware Libre