Vestacp как изменить версию php

Установка дополнительных версий PHP в VestaCP с помощью Docker

Наверное, многие сталкивались с ситуацией, когда среди проектов, работающих на современном ПО, остается пара полузабытых, а держать отдельную машину под них не хочется. Вариантов решения — масса, но в службе поддержки хостинг-компании данная проблема не теряет своей актуальности. Мои коллеги разработали скрипт, помогающий добавить нужную версию PHP в VestaCP буквально за пару минут. Данный метод уже зарекомендовал себя с хорошей стороны, и он продолжает радовать сотрудников поддержки. Самое время его опубликовать и помочь всем, кто столкнулся с подобной проблемой.

Для того чтобы воспользоваться решением, достаточно скопировать одну строчку в терминал, но мы рассмотрим чуть подробнее, как всё это работает.

Установка

Будет установлен (если не был установлен ранее) docker через унифицированный инсталлятор (проверялся на CentOS7 и Ubuntu).

Последний аргумент в команде — желаемая версия PHP. В настоящий момент доступны версии PHP: 5.2, 5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2 и 7.3. Скрипт создаст шаблон для Vesta и два сервисных файла: docker.httpd и docker.php.56.

Все сервисы выполняют установку/обновление образов, в связи с чем первый запуск (например, подключение шаблона в “Весте”) либо перезапуск при наличии обновлений может занять некоторое время.

PHP запускается от имени www-data. На хосте будет создан (если еще нет) соответствующий пользователь. Владелец директории сайта будет изменен на www-data, группа останется прежняя. Также будет создана директория /opt/docker/ для хранения конфигурационных файлов.

Читайте также:  Python requests get headers authorization

В итоге мы потратим ~700 Мб на установку самого докера и около ~300Мб на образы, но получим прирост производительности. Результаты измерения производительности средствами Bitrix в 1.5-2 раза выше для связки VestaCP + Docker, чем при использовании аналогичной версии PHP в качестве модуля Apache.

Установка на одноядерный процессор

При установке докер-контейнера на сервер с одноядерным процессором (cpu=1) не будет автоматически запускаться контейнер PHP.
В таких случаях необходимо отредактировать файл /etc/systemd/system/docker.php.56.service (где 5.6 — установленная версия PHP):

Далее перезапустить докер:

systemctl stop docker
systemctl start docker

После чего переключить на нужную версию PHP в панели VestaCP. В случае если нужная версия уже выбрана, то необходимо переключить на дефолтную, сохранить и снова переключить на нужную версию PHP.

Схема работы

Схема работы выглядит следующим образом:

Nginx -> apache в контейнере -> php-fpm в контейнере.

Apache потребовалось запаковать в контейнер (~80mb) из-за различий версий между CentOS и Apache. Версия в Centos не позволяет корректно проксировать запросы на fpm.

Apache запускается на порту 9080, поэтому скрипт редактирует конфигурацию nginx. Переключение на стандартный шаблон Vesta (default) вернет прежний порт (8080).

PHP запускается на 9000+version, то есть 9056, 9070, 9072 и т.д.

HTTPD

httpd запускается следующим образом:

docker run —rm —network host
-v /home:/home
-v /var/log/httpd/domains:/var/log/apache2/domains
-v /opt/docker/conf/web:/usr/local/apache2/conf/vhosts
—name docker-httpd kotpoliglot/php:httpd

В /opt/docker/conf/web лежат хосты, httpd в контейнере с минимальным набором модулей из-за экономии ресурсов, хосты для контейнеров хранятся в /opt/docker/conf/web, в директории Vesta (/home/admin/conf/web/) создается пустой файл.

PHP

PHP запускается следующим образом:

docker run —rm —network host —cpus=2
-v /etc/passwd:/etc/passwd
-v /etc/group:/etc/group
-v /etc/hosts:/etc/hosts
-v /var/lib/mysql/mysql.sock:/var/run/mysqld/mysqld.sock
-v /opt/docker/conf/php/56/php.ini:/usr/local/etc/php/conf.d/docker.ini
-v /home:/home —name php-56 kotpoliglot/php:56

passwd и group передаются в контейнер из-за различных требований к uname и uid в CentOS и Ubuntu.

/etc/hosts — внешние адреса доменов Vesta, они нужны в контейнере для корректной работы сокетов в Bitrix, например. Файл обновляется при каждом переключении шаблонов в Vesta.
/opt/docker/conf/php/56/php.ini — файл, с помощью которого можно повлиять на параметры PHP в контейнере.

Добавление модулей и пакетов

При необходимости можно добавить тот или иной модуль или пакет в контейнер. Образы собраны на основе alpine для экономии ресурсов. Пакеты ставятся через apk, например, создаем Dockerfile cо следующим содержимым:

FROM kotpoliglot/php:56
RUN apk add —no-cache libpng-dev

Затем сохраняем файл и выполняем:

PHP

В случае, если требуется модуль для PHP, в контейнерах есть набор скриптов docker-php-ext-configure, docker-php-ext-install и docker-php-ext-enable (описание).

Установка будет выглядеть следующим образом: создаем Dockerfile в произвольной директории со следующим содержимым:

FROM kotpoliglot/php:56
RUN docker-php-ext-install zip

Будет создан новый образ с прежним именем и установленным модулем.

сервисном файле стоит удалить ExecStartPre=/usr/bin/docker pull kotpoliglot/php:56, чтобы запускался локальный образ, а не заново скачанный с DockerHub.

Сервисные файлы доступны по пути /etc/systemd/system/.

Если инструмент показался вам полезным — дайте знать, мы подготовим подобное решение, например, для панели ISPConfig.

Источник

Vesta Control Panel — Forum

всем привет
после установки Весты в системе php 7.2.7, но мне надо ее понизить
из remi подтянулось php54 — это меня устраивает
вопрос: как сменить версию на другую в рамках Весты?

pro100ssk Posts: 111 Joined: Mon Oct 19, 2015 12:12 pm
Os: Debian 8x Web: apache + nginx

Re: как сменить версию php на CentOS 7

Post by pro100ssk » Tue Nov 27, 2018 10:16 pm

В рамках VestaCP никак (надеюсь пока-что)
Можете вручную установить нужную версию затем отключить ненужную версию и включить нужную.
Мануалов в сети много.

grayfolk Support team Posts: 1111 Joined: Tue Jul 30, 2013 10:18 pm Contact:

Re: как сменить версию php на CentOS 7

Post by grayfolk » Wed Nov 28, 2018 2:21 am

Панель всего лишь ставит ДЕФОЛТНЫЕ версии и потом позволяет управлять конфигами. Никаких иных связей с версиями используемого ПО у панели нет.

Alex Connor Support team Posts: 1047 Joined: Fri Mar 21, 2014 7:49 am Contact:

Re: как сменить версию php на CentOS 7

Post by Alex Connor » Wed Nov 28, 2018 11:24 am

https://it-data.co.ua/tmp/multiphp_vesta.sh

pr0g Posts: 5 Joined: Thu Jul 13, 2017 4:18 am
Os: CentOS 6x Web: nginx + php-fpm

Re: как сменить версию php на CentOS 7

Post by pr0g » Tue Dec 04, 2018 10:46 am

всем привет
после установки Весты в системе php 7.2.7, но мне надо ее понизить
из remi подтянулось php54 — это меня устраивает
вопрос: как сменить версию на другую в рамках Весты?

prmres Posts: 57 Joined: Tue Feb 02, 2016 4:28 pm
Os: CentOS 7x Web: apache + nginx

Re: как сменить версию php на CentOS 7

Post by prmres » Wed Dec 05, 2018 5:04 pm

из коробки не ставит, надо немножко «подкрутить»:

сначала поставить yum-utils:

yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum-config-manager --enable remi yum-config-manager --enable remi-php72

или руками включить (enabled=1) репозитории в:
/etc/yum.repos.d/remi.repo
/etc/yum.repos.d/remi-php72.repo

toherman Posts: 16 Joined: Mon Sep 21, 2015 3:27 pm
Os: CentOS 6x Web: nginx + php-fpm

Re: как сменить версию php на CentOS 7

Post by toherman » Sat Jan 05, 2019 9:44 pm

Простите, за, возможно, глупый вопрос — получится ли, указанными советами, сделать мульти-php?
Просто, на хостинге есть сайты, которые давно не обновляются хозяевами, подозреваю, не перенесут миграцию на php-7 всего хоста. Так как, некоторые функции могут не поддерживаться.

pro100ssk Posts: 111 Joined: Mon Oct 19, 2015 12:12 pm
Os: Debian 8x Web: apache + nginx

Re: как сменить версию php на CentOS 7

Post by pro100ssk » Wed Feb 13, 2019 7:55 pm

mailarn Posts: 46 Joined: Tue Feb 12, 2019 2:38 pm
Os: CentOS 6x Web: apache

Re: как сменить версию php на CentOS 7

Post by mailarn » Mon Feb 18, 2019 4:37 pm

Источник

Переключение версий php для домена (VestaCP) Print

По умолчанию домены работают на основной версии PHP это php-mod. Чтобы изменить php версию на другую существует несколько способов:

Переустановить текущую основную версию php на желаемую. Это может затронуть работу доменов уже работающих на основной версии PHP. Домен будет работать в режиме mod-php.

Сменить Web Template для домена.Для этого используется php-selector. Домен будет работать в режиме CGI/FastCGI. Для этого используется php-selector.

Первый способ применяется когда для работы домена нужен именно режим mod-php, но домен не хочет работать на текущей основной версии php и режим CGI ему не подходит. Второй способ является безболезненным его мы и рассмотрим.

Второй способ доступен только для ОС CentOS. Для Debian или Ubuntu не раелизован php-selector и нету возможности в панели управления выбирать разные версии PHP!

Для смены версии PHP нужно перейти в пункт меню WEB и напротив нужного домена выбрать EDIT . Дальше в настройках домена нас интересует поле Web Template , по умолчанию там установлено значение default — это и есть режим работы mod-php. Изменим его например на php-7.0, для этого выбираем sk-php70 и сохраняем.

Дальше чтобы убедиться что наши действия действительно применились, можно проверить информацию о PHP

По умолчанию для доменов доступны следующие версии PHP: php-5.5, php-5.6, php-7.0. Если нам хочеться версию PHP посвежее прийдется пошаманить немножко в консоли. Нужно залогиниться в консоль под пользователем root, скачать установочный скрипт и установить нужные нам версии PHP. После чего они станут доступны для доменов.

wget https://cdn.swiftcloud.ru/vestacp/sk-php-selector.sh bash sk-php-selector.sh php71 php72
[root@myservak ~]# wget https://cdn.swiftcloud.ru/vestacp/sk-php-selector.sh --2018-07-02 00:41:10-- https://cdn.swiftcloud.ru/vestacp/sk-php-selector.sh Распознаётся cdn.swiftcloud.ru (cdn.swiftcloud.ru). 81.177.140.54 Подключение к cdn.swiftcloud.ru (cdn.swiftcloud.ru)|81.177.140.54|:443. соединение установлено. HTTP-запрос отправлен. Ожидание ответа. 200 OK Длина: 5522 (5,4K) [application/x-sh] Сохранение в: «sk-php-selector.sh» 100%[================================================================================================================================================================================================>] 5.522 --.-K/s за 0s 2018-07-02 00:41:11 (370 MB/s) - «sk-php-selector.sh» сохранён [5522/5522] [root@myservak ~]# bash sk-php-selector.sh php71 php72 You have remi repo installed and run: CentOS Linux release 7.4.1708 (Core) ########## Start installing aditional php version ########## Actually you runing php 5.6, so I will skip it Installing PHP 7.1 . PHP 71 Ready! Actually you runing php 5.6, so I will skip it Installing PHP 7.2 . PHP 72 Ready! ################################ Aditional PHP versión installed! More info on skamasle.com or vestacp forums or twit your experience in @skamasle

Данным скриптом возможно доустановить следующие версии: php-5.4, php-5.5, php-5.6, php-7.0, php-7.1, php-7.2

Источник

Оцените статью