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