1. 背景
gcc版本太低,无法安装18+高版本的nodejs或npm依赖。之前的waline也是因为这个无法安装node-sqlite,而且新项目需要用到18.19.1版本的Node.js,虽然可以指定高版本的gcc来编译安装,但是太麻烦了。
从2020年买服务器后就开始捣鼓各种东西,导致环境有些问题。
CentOS 7停止维护了。
2. 迁移方案
腾讯云提供的一键迁移脚本不能迁移到CentOS Stream 8及以上版本的系统,所以想着重装新系统,毕竟重装解决99%的问题 🐶。
- 备份所有文件、数据、配置,重装系统后重新搭建:这个方案耗时很长,可能会有遗漏
- 使用宝塔一键迁移到一台新服务器,等旧服务器重装完成再安装宝塔一键迁移回来:这个方案耗时一般,2次迁移要看新、旧服务器的带宽
- 使用宝塔一键迁移到一台新服务器,基于新服务器制作一个镜像,旧服务器重装这个自定义镜像:耗时更少,因为相较上一个方案少了一次迁移,而且不用看新服务器的带宽
方案2、3适用于使用宝塔Linux面板的,最终决定用方案3。
2.1. 数据备份
数据无价,虽然迁移到新服务器对旧的没影响,而且旧服务器在重装前一直存在,可以在新服务器验证没问题后制作镜像再重装,但我还是把数据库和网站都备份到COS。
顺便制作了硬盘快照和镜像,因为新旧系统不一样单快照可能恢复不了。
2.2. 新购服务器
尽量选择同一地域的服务器,因为可以内网通信,配置不用很高能存放运行旧的所有项目就行,我就买最低配的,虽然后面可以退款。
系统镜像选择CentOS 8或以上系统,我选了OpenCloudOS(后面有个坑)。
2.3. 宝塔一键迁移
宝塔软件商店里面有一键迁移工具,接收数据地址可以写新服务器的内网地址。
2.4. 制作镜像
新服务器迁移完成后,我通过修改hosts文件的方法,验证新服务器上运行的应用。
验证修复问题后,基于新服务器创建一个镜像。
2.5. 重装系统
确认数据都备份完成后,把旧服务器重装系统,镜像选择刚刚基于新服务器创建的自定义镜像。
重装完,像新服务器一样运行正常没啥问题~
2.6. 退还新服务器
旧服务器重装系统后验证没问题记得在3天内退还新服务器,这样不会被扣费。
而且退还的服务器在7天后才会销毁,这也算是一层保护吧。
3. 注意事项
3.1. mongodb迁移
1、无法在OpenCloudOS的宝塔应用商店上安装MongoDB:
点击安装会提示“服务器系统版本不在兼容范围”,这就是上网所说的坑,但是OpenCloudOS完全与CentOS 8兼容。
查看安装脚本发现有做系统版本判断,但是无法通过修改此脚本以达到跳过判断,因为每次点击软件商店的安装按钮都会重新下载该脚本覆盖;直接运行此脚本,后面的流程无法执行。
所以只能通过修改/etc/redhat-release里面的系统版本来欺骗这就是CentOS 8。
2、mongodb数据库无法通过宝塔迁移工具迁移:
在新服务器验证阶段发现,于是在旧服务器手动导出再导入新的
3.2. mysql迁移
数据库名称不能大写。我的博客在2019年建站时,没按规范把数据库命名成Timeless,后面一直没改,导致宝塔迁移到新服务器时变成小写且数据丢失了。
也是手动导出,修改数据库名称后重新导入。
3.3. Node.js版本管理器
pm2版本管理器已经废弃,需要在网站中添加Node项目。
添加Node项目后启动失败,可以尝试设置项目日志的日志路径来解决。
4. 写在最后
本次服务器系统迁移总耗时约3小时,主要花在旧服务器用宝塔迁移到新的,以及验证修复工作,费用0元(不知道企鹅云会咋想🤣)。
因旧服务器重装系统导致服务停止约15分钟,不过对于我们这种小站来说感觉还好,毕竟咱也没有冗余备份也没上Docker。
总结:数据很重要,记得备份!
还没有评论,快来抢第一吧