Как повысить php7.2 до php7.4 в Vesta Panel на Ubuntu 18.04 LTS

Для того, чтобы повысить с php7.2 до php7.4 в Vesta panel нужно сделать несколько действий.

ОБРАЩАЮ ВАШЕ ВНИМАНИЕ, ЧТО ЭТА ИНСТРУКЦИЯ РАБОТАЕТ В ТОМ СЛУЧАЕ, ЕСЛИ У ВАС УСТАНОВЛЕНА СВЯЗКА NGINX + PHP_FPM (на UBUNTU 18.04). Для Apache не уверен в работоспособности.

1) Сделайте резервную копию имеющего сервера (у меня сервер на Digital Ocean — там все делает в несколько кликов)

2) Войдите на сервер по ssh и выполните следующую инструкцию

Добавьте репозиторий для php

sudo add-apt-repository ppa:ondrej/php
sudo apt-get update

Сделайте резервную копию пользователя admin (этот шаг в принцепе можно и пропустить)

v-backup-user admin

Далее вам нужно узнать, какие в данный момент у вас установлены расширения php, для этого выполнить эту команду:

dpkg --get-selections | grep -v deinstall | grep php7.2

На экране вы увидете список, скопируйте его в текстовый файл для дальнейшей подготовки.
Подготовка — замените все вхождения с 7.2 на 7.4

Далее выполните команду со списком установленных расширений (в моем случае получилась вот такая команда):

sudo apt-get install php7.4 php7.4-cgi php7.4-cli php7.4-common php7.4-curl php7.4-fpm php7.4-gd php7.4-imap php7.4-intl php7.4-json php7.4-ldap php7.4-mbstring php7.4-mysql php7.4-opcache php7.4-pspell php7.4-readline php7.4-soap php7.4-tidy php7.4-xml php7.4-xmlrpc php7.4-zip

Теперь необходимо остановить службу php7.2-fpm и стартануть php7.4-fpm. Команды

/etc/init.d/php7.2-fpm stop
/etc/init.d/php7.4-fpm start

Обновляете информацию о символических ссылках, входящих в подсистему альтернатив для ALT Linux. На экране появится список для выбора. Вам нужно ввести ту цифру, напротив которой будет написано php7.4-fpm.

update-alternatives --config php

Перезапустите php7.4-fpm и nginx

/etc/init.d/php7.4-fpm restart
service nginx restart

Перенестите конфиги от php7.2-fpm в php7.4-fpm. Команды:

cd /etc/php/7.2/fpm/pool.d/
cp * /etc/php/7.4/fpm/pool.d/

Пришло время внести корректировки в Vesta Panel. Отредактируйте конфиг /usr/local/vesta/conf/vesta.conf. Команда:

sudo nano /usr/local/vesta/conf/vesta.conf

Измените php-fpm to php7.4-fpm в строке WEB_BACKEND
Должно получиться вот так:

WEB_BACKEND='php7.4-fpm'

Далее, нужно скопировать шаблоны сайтов (без них вы не сможете добавить новый сайт). Речь идет об этих шаблонах:

Последовательно выполните команды:

cd /usr/local/vesta/data/templates/web/
cp -r php-fpm php7.4-fpm
cd /usr/local/vesta/data/templates/web/nginx
cp -r php-fpm php7.4-fpm

К большому сожалению, Vesta Panel на UBUNTU 18.04 не может работать с несколькими версиями PHP. В моем случае — это php7.2 и php7.4. Если я пытаюсь добавить новый домен то получаю ошибку: Error php-fpm pool doesn’t exist. Для решение это проблемы мне пришлось удалить php7.2.

Действия:
Удалить php7.2

sudo apt-get purge `dpkg -l | grep php7.2| awk '{print $2}' |tr "\n" " "`

У меня автоматически установился php8.0, мне он не нужен был и сайт выдавал ошибку 500, я его тоже удалил

sudo apt-get purge `dpkg -l | grep php8.0| awk '{print $2}' |tr "\n" " "`

Далее удалил предыдущую папку с конфигами php7.2

sudo rm -rf /etc/php/7.2/fpm/

Запустил php7.4 и перезапустил nginx

sudo /etc/init.d/php7.4-fpm start
sudo service nginx restart

Готово! Ваша Vesta Panel перешла с php 7.2 на php 7.4. Напоминаю, что все изменения вы производите на свой страх и риск! Для своих проектов я делал именно так. И не забывайте про резервные копии 🙂

К слову, есть короткая заметка, как сделать редирект с http на https в Vesta, если вы не знаете как