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

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


* Версия 3.18 требует Python версии 3.8 или новее. Если ваша версия ниже 3.8, то вам обязательно нужно будет установить более новую версию (например, 3.10 или даже 3.11, если к моменту чтения этой инструкции она будет достаточно стабильной). В Debian вам необходимо будет скачать последнюю версию по ссылке ''Gzipped source tarball'' (можете также использовать и XZ-архив, если вам так больше нравится), приведенной на официальном сайте [https://www.python.org/downloads/source/ python.org] на сервер и последующей установкой. На других операционных системах процедура обновления может отличаться — обратитесь к поиску за инструкциями. Далее будут приведены команды обновления для Debian и версии Python 3.10. Список команд содержит вызов python и pip с опцией --version — это необходимо для контроля корректности установки нужной версии.
* Версия 3.18 требует Python версии 3.8 или новее. Если ваша версия ниже 3.8, то вам обязательно нужно будет установить более новую версию. Инструкцию того, как это сделать, мы убрали по причине слепого копипаста команд без понимания когда и зачем их выполнять.
sudo apt install -y libffi-dev
wget https://www.python.org/ftp/python/3.10.11/Python-3.10.11.tgz
tar xzf Python-3.10.11.tgz
cd Python-3.10.11
./configure --enable-optimizations
make -j $(nproc)
sudo make altinstall
sudo update-alternatives --install /usr/bin/python3 python3 /usr/local/bin/python3.10 1
python3 --version
curl -sS https://bootstrap.pypa.io/get-pip.py | sudo python3.10
pip3 --version
cd ..
rm -rf Python-3.10.11 Python-3.10.11.tgz


* Остановите супервизор и все контролируемые им службы:
* Остановите супервизор и все контролируемые им службы:

Версия от 08:10, 20 июня 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, чтобы она запускала нужную вам версию.
  • Версия 3.18 требует Python версии 3.8 или новее. Если ваша версия ниже 3.8, то вам обязательно нужно будет установить более новую версию. Инструкцию того, как это сделать, мы убрали по причине слепого копипаста команд без понимания когда и зачем их выполнять.
  • Остановите супервизор и все контролируемые им службы:
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
  • После обновления userside, при условии что была обновлена версия python, необходимо будет переустановить виртуальное окружение и зависимости для поллера. Старое окружение можно удалить и затем создать новое:
sudo rm -rf /var/www/userside/microservice/poller/venv
sudo python3 -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-перестанет работать для тех, кто не провёл перенастройку.
  • Не забудьте обновить все модули на их свежие версии

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

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