Обновление 3.18: различия между версиями

Материал из WiKi - UserSide
Нет описания правки
Строка 67: Строка 67:
* Обратите внимание, что при вызове команды <code>php</code> из командной строки, теперь будет вызываться php8.1, так как это последняя установленная версия. Если вы где-либо до сих пор используете php7.4, то вам нужно изменить вызов php в этих местах либо изменить альтернативную команду php, чтобы она запускала нужную вам версию.
* Обратите внимание, что при вызове команды <code>php</code> из командной строки, теперь будет вызываться php8.1, так как это последняя установленная версия. Если вы где-либо до сих пор используете php7.4, то вам нужно изменить вызов php в этих местах либо изменить альтернативную команду php, чтобы она запускала нужную вам версию.


* USERSIDE 3.18 требует Python версии 3.8 или новее. Если ваша версия ниже 3.8, то вам обязательно нужно будет установить более новую версию. Инструкцию того, как это сделать, мы убрали по причине слепого копипаста команд без понимания когда и зачем их выполнять. Если вы обновите версию Python, то вам придется переустановить все, что раньше работало на предыдущей версии.
* USERSIDE 3.18 требует Python версии 3.8 или новее. Если ваша версия ниже 3.8, то вам [[Python-update|обязательно нужно будет установить более новую версию]], прежде чем продолжить.


* Остановите супервизор и все контролируемые им службы:
* Остановите супервизор и все контролируемые им службы:
Строка 93: Строка 93:
  sudo -u www-data php7.4 userside_install.phar repair
  sudo -u www-data php7.4 userside_install.phar repair


* Следующее действие нужно выполнять только если вы обновили Python. Если не обновляли, можно не выполнять:
* Следующее действие нужно выполнять только если вы [[Python-update|обновили Python]]. Если не обновляли, можно не выполнять:
  sudo rm -rf /var/www/userside/microservice/poller/venv
  sudo rm -rf /var/www/userside/microservice/poller/venv
  sudo python3 -m venv /var/www/userside/microservice/poller/venv
  sudo python3.11 -m venv /var/www/userside/microservice/poller/venv


* Необходимо обновить (установить) зависимости для поллера:
* Необходимо обновить (установить) зависимости для поллера:

Версия от 12:38, 10 августа 2023

Версия: 3.18

Требуется версия: 3.10 и выше

Несколько слов от автора

  • Мы двигаемся дальше. Это "военная версия" 3.18. Её разработка была долгая и осложнённая военными действиями, перебоями с энергоснабжением и многим другим.
  • Сделано немало и опять же особенно мы старались сделать упор на доработку всяческих мелочей. Прошу вдумчиво ознакомиться со списком изменений
  • Обновление. Рекомендую иметь два инстанса системы. Отдельно действующую и отдельно тестовую. На тестовой вы можете периодически обновлять базу данных с действующей системы и проводить обновление, убеждаясь, что всё работает, ознакомиться с нововведениями или выявлять моменты, которые у вас перестали работать.

Особенности в проведении обновления

При обновлении в Docker-окружении, обратитесь к инструкциям в репозитории Docker-бандла.

  • Если вы обновляетесь с версии 3.10 - ознакомьтесь со страницей: Обновление 3.11
  • Если вы обновляетесь с версии 3.11 и ранее - ознакомьтесь со страницей: Обновление 3.12
  • Если вы обновляетесь с версии 3.12 и ранее - ознакомьтесь со страницей: Обновление 3.13
  • Если вы обновляетесь с версии 3.13 и ранее - ознакомьтесь со страницей: Обновление 3.14
  • Если вы обновляетесь с версии 3.14 и ранее - ознакомьтесь со страницей: Обновление 3.15
  • Если вы обновляетесь с версии 3.15 и ранее - ознакомьтесь со страницей: Обновление 3.16
  • Если вы обновляетесь с версии 3.16 и ранее - ознакомьтесь со страницей: Обновление 3.17
  • Версия 3.18 требует PHP версии 8.1. Вы можете установить все необходимые пакеты дополнительно к уже существующей иной версии PHP. Если используете LDAP, то установите также php8.1-ldap. Если используете TurboSMS, то установите php8.1-soap.
sudo apt install -y php8.1-{fpm,cli,common,curl,intl,mbstring,opcache,pgsql,readline,xml,zip,snmp,gd}
  • Если версия php8.1 отсутствует в вашем репозитории, то воспользуйтесь альтернативным репозиторием, например, deb.sury.org, добавив его в систему следующим образом и затем повторив команду установки PHP8.1 приведенную пунктом выше:
sudo curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg
sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
sudo apt update
  • Измените конфигурацию PHP следующим образом и перезапустите службу php-fpm.

Обратите внимание, что если ваш часовой пояс Europe/Kiev, то вместо $(cat /etc/timezone) Вы должны написать Europe/Kyiv. В Debian 11 еще не внесены изменения по переименованию часового пояса, в то время как в PHP 8.1 изменения уже внесены.

sudo sed -i "s@^;date.timezone.*@date.timezone = $(cat /etc/timezone)@" /etc/php/8.1/fpm/php.ini
sudo sed -i "s@^;date.timezone.*@date.timezone = $(cat /etc/timezone)@" /etc/php/8.1/cli/php.ini
sudo sed -i "s@;cgi.fix_pathinfo=1@cgi.fix_pathinfo=0@" /etc/php/8.1/fpm/php.ini
sudo sed -i "s@post_max_size = 8M@post_max_size = 100M@" /etc/php/8.1/fpm/php.ini
sudo sed -i "s@upload_max_filesize = 2M@upload_max_filesize = 100M@" /etc/php/8.1/fpm/php.ini
sudo sed -i "s@max_execution_time.*@max_execution_time = 300@" /etc/php/8.1/fpm/php.ini
sudo sed -i "s@max_input_time.*@max_input_time = 300@" /etc/php/8.1/fpm/php.ini
 
sudo systemctl restart php8.1-fpm
  • В NGINX измените используемую версию PHP для обновляемой копии USERSIDE. Если вы следовали инструкциям по установке системы, то в файле /etc/nginx/conf.d/default.conf или userside.conf или в другом, который вы использовали для настройки userside, измените строку:
fastcgi_pass  unix:/run/php/php7.4-fpm.sock;

на строку

fastcgi_pass  unix:/run/php/php8.1-fpm.sock;

и перечитайте конфигурацию nginx:

sudo nginx -s reload
  • Обратите внимание, что при вызове команды php из командной строки, теперь будет вызываться php8.1, так как это последняя установленная версия. Если вы где-либо до сих пор используете php7.4, то вам нужно изменить вызов php в этих местах либо изменить альтернативную команду php, чтобы она запускала нужную вам версию.
  • Остановите супервизор и все контролируемые им службы:
sudo systemctl stop supervisor
  • Теперь консольный скрипт, запускающий различные команды из командной строки, имеет имя run вместо userside. Вам нужно изменить везде команду запуска с php /var/www/userside/userside на php /var/www/userside/run.
    • В файле /etc/cron.d/userside нужно заменить строку:
* * * * *   www-data   /usr/bin/php /var/www/userside/userside cron > /dev/null

на строку:

* * * * *   www-data   /usr/bin/php /var/www/userside/run cron > /dev/null
    • В файле /etc/supervisor/conf.d/us-core-worker.conf нужно заменить строку:
command=/usr/bin/php /var/www/userside/userside queue/listen

на строку:

command=/usr/bin/php /var/www/userside/run queue/listen
  • Пользователю RabbitMQ, который используется в USERSIDE, необходимо дать права на мониторинг, чтобы USERSIDE мог осуществлять мониторинг работы сервера. Для этого выполните (при условии, что имя вашего пользователя userside):
sudo rabbitmqctl set_user_tags "userside" "monitoring"

Если вы используете vhost оличный от корневого (по умолчанию), то также нужно добавить соответствующую опцию, например для vhost userside_dev:

sudo rabbitmqctl --vhost userside_dev set_user_tags "userside" "monitoring"
sudo -u www-data php userside_install.phar install
  • В случае ошибки в процессе обновления или если работа инсталлятора не была завершена корректно, запустите инсталлятор в режиме восстановления. Возможно для этого понадобится вернуть прежнее значение fastcgi_pass в конфигурации nginx, а также запускать инсталлятор при помощи указания конкретной версии PHP, например:
sudo -u www-data php7.4 userside_install.phar repair
  • Следующее действие нужно выполнять только если вы обновили Python. Если не обновляли, можно не выполнять:
sudo rm -rf /var/www/userside/microservice/poller/venv
sudo python3.11 -m venv /var/www/userside/microservice/poller/venv
  • Необходимо обновить (установить) зависимости для поллера:
cd /var/www/userside/microservice/poller
sudo venv/bin/pip3 install --upgrade pip
sudo venv/bin/pip3 install -U -r requirements.txt
  • Обратите внимание, что начиная с версии 3.18, фоновыми службами выполняется значительная часть работы по взаимодействию с сетевым оборудованием. Запустите супервизор:
sudo systemctl start supervisor

И проследите, чтобы все службы запустились и работали корректно (RUNNING):

sudo supervisorctl status

Вы должны увидеть 5 экземпляров службы us-poller и 10 экземпляров службы us-core-worker, либо то количество, которое вы самостоятельно указали в конфигурационных файлах супервизора.

  • Начиная с версии 3.18 вместо модулей сателлитов (usm_satellite), устанавливаемых на удаленных узлах для проксирования команд взаимодействия с оборудованием, теперь используются точно такие же поллеры, как и в ядре системы, но с обязательным указанием идентификатора "сетеллита" в настройках. Обязательно ознакомьтесь с действиями, необходимыми для перехода с usm_satellite на usm_poller в соответствующем разделе.
  • В версии 3.18 мы очень сильно переработали структуру базы данных. Поменялась как основная схема так и имена всех таблиц, почти всех полей и, зачастую, типы этих полей. Во-первых обновление может занять длительное время, а во-вторых если вы в работе использовали прямое чтение из базы данных - всё это нуждается в переработке.
  • Переработан низкоуровневый опрос оборудования (FDB, ARP, опрос интерфейсов и т.п.). Всё это теперь выполняется поллерами ядра. После обновления проверьте работоспособность опроса FDB-таблиц и прочего.
  • Удалена работа с JABBER. Используйте службу уведомлений "Custom HTTP request" либо Messenger (Telegram)
  • Если вы до сих пор не перенастроили API-ключ на новую систему - сделайте это. В версии 3.18 $zapikey удален и API-перестанет работать для тех, кто не провёл перенастройку.
  • Не забудьте обновить все модули на их свежие версии

Список изменений: просмотреть

Проведение обновления: инструкция