3CX V18 手动升级到 V20

说明

3CX 提供了 V20 的升级脚本。如果使用脚本升级失败,可以参考该文档进行手动升级。手动升级主要分为四个步骤:

  • Debian 10 升级到 Debian 11
  • Postgresql 11 升级到 Postgresql 13
  • Debian 11 升级到 Debian 12
  • Postgresql 13 升级到 Postgresql 15

使用脚本升级失败的用户,请跳转到对应的步骤。

如果该文档也无法提供帮助,建议使用备份文件在 V20 的新服务器上还原备份文件。

准备工作

确保 3CX 已经升级到了 V18 的最新版本。/etc/apt/sources.list 文件里只有 3CX 的两个仓库。

image-20240423152150859

如果 3CX 服务器上安装了第三方软件,比如监控软件 Zabbix 等,建议先停止。如果软件没有 Debian 11 & Debian 12 版本,请先删除。

移动工作目录到 3CX 目录

cd /var/lib/3cxpbx/

添加 Debian 10 镜像源,如果已经添加请跳过这步。也可以将镜像源换成其他的。

echo "deb http://repo.huaweicloud.com/debian/ buster main contrib" >> /etc/apt/sources.list

echo "deb http://repo.huaweicloud.com/debian/ buster-updates main contrib" >> /etc/apt/sources.list

echo "deb http://repo.huaweicloud.com/debian-security buster/updates main contrib" >> /etc/apt/sources.list

升级到 Debian 10 最新

apt update

apt -y upgrade

安装所需软件

apt -y install jq curl wget sudo apt-transport-https gpg

关闭 3CX 更新

mv /usr/sbin/3CXServicePackVersion /tmp/3CXServicePackVersion.backup

关闭 apt daily timer

systemctl stop apt-daily.timer

关闭 dphys swapfile(未安装虚拟内存可以跳过)

dphys-swapfile uninstall

systemctl disable dphys-swapfile.service

apt -y remove dphys-swapfile

制作 3CX 备份(已制作可跳过),备份文件位于 /var/lib/3cxpbx/Instance1/Data/Backups/rescueBackupUpgrade.zip

sudo -u phonesystem /usr/sbin/3CXBackupCmd --cfg=/var/lib/3cxpbx/Instance1/Bin/RestoreCmd.exe.config --log=$LOG_TCX_BACKUP --file=/var/lib/3cxpbx/Instance1/Data/Backups/rescueBackupUpgrade.zip --options=LIC,FQDN

升级到 Debian 11

停止 3CX 服务

/usr/sbin/3CXStopServices

删除 3CX

apt -y remove 3cxpbx

添加 Debian 11 镜像源

echo "deb http://repo.huaweicloud.com/debian bullseye main" > /etc/apt/sources.list

echo "deb http://repo.huaweicloud.com/debian-security/ bullseye-security main" >> /etc/apt/sources.list

echo "deb http://repo.huaweicloud.com/debian bullseye-updates main"  >> /etc/apt/sources.list

替换其他镜像源到 Debian 11

sed -i s/buster/bullseye/g /etc/apt/sources.list.d/*

升级到 Debian 11。有提示就按照提示选择,建议都保持默认设置(一路回车就可以)。

apt-get update
apt-get -y upgrade
apt-get -y dist-upgrade

升级到 Postgresql 13

安装依赖

apt install -y debconf-utils

升级数据库到 Postgresql 13(一条一条命令执行)

apt -y install postgresql-13 postgresql-client-13

pg_dropcluster --stop 13 main

systemctl stop postgresql

卸载 Postgresql 11

pg_upgradecluster 11 main

pg_dropcluster --stop 11 main

apt -y --purge remove postgresql-client-11 postgresql-11

重建数据库数据

systemctl start postgresql

sudo -u postgres reindexdb --all

升级到 Debian 12

添加 Debian 12 仓库

echo "deb http://repo.huaweicloud.com/debian bookworm main"  > /etc/apt/sources.list

echo "deb http://repo.huaweicloud.com/debian-security/ bookworm-security main"  >> /etc/apt/sources.list

echo "deb http://repo.huaweicloud.com/debian bookworm-updates main"  >> /etc/apt/sources.list

添加 3CX 仓库

echo "deb [arch=amd64 by-hash=yes signed-by=/usr/share/keyrings/3cx-archive-keyring.gpg] http://repo.3cx.com/debian/2000 bookworm main"  >> /etc/apt/sources.list

echo "deb [arch=amd64 by-hash=yes signed-by=/usr/share/keyrings/3cx-archive-keyring.gpg] http://repo.3cx.com/debian-security/2000 bookworm-security main" >> /etc/apt/sources.list

echo "deb [arch=amd64 by-hash=yes signed-by=/usr/share/keyrings/3cx-archive-keyring.gpg] http://repo.3cx.com/3cx bookworm main"   > /etc/apt/sources.list.d/3cxpbx.list

替换第三方仓库

sed -i s/bullseye/bookworm/g /etc/apt/sources.list.d/*

升级到 Debian 12。遇到弹窗建议都选择默认选项(一路按回车)。

apt update

apt -y upgrade

apt -y dist-upgrade

升级到 Postgresql 15

安装 postgresql 15

apt -y install postgresql-15 postgresql-client-15

停止数据库服务

pg_dropcluster --stop 15 main

systemctl stop postgresql

升级并删除 Postgresql 13

pg_upgradecluster 13 main

pg_dropcluster --stop 13 main

apt -y --purge remove postgresql-client-13 postgresql-13

重建数据库序列

systemctl start postgresql

sudo -u postgres reindexdb --all

重新安装 3CX

这时候我们已经把 Debian 和 Postgresql 版本都升级到目标版本了。可以安装 3CX 了。

apt update

apt -y install 3cxpbx

安装完后就可以登录 3CX 查看数据是否正常。

后续工作

但我们的工作还没完成,还差一些收尾。

执行自动清理

apt -y autoremove

开启 3CX 升级功能

mv /tmp/3CXServicePackVersion.backup /usr/sbin/3CXServicePackVersion

开启 apt daily timer

systemctl start apt-daily.timer

开启虚拟内存

apt update

apt -y install dphys-swapfile

systemctl enable dphys-swapfile.service

升级的所有流程已经完成了,重启一下服务器

reboot now