Обновление 3.18: различия между версиями
Admin (обсуждение | вклад) |
Нет описания правки |
||
(не показано 29 промежуточных версий 3 участников) | |||
Строка 1: | Строка 1: | ||
[[Upgrade_3.18|en]] | [[Обновление_3.18|ru]] | |||
Версия: '''[[3.18]]''' | Версия: '''[[3.18]]''' | ||
Строка 6: | Строка 8: | ||
* Мы двигаемся дальше. Это "военная версия" 3.18. Её разработка была долгая и осложнённая военными действиями, перебоями с энергоснабжением и многим другим. | * Мы двигаемся дальше. Это "военная версия" 3.18. Её разработка была долгая и осложнённая военными действиями, перебоями с энергоснабжением и многим другим. | ||
* Сделано немало и опять же особенно мы старались сделать упор на доработку всяческих мелочей. Прошу вдумчиво ознакомиться со [[3.18|списком изменений]]. | * Сделано немало и опять же особенно мы старались сделать упор на доработку всяческих мелочей. Прошу вдумчиво ознакомиться со [[3.18|списком изменений]] | ||
* Обратите внимание на страницу [["Горячие клавиши"]] | |||
* В версии 3.18 объявляются устаревшими разделы: | |||
** "[[Заявка на подключение]]". В версии 3.19 раздел будет удалён. Используйте раздел "[[API]]" для организации приема заявок и создания задач | |||
** "[[Общая схема коммутации]]". В версии 3.19 раздел будет удалён. Используйте в работе раздел "[[Схемы коммутации]]" | |||
* [[ | * [[Обновление]]. '''Рекомендую иметь два инстанса системы'''. Отдельно действующую и отдельно тестовую. На тестовой вы можете периодически обновлять базу данных с действующей системы и проводить обновление, убеждаясь, что всё работает, ознакомиться с нововведениями или выявлять моменты, которые у вас перестали работать. | ||
* Наша группа в Telegram для взаимного общения клиентов между собой: https://t.me/usersideeu и канал для новостей: https://t.me/userside | * Наша группа в Telegram для взаимного общения клиентов между собой: https://t.me/usersideeu и канал для новостей: https://t.me/userside | ||
== Особенности в проведении обновления == | == Особенности в проведении обновления == | ||
При обновлении в Docker-окружении, обратитесь к [https://github.com/userside/userside-docker/tree/v3.18 инструкциям] в репозитории Docker-бандла. | |||
* Если вы обновляетесь с версии 3.10 - ознакомьтесь со страницей: [[Обновление 3.11]] | * Если вы обновляетесь с версии 3.10 - ознакомьтесь со страницей: [[Обновление 3.11]] | ||
Строка 28: | Строка 38: | ||
* Если вы обновляетесь с версии 3.16 и ранее - ознакомьтесь со страницей: [[Обновление 3.17]] | * Если вы обновляетесь с версии 3.16 и ранее - ознакомьтесь со страницей: [[Обновление 3.17]] | ||
* С помощью автоматического [[Инсталлятор|инсталлятора]] выполните [[Обновление | * Версия 3.18 требует PHP версии 8.1. Вы можете установить все необходимые пакеты дополнительно к уже существующей иной версии PHP. Если используете LDAP, то установите также php8.1-ldap. Если используете TurboSMS, то установите php8.1-soap. | ||
sudo -u www-data php userside_install.phar | 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. | |||
Обратите внимание, что если ваш часовой пояс <code>Europe/Kiev</code>, то вместо <code>$(cat /etc/timezone)</code> Вы должны написать <code>Europe/Kyiv</code>. В Debian 11 еще не внесены изменения по переименованию часового пояса, в то время как в PHP 8.1 изменения уже внесены. | |||
<pre> | |||
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 | |||
</pre> | |||
* В 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 | |||
* Обратите внимание, что при вызове команды <code>php</code> из командной строки, теперь будет вызываться php8.1, так как это последняя установленная версия. Если вы где-либо до сих пор используете php7.4, то вам нужно изменить вызов php в этих местах либо изменить альтернативную команду php, чтобы она запускала нужную вам версию. | |||
* USERSIDE 3.18 ''требует Python3 любой поддерживаемой на данный момент версии. Статус версий можно посмотреть здесь: "[https://devguide.python.org/versions/ Status of Python versions]". Рекомендуется использовать версию с состоянием "security" или "bugfix". Версии отмеченные как "end-of-life" не поддерживаются. Отмеченные как "feature" не рекомендуется использовать. Если у вас на хосте неподдерживаемая версия ("end-of-life"), то нужно обязательно [[Python-update|установить дополнительно]] более свежую версию Python.'' | |||
* Остановите супервизор и все контролируемые им службы: | |||
sudo systemctl stop supervisor | |||
* Теперь консольный скрипт, запускающий различные команды из командной строки, имеет имя <code>run</code> вместо <code>userside</code>. Вам нужно изменить везде команду запуска с <code>php /var/www/userside/userside</code> на <code>php /var/www/userside/run</code>. | |||
** В файле /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 мог осуществлять мониторинг работы сервера. Для этого выполните (при условии, что имя вашего пользователя <code>userside</code>): | |||
sudo rabbitmqctl set_user_tags "userside" "monitoring" | |||
Если вы используете vhost оличный от корневого (по умолчанию), то также нужно добавить соответствующую опцию, например для vhost <code>copy</code>: | |||
sudo rabbitmqctl --vhost copy set_user_tags "userside" "monitoring" | |||
* Удалите рудиментарные очереди: | |||
<pre> | |||
sudo rabbitmqctl delete_queue userside.core | |||
sudo rabbitmqctl delete_queue userside.microservice.poller | |||
</pre> | |||
* С помощью автоматического [[Инсталлятор|инсталлятора]] выполните [[Обновление|обновление]]: | |||
sudo -u www-data php userside_install.phar install | |||
* Следующее действие нужно выполнять только если вы [[Python-update|обновили 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 мы очень сильно переработали структуру базы данных. Поменялась как основная схема так и имена всех таблиц, почти всех полей и, зачастую, типы этих полей. Во-первых обновление может занять длительное время, а во-вторых если вы в работе использовали прямое чтение из базы данных - всё это нуждается в переработке. | * В версии 3.18 мы очень сильно переработали структуру базы данных. Поменялась как основная схема так и имена всех таблиц, почти всех полей и, зачастую, типы этих полей. Во-первых обновление может занять длительное время, а во-вторых если вы в работе использовали прямое чтение из базы данных - всё это нуждается в переработке. | ||
* Переработан низкоуровневый опрос оборудования ''(FDB, ARP, опрос интерфейсов и т.п.)''. Всё это теперь выполняется поллерами ядра. После обновления проверьте работоспособность опроса FDB-таблиц и прочего. | |||
* Метки абонентов объединены с общими метками по системе. Соответственно в файлах конфигурации модулей взаимодействия с биллингами (либо в API) требуется изменить ID меток на новые (если вы это используете). Например для модуля usm_utm5 это переменная $markMerge | |||
* Удалена работа с JABBER. Используйте службу уведомлений "Custom HTTP request" либо Messenger ''(Telegram)'' | |||
* Если вы до сих пор не перенастроили API-ключ [[UserSide API Key|на новую систему]] - сделайте это. В версии 3.18 $zapikey удален и API-перестанет работать для тех, кто не провёл перенастройку. | |||
* Если в версии 3.17 вы до сих пор не [[Обновление 3.17|настроили работу с WebSTOMP]] - нужно это сделать иначе перестанет работать часть системы | |||
* Не забудьте обновить все модули на их свежие версии | * Не забудьте обновить все модули на их свежие версии | ||
* В полере (usm_poller) который теперь используется для взаимодействия с оборудованием, для аутентификации в SNMP v1 и v2 используется одно комьюнити. Но в пользовательском интерфейсе USERSIDE для обратной совместимости пока что оставлены два поля (ro и rw). Какое из значений будет использовано описано ниже в алгоритме выбора единственного SNMP-community. Чтобы упростить для себя эту задачу, вы можете использовать одно и то же комьюнити для двух полей. Например, если вы хотите предоставить для Userside доступ только на чтение, то в оба поля (ro и rw) впишите комьюнити с правами на чтение. Если хотите предоставить полный доступ, то также в оба поля впишите один и тот же комьюнити с полными правами. Также стоит учитывать, что незаполненное поле будет заполнено из глобальных настроек Userside. | |||
[[Файл:Селектор SNMP-community.png|обрамить|центр]] | |||
'''Список изменений:''' [[3.18|просмотреть]] | '''Список изменений:''' [[3.18|просмотреть]] | ||
'''Проведение обновления:''' [[Обновление | '''Проведение обновления:''' [[Обновление|инструкция]] |
Текущая версия от 12:50, 18 октября 2024
Версия: 3.18
Требуется версия: 3.10 и выше
Несколько слов от автора
- Мы двигаемся дальше. Это "военная версия" 3.18. Её разработка была долгая и осложнённая военными действиями, перебоями с энергоснабжением и многим другим.
- Сделано немало и опять же особенно мы старались сделать упор на доработку всяческих мелочей. Прошу вдумчиво ознакомиться со списком изменений
- Обратите внимание на страницу "Горячие клавиши"
- В версии 3.18 объявляются устаревшими разделы:
- "Заявка на подключение". В версии 3.19 раздел будет удалён. Используйте раздел "API" для организации приема заявок и создания задач
- "Общая схема коммутации". В версии 3.19 раздел будет удалён. Используйте в работе раздел "Схемы коммутации"
- Обновление. Рекомендую иметь два инстанса системы. Отдельно действующую и отдельно тестовую. На тестовой вы можете периодически обновлять базу данных с действующей системы и проводить обновление, убеждаясь, что всё работает, ознакомиться с нововведениями или выявлять моменты, которые у вас перестали работать.
- Наша группа в Telegram для взаимного общения клиентов между собой: https://t.me/usersideeu и канал для новостей: https://t.me/userside
Особенности в проведении обновления
При обновлении в 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, чтобы она запускала нужную вам версию.
- USERSIDE 3.18 требует Python3 любой поддерживаемой на данный момент версии. Статус версий можно посмотреть здесь: "Status of Python versions". Рекомендуется использовать версию с состоянием "security" или "bugfix". Версии отмеченные как "end-of-life" не поддерживаются. Отмеченные как "feature" не рекомендуется использовать. Если у вас на хосте неподдерживаемая версия ("end-of-life"), то нужно обязательно установить дополнительно более свежую версию Python.
- Остановите супервизор и все контролируемые им службы:
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 copy
:
sudo rabbitmqctl --vhost copy set_user_tags "userside" "monitoring"
- Удалите рудиментарные очереди:
sudo rabbitmqctl delete_queue userside.core sudo rabbitmqctl delete_queue userside.microservice.poller
- С помощью автоматического инсталлятора выполните обновление:
sudo -u www-data php userside_install.phar install
- Следующее действие нужно выполнять только если вы обновили 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-таблиц и прочего.
- Метки абонентов объединены с общими метками по системе. Соответственно в файлах конфигурации модулей взаимодействия с биллингами (либо в API) требуется изменить ID меток на новые (если вы это используете). Например для модуля usm_utm5 это переменная $markMerge
- Удалена работа с JABBER. Используйте службу уведомлений "Custom HTTP request" либо Messenger (Telegram)
- Если вы до сих пор не перенастроили API-ключ на новую систему - сделайте это. В версии 3.18 $zapikey удален и API-перестанет работать для тех, кто не провёл перенастройку.
- Если в версии 3.17 вы до сих пор не настроили работу с WebSTOMP - нужно это сделать иначе перестанет работать часть системы
- Не забудьте обновить все модули на их свежие версии
- В полере (usm_poller) который теперь используется для взаимодействия с оборудованием, для аутентификации в SNMP v1 и v2 используется одно комьюнити. Но в пользовательском интерфейсе USERSIDE для обратной совместимости пока что оставлены два поля (ro и rw). Какое из значений будет использовано описано ниже в алгоритме выбора единственного SNMP-community. Чтобы упростить для себя эту задачу, вы можете использовать одно и то же комьюнити для двух полей. Например, если вы хотите предоставить для Userside доступ только на чтение, то в оба поля (ro и rw) впишите комьюнити с правами на чтение. Если хотите предоставить полный доступ, то также в оба поля впишите один и тот же комьюнити с полными правами. Также стоит учитывать, что незаполненное поле будет заполнено из глобальных настроек Userside.
Список изменений: просмотреть
Проведение обновления: инструкция