说明
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 的两个仓库。
如果 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