Альтернативные версии PHP в VestaCP

Рассмотрим установку альтернативной версии php на примере установленной панели VestaCP на систему Debian 8 (jessie).

Сервер с установленной панелью VestaCP доступен для установки из настроенного шаблона, при заказе сервера нужно выбрать ОС VestaCP.

По умолчанию Debian 8 идет с версией php 5.6, в данном топике рассмотрим установку альтернативной версии php 7.2

1. Проверяем текущую версию php предварительно создав файл /home/admin/web/test.ru/public_html/phpinfo.php с содержимым:

<?php
phpinfo()
?>

Результат:
версия php в VestaCP

2. Устанавливаем необходимые пакеты командой:

apt-get update && apt-get install build-essential libbz2-dev libjpeg-dev libpng-dev libfreetype6 libfreetype6-dev libmcrypt-dev libmcrypt4 mcrypt libedit-dev libreadline-dev libxslt1-dev autoconf g++ make openssl libssl-dev libcurl4-openssl-dev libcurl4-openssl-dev pkg-config libsasl2-dev  zlib1g-dev libzip-dev libicu-dev -y


3. Для компиляции разных версий PHP воспользуемся менеджером PHP версий PHPBrew.

Скачивание и установка в систему менеджера php версий PHPBrew:

curl -L -O https://github.com/phpbrew/phpbrew/raw/master/phpbrew && chmod +x phpbrew && mv phpbrew /usr/bin/phpbrew && mkdir -p /usr/local/php && phpbrew init --root=/usr/local/php && export PHPBREW_ROOT=/usr/local/php && [[ -e ~/.phpbrew/bashrc ]] && source ~/.phpbrew/bashrc && phpbrew update && phpbrew update --old


Проверка установленной версии PHPBrew

phpbrew --version


phpbrew — 1.26.0
cliframework core: 2.5.4

4. Компиляция PHP 7.2 с помощью PHPBrew

phpbrew install 7.2 +default +openssl=shared -- --with-openssl-dir=/usr/include/openssl --with-mysql-sock=/var/run/mysqld/mysqld.sock --with-mysql=mysqlnd --with-mysqli=mysqlnd --enable-pdo --with-pdo-mysql=mysqlnd --enable-exif --with-jpeg-dir=/usr --with-png-dir=/usr --with-freetype-dir=/usr --with-zlib-dir=/usr --with-mcrypt=/usr --with-mhash --with-xsl=/usr --enable-zip --enable-cgi --with-curl --with-gd --enable-pcntl --enable-mbregex --enable-gd-native-ttf --with-libdir=lib64 --enable-dba=shared --enable-intl --with-readline=/usr --enable-simplexml --enable-soap --enable-zip --with-mhash=yes --enable-shmop --enable-sockets --enable-wddx --enable-calendar --enable-sysvsem --enable-sysvshm --enable-sysvmsg --enable-bcmath --with-bz2 --enable-ctype --with-cdb --with-iconv --enable-exif --enable-ftp --with-gettext --with-pic


Спустя 15 минут компиляция PHP будет завершена о чем будет свидетельствовать вывод консоли:

===> Building...
Build finished: 15.4 minutes.
Installing...
---> Creating php-fpm.conf
---> Creating php.ini
---> Copying /usr/local/php/build/php-7.2.33/php.ini-development
---> Found date.timezone is not set, patching...
---> Found date.timezone, patching config timezone with UTC
Initializing pear config...
config-set succeeded
config-set succeeded
config-set succeeded
Enabling pear auto-discover...
config-set succeeded
Congratulations! Now you have PHP with 7.2.33 as php-7.2.33

* To configure your installed PHP further, you can edit the config file at
    /usr/local/php/php/php-7.2.33/etc/php.ini

To use the newly built PHP, try the line(s) below:

    $ phpbrew use php-7.2.33

Or you can use switch command to switch your default php to php-7.2.33:

    $ phpbrew switch php-7.2.33

Enjoy!


5. Добавление символической ссылки для установленной версии PHP 7.2 на /usr/local/php

ln -s /usr/local/php/php/php-7.2.33 /usr/local/php/php72


6. Включение CGI модуля Apache2

a2enmod actions cgi && service apache2 restart


7. Добавление шаблона и bash сценария в панель VestaCP для переключения версий PHP.

7.1 Добавление bash сценария для версии php 7.2 в файл /usr/local/vesta/data/templates/web/apache2/php72.sh

#!/bin/bash
user="$1"
domain="$2"
ip="$3"
home_dir="$4"
docroot="$5"
wrapper_script='#!/usr/local/php/php72/bin/php-cgi -c /usr/local/php/php72/etc/php.ini'
wrapper_file="/home/$user/web/$domain/cgi-bin/php"
echo "$wrapper_script" > $wrapper_file
chown $user:$user $wrapper_file
chmod -f 751 $wrapper_file
exit 0


7.2 Добавление шаблона для создания панелью VestaCP конфигурационного файла apache2.

Протокол http, файл /usr/local/vesta/data/templates/web/apache2/php72.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
        Action phpcgi-script /cgi-bin/php
        <Files *.php>
            SetHandler phpcgi-script
        </Files>
    </Directory>
    <Directory %home%/%user%/web/%domain%/stats>
        AllowOverride All
    </Directory>
    IncludeOptional %home%/%user%/conf/web/%web_system%.%domain%.conf*
</VirtualHost>


Протокол https, файл /usr/local/vesta/data/templates/web/apache2/php72.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
        Action phpcgi-script /cgi-bin/php
        <Files *.php>
            SetHandler phpcgi-script
        </Files>
    </Directory>
    <Directory %home%/%user%/web/%domain%/stats>
        AllowOverride All
    </Directory>
    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>


8. Устанавливаем права на шаблоны, перезапускаем вебсервер Apache2 и проверяем.

chmod 755 /usr/local/vesta/data/templates/web/apache2/* && service apache2 restart


В настройках домена в разделе Шаблон Web APACHE2 появится новый шаблон с названием PHP72, выбрав его и сохранив изменения можно проверить версию PHP (см. пункт 1).

Выбор php 7.2 в панели VestaCP

Версия php 7.2 включена

PHP 7.2  в панели VestaCP

Аналогичным способом повторяя пункты 4-8 можно установить другие версии PHP и создать для них шаблоны в панели VestaCP.

Комментарии (0)

RSS свернуть / развернуть
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.