Перед обновлением не забудьте сделать полную резервную копию всей сервера. Именно сервера, а не только сайта.
Для поднятия версии PHP до 8 и старше нужно обновить версию BitrixVM до 7.5+. Для этого нужно подключиться к серверу по ssh и выбрать сначала пункт "1. Manage servers in the pool", затем "4. Update packages on host". На запрос системы "Enter server address" указываем IP-адрес сервера. На запрос системы "Please choose update type" можно указать либо "bitrix" — для обновления только BitrixEnv до актуальной версии, либо "all" для обновления всех имеющихся пакетов, в том числе и BitrixEnv.
После 1го июля 2024 года обновление BitrixVM может завершиться ошибкой. Связано это с тем, что с этого момента срок службы CentOS 7 истек и команда CentOS удалила свои зеркала из Интернета. Доступ к ним по-прежнему можно получить через vault.centos.org. Но для этого нужно обновить URL-адреса репозитория.
Для этого идем в файл
/etc/yum.repos.d/CentOS-Base.repoи меняем его содержимое на:
[base]
name=CentOS-$releasever - Base
baseurl=http://vault.centos.org/7.9.2009/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[updates]
name=CentOS-$releasever - Updates
baseurl=http://vault.centos.org/7.9.2009/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[extras]
name=CentOS-$releasever - Extras
baseurl=http://vault.centos.org/7.9.2009/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[centosplus]
name=CentOS-$releasever - Plus
baseurl=http://vault.centos.org/7.9.2009/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Далее рекомендуется выполнить команду
yum clean all && yum makecacheДля этого в основном меню выбираем пункт "0. Exit", вводим "yum clean all && yum makecache", выполняем и вызываем основное меню командой "/root/menu.sh".
После чего запускаем обновление BitrixVM снова. Если обновление прошло успешно, то в меню системы мы увидим информацию о версии BitrixVM:
Если же обновление не удалось, то можно попробовать выяснить причины с помощью логов, они находятся в папке
/opt/webdir/temp/, где должны быть папки с именами вида "update_1817530180". Внутри есть файл status.
При успешном обновлении можно попробовать поднять версию PHP. Для этого в меню системы нужно выбрать пункт "1. Manage servers in the pool", затем пункт "8. Update PHP and MySQL.", на запрос системы ответить "all". Выбираем Пункт "1. Upgrade PHP" и далее выбрать нужную версию PHP (желательно делать обновление последовательно, от версии к версии). Указываем "y" для подтверждения обновления.
После того, как задача по обновлению запущена, мы можем отследить ее статус. Для этого возвращаемся в главное меню системы и выбираем пункт "10. Background pool tasks", где будут отображены текущие задачи и их статус. Задача по обновлению PHP может завершиться ошибкой.
В этом случае в первую очередь стоит попробовать отредактировать отредактировать файл с ссылками на репозитории PHP. Для этого открываем файл
/etc/yum.repos.d/remi-phpXX.repo, где XX — версия PHP, которую нужно установить (например, php74, php80 и так далее).и меняем его содержимое на:
[remi-phpXX]
name=Remi's PHP X.X RPM repository for Enterprise Linux 7 - $basearch
#baseurl=http://rpms.remirepo.net/enterprise/7/phpXX/$basearch/
mirrorlist=https://rpms.remirepo.net/enterprise/7/phpXX/httpsmirror
mirrorlist=http://cdn.remirepo.net/enterprise/7/phpXX/mirror
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
не забываем поменять XX на версию PHP (например, на 74,80,81...). Сохраняем файл, снова запускаем обновление PHP и снова смотрим статус обновления в пункте "10. Background pool tasks" основного меню.
Если задание завершается состоянием "finished", то поднимаем версию PHP до нужной теми же шагами.
Если же задание завершается ошибкой, то стоит проверить логи задачи. Они находятся в папке
/opt/webdir/temp, в папках с названиями, соответствующими заданиям в пункте "10. Background pool tasks" основного меню, например,
/opt/webdir/temp/bx_php_upgrade_php73_4005548604Внутри папки есть файл "status", где есть логирование процесса обновления и можно увидеть причину ошибки. К примеру мы можем увидеть что-то вроде
FAILED! => {"changed": true, "msg": "Error: Package: php-google-recaptcha-1.3.0-1.el7.remi.noarch (remi)\n Requires: php(language) >= 8\n
Это означает, что тот или иной пакет, в данном случае google-recaptcha-1.3.0-1 конфликтует с обновлением.
Как вариант, можно удалить пакет из yum. В данном случае нужно отдавать себе отчет, что это может повлечь нарушение работоспособности системы. Для поиска нужного пакета можно вызвать команду
yum list installedДля этого в основном меню выбираем пункт "0. Exit", вводим "yum list installed", выполняем и ищем в списке нужный пакет. В данном случае был найден "php-google-recaptcha.noarch", вызываем команду
yum remove php-google-recaptcha.noarchВызываем основное меню командой "/root/menu.sh" и снова пытаемся обновить версию PHP.