花费一天时间,网站成功迁移

经过一天时间的处理,网站成功迁移到新的服务器上,原有的服务器还有几天时间就到期,新买了一台轻量服务器,服务时间为三年,2核2g配置,3兆带宽,月流量有限制。

不续费原有服务器而改为新买轻量云服务器的原因是相比传统云服务器而言轻量云服务器的带宽更大,虽然流量有限制,但是按照之前的流量使用情况来看目前的流量应该是够用的,更大的带宽意味着访问更快,体验会更好。

原来的服务器带宽是1兆,无论是前台访问还是后台上传都比较慢,1兆带宽的实际下载速度只有128kb,所以实际体验还是不太好的,特别是如果网站量大一点的话就明显有些捉襟见肘了。

这次购买的轻量云服务器费用相比之前的费用来说也不算贵,加上优惠券共775元,之前的那台云服务器总共是675元,虽然贵了差不多一百块,但是在带宽上性价比较高,如果之前的服务器要加到3兆的带宽需要多付800多块。

以下为这次网站迁移所作的一些工作,按照流程一步一步操作,需要有一定的耐心。

1.备份数据库到sql文件,通过宝塔面板自带数据库备份功能,将整个数据库备份为sql文件,文件包含数据结构跟数据本身。

2.备份静态文件(文章图片/教程文件/统计插件),整体打包成压缩包,下载下来后上传到新的服务器目录,再通过自带解压功能解压。

3.新服务器安装mysql,docker,redis,pm2,node16,java17,安装完redis后,设置redis密码,注释配置文件中绑定ip这一行代码,主要是让redis支持本地以及远程访问,允许远程访问主要用于本地调试。

 # bind 127.0.0.1 

4.在新的服务器上新建数据库,导入备份数据库文件进行恢复

5.通过docker运行nacos,为后端微服务启动做准备,指定运行内存600m,防止内存过大导致服务器内存占用过高,服务器停止服务,注意需要添加9848端口,否则会注册不正常。

 sudo docker run -m 600m -d --name nacos -p 8848:8848 -p 9848:9848 -e PREFER_HOST_MODE=hostname -e MODE=standalone  nacos/nacos-server

6.更新项目yml文件中的数据库连接地址,nacos连接地址,然后在宝塔面板中的网站目录中的java项目中选项下新建 网关,后台管理,门户三个java应用,指定端口为应用默认端口。

7.新建门户/后台管理/资源管理三个网站并绑定对应目录,门户网站的域名管理中添加新服务器ip作为域名之一,通过绑定ip+域名模式便于在未正式切换前测试,因为如果直接此时域名还未解析无法通过域名进行访问,但是可以通过ip访问。


8.后台管理网站服务需要配置nginx进行反向代理,admin.dsiab.com域名对应的网站添加反向代理配置,因为所有访问都是通过该域名,所以需要在该域名对应的网站下配置反向代理,将不同服务请求统一转发到后端网关,由网关路由到各应用服务。

admin-to-manage-service	    /manage-service	    http://127.0.0.1:8091		
admin-to-portal-service		/portal-service	    http://127.0.0.1:8091
promote-service		        /promote-service	http://127.0.0.1:8091

注意配置后需要将配置文件最后的斜杠删掉,否则会导致配置的转发无效。

location ^~/manage-service
{
    proxy_pass http://127.0.0.1:8091;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    proxy_http_version 1.1;
}

9.门户网站本身需要配置到3000端口的代理配置,因为nuxt服务端口为3000,需要映射到默认80端口,最终的效果就是访问域名的默认的80端口,请求会被转发到3000端口。

同时门户网站还需要添加后端服务反向代理配置,主要方便门户接口调用(比如统计接口),需要在配置文件中再加入转发规则:

 location /manage-service {
  proxy_pass http://localhost:8091;
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header REMOTE-HOST $remote_addr;
}

location /portal-service {
  proxy_pass http://localhost:8091;
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header REMOTE-HOST $remote_addr;
}

10.启动门户nuxt3项目,在本地nuxt项目内通过Npm run build命令得到打包后的文件.output目录后,将该目录压缩后上传到服务器,解压后进入./output/server目录,在此目录打开终端,执行一下命令可启动nuxt服务,注意提前到宝塔面板应用商店安装好pm2应用:

pm2 start index.mjs

如果需要提前验证,可通过node index.mjs就可以看到node应用是否运行正常,也可以手动输入以下命令启动服务,只不过该方式不能像pm2一样可以守护进程,一旦服务停止将不再自动重启服务。

sudo nohup node .output/server/index.mjs &

11.验证三个java服务是否正常,门户是否运行正常,资源网站是否访问正常。

12.到服务器后台管理页面,将所有服务涉及的端口都添加放行规则,这一步要特别注意,因为有可能服务已经是正常运行,但是端口未放行的话还是无法从外部进行访问。

13.将域名原a记录改成新服务器ip后等待十分钟左后再访问域名,验证网站是否访问正常,如果验证有问题需要再进行修改,此时可以先将A记录改回原有地址,等测试成功后后再切换,防止网站服务长时间无法访问。

注意:

1.在整个过程中出现过几次服务无法访问的问题,主要是nginx反向代理的两个地方容易忽略,后端代理的时候要去掉斜杠,这个应该是宝塔面板自带功能的一个小问题。

2.nuxt服务在启动过一次之后就无法正常启动,不清楚是什么原因导致,但是重新解压上传的目录再执行一次就正常。

3.所有的服务启动后内存以占用超过80%,docker中的nacos服务可能会再一段时间后被服务器暂停服务,但是路由转发功能是正常的,网站也能正常访问。如果要重新启动应用服务需要先启动nacos服务,否则会提示启动失败,提示连接nacos失败。

4.后端三个服务去掉限制内存配置,否则会导致网站再域名解析后停止服务。

5.ip2region的xdb文件需要跟后端服务jar文件放到同一个目录下,否则会提示找不到文件

6.腾讯云防火墙跟宝塔面板安全端口放行。




本文章由javascript技术分享原创和收集

发表评论 (审核通过后显示评论):