Hace poco vimos como instalar y usar dos versiones distintas de php, ahora vamos a afinar más y vamos ha hacer que cada virtualHost de Apache2 use una versión distinta de PHP (por ejemplo, PHP 7.4 y PHP 8.3) en Debian 12, la forma más robusta y recomendada es usar PHP-FPM junto con el módulo proxy_fcgi de Apache. Así, cada sitio web puede ejecutar su propia versión de PHP de manera simultánea e independiente.
Pasos para la configuración:
- Instala y habilita los módulos necesarios de Apache:
sudo a2enmod proxy_fcgi setenvif
sudo systemctl restart apache2 - Asegúrate de tener instalados y activos los servicios PHP-FPM para cada versión
Por ejemplo:sudo systemctl enable php7.4-fpm
Verifica que los sockets existan en /run/php/ (por ejemplo, php7.4-fpm.sock y php8.3-fpm.sock).
sudo systemctl start php7.4-fpm
sudo systemctl enable php8.3-fpm
sudo systemctl start php8.3-fpm - Configura los archivos de VirtualHost
Ejemplo para PHP 7.4
Archivo: /etc/apache2/sites-available/site1.tu_dominio.conf<VirtualHost *:80>
Ejemplo para PHP 8.3
ServerAdmin admin@site1.tu_dominio
ServerName site1.tu_dominio
DocumentRoot /var/www/site1.tu_dominio
<Directory /var/www/site1.tu_dominio>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost"
</FilesMatch>
ErrorLog ${APACHE_LOG_DIR}/site1_error.log
CustomLog ${APACHE_LOG_DIR}/site1_access.log combined
</VirtualHost>
Archivo: /etc/apache2/sites-available/site2.tu_dominio.conf<VirtualHost *:80>
ServerAdmin admin@site2.tu_dominio
ServerName site2.tu_dominio
DocumentRoot /var/www/site2.tu_dominio
<Directory /var/www/site2.tu_dominio>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php8.3-fpm.sock|fcgi://localhost"
</FilesMatch>
ErrorLog ${APACHE_LOG_DIR}/site2_error.log
CustomLog ${APACHE_LOG_DIR}/site2_access.log combined
</VirtualHost> - Habilita los sitios y recarga de Apache:
sudo a2ensite site1.tu_dominio.conf
sudo a2ensite site2.tu_dominio.conf
sudo systemctl reload apache2
En conclusión:
- Cada VirtualHost especifica su versión de PHP mediante la directiva SetHandler apuntando al socket de PHP-FPM correspondiente.
- Puedes tener tantos sitios como necesites, cada uno con su propia versión de PHP, sin conflictos.
- Esta configuración es válida tanto para entornos de desarrollo como de producción y es la más flexible y mantenible
.
No hay comentarios:
Publicar un comentario