记一次服务器系统迁移

记一次服务器系统迁移

2024年03月23日 阅读:14 字数:1220 阅读时长:3 分钟

由于服务器CentOS 7的gcc版本太低,无法安装高版本的Nodejs、npm依赖,所以重新安装基于CentOS Stream 8的OpenCloudOS。

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(后面有个坑)。

d31e4235117225c9.png

2.3. 宝塔一键迁移

宝塔软件商店里面有一键迁移工具,接收数据地址可以写新服务器的内网地址。

660f0b927522f76f.png

2.4. 制作镜像

新服务器迁移完成后,我通过修改hosts文件的方法,验证新服务器上运行的应用。

验证修复问题后,基于新服务器创建一个镜像。

2.5. 重装系统

确认数据都备份完成后,把旧服务器重装系统,镜像选择刚刚基于新服务器创建的自定义镜像。

2da1d780b6aafaba.png

重装完,像新服务器一样运行正常没啥问题~

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。

总结:数据很重要,记得备份!

推荐阅读

恰饭区

评论区 (0)

0/500

还没有评论,快来抢第一吧