htaccess change cambiar php apache debian virtualhost php-7

change - ¿Cómo seleccionar PHP versión 5 y 7 por virtualhost en Apache 2.4 en Debian?



change php version htaccess wordpress (2)

Parece que esto es posible, siguiendo la sorprendente respuesta de Elvis.

Pero preferiría usar dos servidores virtuales con un host virtual cada uno, en lugar de dos hosts virtuales en un servidor. Eso sería mucho más fácil de configurar.

¿Sería posible ejecutar PHP 7 y PHP 5 simultáneamente en Apache 2.4 en Debian 9? Me gustaría poder seleccionar la versión de PHP que deseo usar por virtualhost. Creo que esto sería útil teniendo en cuenta que algunos de mis sitios web todavía utilizan funciones PHP en desuso. Esto me permite realizar actualizaciones por sitio. ¿Cómo logro algo como esto?

Por ejemplo

<VirtualHost *:80> ServerAdmin webmaster@localhost ServerName mywebsite.com DocumentRoot /var/www/mywebsite.com # UsePHP 7 </virtualHost>

Y

<VirtualHost *:80> ServerAdmin webmaster@localhost ServerName mywebsite2.com DocumentRoot /var/www/mywebsite2.com # UsePHP 5 </virtualHost>


Vamos a empezar desde el principio. Supongo que preferiría usar php-fpm en lugar del módulo Apache.

Primero instale apache:

sudo apt-get update sudo apt-get install apache2

A continuación instale múltiples PHP:

Debian 9:
Instala PHP 7:

sudo apt-get install php7.0-cli php7.0-fpm php-pear libapache2-mod-fastcgi

Configurar repositorios:

sudo apt-get install apt-transport-https sudo curl https://packages.sury.org/php/apt.gpg | apt-key add - sudo echo ''deb https://packages.sury.org/php/ stretch main'' > /etc/apt/sources.list.d/deb.sury.org.list sudo apt-get update

Instala PHP 5:

sudo apt-get install php5.6-cli php5.6-fpm

Debian 8:
Instala PHP 5:

sudo apt-get install php5 php5-fpm php-pear libapache2-mod-fastcgi

Configurar repositorios:
Edite /etc/apt/sources.list y agregue las siguientes líneas al final del archivo:

deb http://packages.dotdeb.org jessie all deb-src http://packages.dotdeb.org jessie all

Instalar la llave GPG:

wget https://www.dotdeb.org/dotdeb.gpg sudo apt-key add dotdeb.gpg sudo apt-get update

Instala PHP 7:

sudo apt-get install php7.0 php7.0-fpm

Siguiente cambio de Prefork y habilitar los módulos necesarios:
Para Debian 8:

a2dismod php5 mpm_prefork

Para Debian 9:

a2dismod php7 mpm_prefork

Siguiente para ambos:

a2enmod actions fastcgi alias proxy_fcgi mpm_worker systemctl restart apache2

Cambie el contenido de /etc/apache2/mods-enabled/fastcgi.conf al siguiente:

<IfModule !mod_fastcgi.c> AddHandler fcgid-script fcg fcgi fpl </IfModule> <IfModule mod_fastcgi.c> <Directory /usr/lib/cgi-bin> Require all granted </Directory> </IfModule>

Ahora crea carpetas raíz de documentos para sitios web:

mkdir -p /var/www/example.com/public_html mkdir -p /var/www/test.com/public_html

Agregue usuarios de sys para estos sitios web:

sudo useradd example --home-dir /var/www/example.com sudo useradd test --home-dir /var/www/test.com

Configurar la propiedad:

sudo chown -R example.example /var/www/example.com sudo chown -R test.test /var/www/test.com

Por ejemplo, el sitio web example.com utilizará PHP 5 y el sitio web test.com utilizará PHP 7.

Crear archivos de configuración para sitios web:
Sitio web en PHP 5:

touch /etc/apache2/sites-available/example.com.conf ln -s /etc/apache2/sites-available/example.com.conf /etc/apache2/sites-enabled/example.com.conf cat /etc/apache2/sites-available/example.com.conf <VirtualHost *:80> ServerAdmin webmaster@localhost ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/example.com/public_html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <IfModule mod_fastcgi.c> AddType application/x-httpd-fastphp5 .php Action application/x-httpd-fastphp5 /php5-fcgi Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi-example.com FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi-example.com -socket /var/run/php5-fpm-example.com.sock -pass-header Authorization </IfModule> </VirtualHost>

Sitio web en PHP 7:

touch /etc/apache2/sites-available/test.com.conf ln -s /etc/apache2/sites-available/test.com.conf /etc/apache2/sites-enabled/test.com.conf cat /etc/apache2/sites-available/test.com.conf <VirtualHost *:80> ServerAdmin webmaster@localhost ServerName test.com ServerAlias www.test.com DocumentRoot /var/www/test.com/public_html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <IfModule mod_fastcgi.c> AddHandler php7-fcgi .php Action php7-fcgi /php7-fcgi virtual Alias /php7-fcgi /usr/lib/cgi-bin/php7-fcgi-test.com FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi-test.com -socket /var/run/php/php7.0-fpm-test.com.sock -pass-header Authorization </IfModule> </VirtualHost>

Crear configuraciones de piscina (usé lo siguiente):
Sitio web en PHP 5:

cat /etc/php5/fpm/pool.d/example.com.conf [example.com] user = example group = example listen = /var/run/php5-fpm-example.com.sock listen.owner = www-data listen.group = www-data php_admin_value[disable_functions] = exec,passthru,shell_exec,system php_admin_flag[allow_url_fopen] = off pm = dynamic pm.max_children = 5 pm.start_servers = 2 pm.min_spare_servers = 1 pm.max_spare_servers = 3 chdir = /

Sitio web en PHP 7:

cat /etc/php/7.0/fpm/pool.d/test.com.conf [test.com] user = test group = test listen = /var/run/php/php7.0-fpm-test.com.sock listen.owner = www-data listen.group = www-data php_admin_value[disable_functions] = exec,passthru,shell_exec,system php_admin_flag[allow_url_fopen] = off pm = dynamic pm.max_children = 5 pm.start_servers = 2 pm.min_spare_servers = 1 pm.max_spare_servers = 3 chdir = /

Reinicie los servicios de apache y php-fpm:

sudo systemctl restart apache2 php5-fpm php7.0-fpm

¡Disfrutar!