PHP 7 y PHP 5.6 en VestaCP



Esta configuracion te permitirá tener PHP 7 y PHP 5.6 de manera simultánea en Vesta CP.

Utilizo en la actualidad,
Distribución: Ubuntu 16.04
Version VestaCP: 0.9.8-17

El procedimiento es bastante sencillo, primero, hay que instalar PHP 5.6 para que este disponible a nivel global. En esta versión de Ubuntu solo existe PHP 7 en los repositorios, así que hay que agregar un repositorio PPA.

sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt-get install php5.6 php5.6-common php5.6-cgi php5.6-json php5.6-redis php5.6-imagick php5.6-apcu php5.6-fpm php5.6-curl php5.6-mysql php5.6-gd php5.6-mcrypt php5.6-pgsql php5.6-sqlite3 php5.6-mbstring php5.6-dom php5.6-zip php5.6-intl php-memcached php5.6-dev

En este punto ya debe estar instaladas ambas versiones de PHP, ahora, hay que crear las plantillas en VestaCP, estas plantillas se encuentran en la siguiente ruta

/usr/local/vesta/data/templates/web/apache2

Alli se deben crear 3 archivos, phpfcgid56.sh, phpfcgid56.tpl, phpfcgid56.stpl con la siguiente información.

phpfcgid56.sh


#!/bin/bash
# Adding php wrapper
user="$1"
domain="$2"
ip="$3"
home_dir="$4"
docroot="$5"

wrapper_script="#!/bin/sh
PHPRC=/usr/local/lib
export PHPRC
export PHP_FCGI_MAX_REQUESTS=1000
export PHP_FCGI_CHILDREN=20
exec /usr/bin/php-cgi5.6
"
wrapper_file="$home_dir/$user/web/$domain/cgi-bin/fcgi-starter"

echo "$wrapper_script" > $wrapper_file
chown $user:$user $wrapper_file
chmod -f 751 $wrapper_file

exit 0

phpfcgid56.tpl


<VirtualHost %ip%:%web_port%>

    ServerName %domain_idn%
    %alias_string%
    ServerAdmin %email%
    DocumentRoot %docroot%
    ScriptAlias /cgi-bin/ %home%/%user%/web/%domain%/cgi-bin/
    Alias /vstats/ %home%/%user%/web/%domain%/stats/
    Alias /error/ %home%/%user%/web/%domain%/document_errors/
    SuexecUserGroup %user% %group%
    CustomLog /var/log/%web_system%/domains/%domain%.bytes bytes
    CustomLog /var/log/%web_system%/domains/%domain%.log combined
    ErrorLog /var/log/%web_system%/domains/%domain%.error.log
    <Directory %docroot%>
        AllowOverride All
        Options +Includes -Indexes +ExecCGI
        php_admin_value open_basedir %docroot%:%home%/%user%/tmp
        php_admin_value upload_tmp_dir %home%/%user%/tmp
        php_admin_value session.save_path %home%/%user%/tmp
        <Files *.php>
          SetHandler fcgid-script
        </Files>
        FCGIWrapper %home%/%user%/web/%domain%/cgi-bin/fcgi-starter .php
    </Directory>
    <Directory %home%/%user%/web/%domain%/stats>
        AllowOverride All
    </Directory>
    IncludeOptional %home%/%user%/conf/web/%web_system%.%domain%.conf*

</VirtualHost>


phpfcgid56.stpl


<VirtualHost %ip%:%web_ssl_port%>

    ServerName %domain_idn%
    %alias_string%
    ServerAdmin %email%
    DocumentRoot %sdocroot%
    ScriptAlias /cgi-bin/ %home%/%user%/web/%domain%/cgi-bin/
    Alias /vstats/ %home%/%user%/web/%domain%/stats/
    Alias /error/ %home%/%user%/web/%domain%/document_errors/
    SuexecUserGroup %user% %group%
    CustomLog /var/log/%web_system%/domains/%domain%.bytes bytes
    CustomLog /var/log/%web_system%/domains/%domain%.log combined
    ErrorLog /var/log/%web_system%/domains/%domain%.error.log
    <Directory %sdocroot%>
        SSLRequireSSL
        AllowOverride All
        Options +Includes -Indexes +ExecCGI
        php_admin_value open_basedir %docroot%:%home%/%user%/tmp
        php_admin_value upload_tmp_dir %home%/%user%/tmp
        php_admin_value session.save_path %home%/%user%/tmp
        <Files *.php>
          SetHandler fcgid-script
        </Files>
        FCGIWrapper %home%/%user%/web/%domain%/cgi-bin/fcgi-starter .php
    </Directory>
    <Directory %home%/%user%/web/%domain%/stats>
        AllowOverride All
    </Directory>
    php_admin_value open_basedir none
    SSLEngine on
    SSLVerifyClient none
    SSLCertificateFile %ssl_crt%
    SSLCertificateKeyFile %ssl_key%
    %ssl_ca_str%SSLCertificateChainFile %ssl_ca%

    IncludeOptional %home%/%user%/conf/web/s%web_system%.%domain%.conf*

</VirtualHost>

Ahora, solo basta con reiniciar apache y en caso de ser necesario, re configurar los usuarios ya creados en vesta, esto se hace con el siguiente comando, donde admin es el nombre del usuario a re-generar.

 v-rebuild-user <strong>admin</strong> 

Finalmente, a los sitios que queremos que corran sobre php 5.6 se les debe configurar el respectivo template en la interface, para ello simplemente hay que ir al sitio web y dentro de su configuración seleccionar phpfcgid56

Nota Avanzada: El procedimiento que se hizo en las plantillas simplemente consistió en duplicar la plantilla existente y modificar el parámetro que llama a la versión del php por php5.6. Esto se hizo en el archivo phpfcgid56.sh

2 thoughts on “PHP 7 y PHP 5.6 en VestaCP

  1. Hola,
    si solo quiero php7 en mi servidor, ¿que tengo que hacer?
    aun no he instalado vestacp.
    primero instalo php7 o ya viene con vestacp?

  2. Si instalas la ultima version de Vesta, el se encarga de instalar todo, incluido PHP7.

    Saludos!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *