2024-11-04 20:53:17
简单记录一下自己这些年的服务器搭建历程,以及这次的服务器迁移过程和迁移后出现的问题。
迁移的原因很简单,原本的81服务器,是用的学生认证特惠买的服务器,一共支持特惠价续费三次,总计四年,服务器初次搭建大概是大一左右,大一之前我记得是用的一个免费的静态空间,只能放置静态资源网站,并且域名也是N级的子域名,刚开始玩WEB的时候,就放在上面感受代码的力量。
后来主攻WEB后端后,就开始接触服务器相关的东西了,也是在那年开始与腾讯云达成了“永恒的伙伴”成就。那时候还没了解到学生认证的特惠价格,而是用的新客收购优惠,买了一台CVM服务器,是第一次也是最后一次使用CVM服务器,当时主要还是用的tomcat容器来部署网站,虽说已经开始确定方向了,但是还是沉浸在前端之中,那时候学习了前端三剑客、JQuery、Vue等,尝试着做了一些油猴脚本,还做了一个王者荣耀充值页面,通过那个页面,可以实现1点券充值!当然,不出意外的,第二天,服务器地址就被腾讯标红了,说是危险网站。那时候还是直接用的IP地址访问,备案啥的都还不了解,做的前端页面非常的多,vscode从上到下小项目三四十个还是有的,都是想到了一个有意思的东西,就立马实现的那种,当然还有一些是帮助同学做的课设、实验项目。
在大二的时候,CVM彻底过期了,就迫切需要一个便宜的服务器来继续深入研究与实践后端技术,在整个腾讯云网站到处翻找,终于找到了学生特惠活动,在翻找的过程中,也是了解了众多云产品,比如serverless、人工智能、对象存储等。
在同年注册了这个域名,dreamcenter.top 。这个域名可不简单,是从初中一路迭代过来的,初中最开始拟定的公司名称(当时想着创立公司来着)叫做daig,具体原因记不大清楚了,只知道dai取自我的姓氏,g取自那时候暗恋的女生的姓氏。不过实际上,这个公司只是存粹的名义上的,是完完全全虚构的,没有实体,只有脑中模拟,换句话说,就是——过家家。后来高中,对时间的概念异常痴迷,包括现在的笔名亦网站名字“时光潜流”就是当时创建的,一直沿用到现在,想这个名字也不容易,毕竟要和任何人都不一样,可得好好思索一番。域名dreamcenter,译为“梦想中心”,是一个有志青年对未来的无限憧憬,虽然现在这种憧憬已然不复存在了,但是吧,梦里还是可以有的。
除了域名之外,还设计了网站logo,不过具体是什么时候设计的,我也记不大清楚了,就是现在网站的logo,非常简单的简笔画,一个小人脸,然后黑色线条用蓝绿色包围。其实——实在想不到要怎么设计了,随笔花了两下,感觉还行,就用了。那时候其实有段时间还想要注册商标的,但是看了眼价格,999,而且还不能保证注册成功,瞬间就打消了这种想法。
扯远了。让我们把时间线拉回到大二,这年,拥有了自己的长期服务器,注册了域名,进行了备案,并且创建了主页雏形,就是现在的这个主页。这个主页在设计阶段就用了好些天。参考了许许多多的版式结构,最终敲定了当前的样式,称不上多么精美,至少能看()。
就这样,这台81服务器一直续期到了明年年初,并且即将到期,趁着腾讯云双十一打折,续签了原本的备份服务器到2026年,因为81是明年年初就到期了,怕到一月开始迁移有意外发生,就提前到了上个月,作为任务指标,最终当然顺利的完成了迁移,仿佛就和没变过一样。
迁移初期。打通两个服务器通道,没有找到两台服务器组成内网的传输方式,所以对101服务器架设了ftp服务,服务分了两个文件夹,一个文件夹是匿名用户都可以访问的文件夹,一个是服务器之间的文件传输用户。打通这个通道的目的,就是为了将各种环境安装文件可以自动的传输,而无需要人工监视。之后等 notepad、mysql_8.0.23.0、jdk8u351、jre8u271、nvm、node_v14.16.0 等安装包传输完毕后,就依次进行安装。redis、arthas、nginx、gitea 服务直接拷贝了文件夹,这些不需要安装即可直接继承使用。初期还需要打通两台服务器的防火墙,两台服务器之间IP互相放开,以便后续各种数据通信。
迁移中期。开始启用各项服务,将NGINX的配置文件修改,原本的本地地址要全部切换成81服务器地址,这样nginx就相当于将所有打过来的请求全部转到81服务器运行,不影响任何业务,然后DNS解析的IP地址也全部换成101服务器的IP地址,这样,访问域名dreamcenter.top下的所有子域名,都会转到101服务器,然后101服务器再通过NGINX反向代理到81服务器,进行访问。接着是ssl自动续签下载证书的服务,这个服务不依赖于mysql数据库,所以直接运行即可,ssl文件目录保持不变,这样就不需要做任何修改,即可继续自动续签ssl证书,修改NGINX的ssl自动续签服务IP地址,回到本地地址,断掉81的ssl自动续签服务,当天晚上验证,运行正常。接着是主站点的后备服务,这个原本NGINX就配置了一个本地后备,一个101后备,现在只需要启动101的http-server后备站点,然后NGINX改掉101的地址为81地址,就相当于转置了后备服务优先级。
迁移后期。101的redis去掉MASTER,直接切换成主库。启动核心服务,包括主站点服务dreamcenter,账单微服务bill,授权微服务auth,gitea代码仓库服务,这些服务器都和mysql数据库绑定,因为数据都跑了很长时间了,做mysql主从已经没有意义,所以采用了最原始的方法,直接把81的mysql每个数据库dump下来,然后恢复到101的mysql服务器中【注:在此之前,先关掉与数据库关联的所有服务,避免期间产生数据】。接下来是启动101服务器dreamcenter服务,因为环境配置几乎完全一样,所以直接运行就顺利执行了,之后将网站静态资源全部拷贝到与81相同路径下。bill服务原本的设计有严重的代码缺陷,所以花了点时间修复了这个缺陷【通过arthas工具dump了线上的堆,发现运行过程产生了同类型的两个示例,主要是原因是static静态自动注入的问题】,修复后,直接部署到101服务器,部署的时候没有报出异常。对于gitea服务,直接拷贝了文件夹过来,数据库在此前就恢复了,不过需要先安装git,安装完后启动服务,也顺利运行,尝试推送代码,一切正常。至此主要的服务就都启动了。
不过,当然也没有一次成功。在全部迁移完成后的第二天,发现了两个问题,一个是邮件分发服务没有正常在跑,一个是账单跑失败了。
第一个邮件发送的时候报错无法连接到smtp 25端口,经过查证,是服务器提供商默认将25端口的网络通信给拦截了,需要加白名单或者换邮件服务其他端口,本来想要白名单的,结果发现开通需要RMB,所以就果断采用其他端口了,对于qq邮箱,除了25端口,还有465和587,587是smtp,465smtps,我采用了587,配置重启后,就正常生效了。
第二个账单跑失败了,主要是忘了账单加了白名单,之前的白名单是81服务器的IP地址,所以又加了101服务器IP地址,顺便把回账单的接口做了,方便后续异常时可以回账单。
至此,所有的服务都在有条不紊的正常运行啦!迁移起来还是非常轻松哒!