Upgrade Notes 23.09-23.12

До начала обновления

  1. Выполните резервное копирование базы данных до начала обновления!
  2. Обновление до последней версии Debian 12 Linux требует перезагрузку серверов.
  3. Обновление OpenSIPS до версии 3.4 LTS требует ручное обновление конфигурационного файла.

Алгоритм обновления

  1. Полная остановка всех сервисов webitel
  2. Обновление Debian Linux до версии 12
  3. Обновление приложений Webitel до v23.12
  4. Переход на OpenSIPS 3.4 LTS
  5. Миграция базы данных с версии Webitel v23.09 на v23.12
  6. Перезапуск всех сервисов после обновления до Webitel v23.12

Полная остановка всех сервисов webitel:

systemctl stop webitel-api webitel-app webitel-uac messages-bot messages-srv \
  engine call_center storage flow_manager rabbitmq-server consul \
  freeswitch ngcp-rtpengine-daemon opensips grafana-server nginx

Обновление Debian Linux и обновление приложений Webitel до v23.12.

sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list
sed -i 's/23.09-releases/23.12-releases/g;s/bullseye/bookworm/g' /etc/apt/sources.list.d/*
	
echo "deb https://deb.sipwise.com/spce/mr11.5.1 bookworm main" > /etc/apt/sources.list.d/rtpengine.list

apt update
apt upgrade --without-new-pkgs
apt full-upgrade
	
sudo -u postgres psql webitel -qxc "ALTER DATABASE webitel REFRESH COLLATION VERSION;"
sudo -u postgres psql webitel -qxc "ALTER EXTENSION timescaledb UPDATE;"
	
shutdown -r now

systemctl stop webitel-api webitel-app webitel-uac messages-bot messages-srv \
  engine call_center storage flow_manager rabbitmq-server consul \
  freeswitch ngcp-rtpengine-daemon opensips grafana-server nginx
    
apt install --reinstall linux-headers-`uname -r` \
	ngcp-rtpengine-daemon ngcp-rtpengine-iptables ngcp-rtpengine-kernel-dkms

Переход на OpenSIPS 3.4 LTS

curl https://apt.opensips.org/opensips-org.gpg -o /usr/share/keyrings/opensips-org.gpg
echo "deb [signed-by=/usr/share/keyrings/opensips-org.gpg] https://apt.opensips.org bookworm 3.4-releases" >/etc/apt/sources.list.d/opensips.list
echo "deb [signed-by=/usr/share/keyrings/opensips-org.gpg] https://apt.opensips.org bookworm cli-nightly" >/etc/apt/sources.list.d/opensips-cli.list
apt update && apt upgrade
apt install opensips-auth-modules opensips-tls-wolfssl-module

После обновления вам необходимо внести правки в конфигарационный файл:

curl https://git.webitel.com/projects/WEP/repos/opensips/raw/opensips.cfg \
    -o /etc/opensips/opensips-34.cfg
vimdiff /etc/opensips/opensips.cfg /etc/opensips/opensips-34.cfg

Если вы используете SIP TLS, то рекомендуем заменить модуль "tls_openssl.so" на "tls_wolfssl.so". Другие изменения:

Миграция базы данных с версии Webitel v23.09 на v23.12

su postgres
cd ~
psql webitel -qxc "ALTER DATABASE webitel SET timescaledb.restoring='on';"
psql -1 -f /usr/share/postgresql/15/webitel/migration/23.09-23.12.sql webitel
psql webitel -qxc "ALTER DATABASE webitel SET timescaledb.restoring='off';"
exit

Очищаем старые пакеты:

apt --purge autoremove

Перезапуск всех сервисов после обновления до Webitel v23.12

systemctl restart consul
systemctl restart postgresql
systemctl restart rabbitmq-server

systemctl restart webitel-app webitel-uac webitel-api engine \
  messages-srv flow_manager messages-bot call_center storage webitel-logger \
  freeswitch ngcp-rtpengine-daemon opensips grafana-server nginx
After update
with q as (
    select h.id, string_agg(distinct nums.from_number, '|') filter ( where  nums.from_number != '' and nums.from_number notnull ) numbers
    from call_center.cc_calls_history h
        left join call_center.cc_calls_history h2 on h2.parent_id = h.id
        left join lateral (
            select h.from_number
            union distinct
            select h.to_number
            union distinct
            select h.destination
            union distinct
            select h2.from_number
            union distinct
            select h2.to_number
            union distinct
            select h2.destination
        ) nums on true
    where h.created_at between now()::date - interval '30d' and now()
    group by 1
)
update call_center.cc_calls_history h
set search_number = q.numbers
from q
where q.id = h.id;