阿里云项目迁移:若依项目从本地迁到阿里云上
文章目录一、阿里云的概念1.1 什么是阿里云1.2 为什么要进行数据迁移1.2.1 本地部署的痛点1.2.2 上云迁移的优势二、云上架构图三、迁移步骤3.1 资源清单3.2 创建 VPC 和交换机3.3 购买 ECS2台3.4 安全组配置3.5 购买 RDS MySQL3.6 购买云 RedisTair3.7 购买 SLB3.8 购买SLS3.9 获取RDS mysql 的内网地址和Redis 的内网地址3.9.1 获取RDS mysql 的内网地址3.9.2 获取Redis 的内网地址3.10 数据迁移SQL 导入3.10.1 在RDS MySQL中先创建库和账号3.10.2 创建了数据库然后在本地终端上进行数据导出3.10.3 上传到 ECS-13.11 后端 jar 包配置与运行3.11.1 在本地虚拟机从镜像中提取 jar 包3.11.2 安装JDK 1.83.11.3 application-druid.yml文件3.11.4 application.yml 文件3.11.5 运行 jar 包3.12 前端迁移3.12.1 在本地虚拟机上找到dist文件3.12.2 上传到 ECS-1和ECS-2后解压3.12.3 在 ECS-1 和 ECS-2 上安装 Nginx3.12.4 配置 Nginx 反向代理3.13 测试高可用3.14 安装 Logtail 采集日志到 SLS3.14.1 创建弹性公网IP3.14.2 安装 Logtail3.14.3 在 SLS 控制台配置采集四、迁移过程中出现的问题一、阿里云的概念1.1 什么是阿里云阿里云Alibaba Cloud是阿里巴巴集团旗下的云计算服务平台成立于2009年是全球领先的云计算及人工智能科技公司之一。阿里云提供包括弹性计算、数据库、存储、网络、安全、大数据、人工智能等在内的全方位云服务服务范围覆盖全球200多个国家和地区。1.2 为什么要进行数据迁移1.2.1 本地部署的痛点痛点说明硬件成本高需要购买服务器、交换机、防火墙等硬件设备前期投入大运维复杂需要专业的运维团队负责服务器、网络、数据库的日常维护扩展性差业务增长时需要采购新硬件周期长、成本高高可用难保障单点故障风险高灾备方案复杂且昂贵安全防护弱需要自行应对DDoS攻击、数据泄露等安全威胁1.2.2 上云迁移的优势优势说明按量付费无需一次性投入硬件成本按需使用、按量付费高可用云平台提供SLB、RDS主备、多可用区等原生高可用能力弹性扩展支持随时升降配从容应对业务流量变化运维简化RDS、Redis等托管服务免去日常运维工作安全合规云平台提供DDoS防护、WAF、数据加密等安全能力日志服务SLS日志服务替代传统ELK免运维、低成本二、云上架构图三、迁移步骤3.1 资源清单资源名称规格内网地址/公网IPVPCruoyi-vpc10.0.0.0/16-交换机 Aruoyi-switch-a10.0.1.0/24可用区B交换机 Bruoyi-switch-b10.0.2.0/24可用区HECS-1ruoyi-ecs-012核4G CentOS 7.910.0.1.15ECS-2ruoyi-ecs-022核4G CentOS 7.910.0.2.101RDSruoyi-mysqlMySQL 5.7 2核4Grm-xxx.mysql.rds.aliyuncs.comRedisruoyi-redisRedis 6.0 1GBr-xxx.redis.rds.aliyuncs.comSLBruoyi-slb公网型 HTTP:80218.244.145.10SLSruoyi-logs-0829日志存储30天-3.2 创建 VPC 和交换机在阿里云中找到vpc进行以下操作这里是一个vpc下有两个交换机3.3 购买 ECS2台这里以一台为例购买两台2C4G的ECS第二台ECS是把交换机这一个换了3.4 安全组配置此操作是为了将两个ECS放到同一个安全组中添加规则将两个实例添加到新建的安全组中在创建vpc时会自动创建安全组自动创建的不删除3.5 购买 RDS MySQL这个只买一个就可以3.6 购买云 RedisTairredis也只要购买一个3.7 购买 SLB只买一个3.8 购买SLS开通后创建这里选择取消不接入数据3.9 获取RDS mysql 的内网地址和Redis 的内网地址3.9.1 获取RDS mysql 的内网地址在 RDS 详情页点击左侧菜单 “数据库连接” 或 “连接管理”3.9.2 获取Redis 的内网地址设置白名单3.10 数据迁移SQL 导入3.10.1 在RDS MySQL中先创建库和账号3.10.2 创建了数据库然后在本地终端上进行数据导出# 本地导出 SQLdockerexecmysql.server mysqldump-uroot-p123456\--default-character-setutf8mb4\--single-transaction\--set-gtid-purgedOFF\--no-create-db ry-vue/opt/ruoyi/sql/ry-vue-export.sql3.10.3 上传到 ECS-1在ruoyi文件里的sql找到ry-vue-export.sql将其放在电脑桌面上然后远程连接实例将数据上传到/opt目录下在左边有个文件点击文件然后双击/opt下的ruoyi目录。即可看到上传文件# 上传到 ECS-1通过 Workbench# 在 ECS-1 上导入 RDSrm-xxx.mysql.rds.aliyuncs.com是RDS MySql 的内网地址mysql-hrm-bp1064d028w406i06.mysql.rds.aliyuncs.com-uruoyi-pry-vue/root/ry-vue-export.sql# 验证mysql-hrm-xxx.mysql.rds.aliyuncs.com-uruoyi-pry-vue-eSHOW TABLES;# 结果30张表3.11 后端 jar 包配置与运行在ECS-1和ECS-2上进行3.11.1 在本地虚拟机从镜像中提取 jar 包# 从 Docker 镜像中复制 jar 包出来dockerrun--rmruoyi-admin:1.0cat/opt/ruoyi-admin.jar/tmp/ruoyi-admin.jar# 确认文件存在并将其放在桌面上ls-lh/tmp/ruoyi-admin.jar# 上传 /tmp/ruoyi-admin.jar 到 ECS-1 的 /opt3.11.2 安装JDK 1.8# 安装 JDK 1.8yuminstall-yjava-1.8.0-openjdk# 验证java-version3.11.3 application-druid.yml文件vimapplication-druid.yml# 数据源配置spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driverClassName: com.mysql.cj.jdbc.Driver druid: master: url: jdbc:mysql://RDS MySql 的内网地址:3306/ry-vue?useUnicodetruecharacterEncodingutf8zeroDateTimeBehaviorconvertToNulluseSSLtrueserverTimezoneGMT%2B8 username: ruoyi password: 你的RDS密码 slave: enabled:falseurl: username: password: initialSize:5minIdle:10maxActive:20maxWait:60000connectTimeout:30000socketTimeout:60000timeBetweenEvictionRunsMillis:60000minEvictableIdleTimeMillis:300000maxEvictableIdleTimeMillis:900000validationQuery: SELECT1FROM DUAL testWhileIdle:truetestOnBorrow:falsetestOnReturn:falsewebStatFilter: enabled:truestatViewServlet: enabled:trueallow: url-pattern: /druid/* login-username: ruoyi login-password:123456filter: stat: enabled:truelog-slow-sql:trueslow-sql-millis:1000merge-sql:truewall: config: multi-statement-allow:true3.11.4 application.yml 文件vimapplication.yml ruoyi: name: RuoYi version:3.9.1 copyrightYear:2026profile: /opt/ruoyi/uploadPath addressEnabled:falsecaptchaType: math server: port:8080servlet: context-path: / tomcat: uri-encoding: UTF-8 accept-count:1000threads: max:800min-spare:100logging: level: com.ruoyi: debug org.springframework: warn user: password: maxRetryCount:5lockTime:10spring: messages: basename: i18n/messages profiles: active: druid servlet: multipart: max-file-size: 10MB max-request-size: 20MB devtools: restart: enabled:trueredis: host: redis内网地址 port:6379database:0password: 你的Redis密码 timeout: 10s lettuce: pool: min-idle:0max-idle:8max-active:8max-wait:-1mstoken: header: Authorization secret: abcdefghijklmnopqrstuvwxyz expireTime:30mybatis: typeAliasesPackage: com.ruoyi.**.domain mapperLocations: classpath*:mapper/**/*Mapper.xml configLocation: classpath:mybatis/mybatis-config.xml pagehelper: helperDialect: mysql supportMethodsArguments:trueparams:countcountSql swagger: enabled:truepathMapping: /dev-api referer: enabled:falseallowed-domains: localhost,127.0.0.1,ruoyi.vip,www.ruoyi.vip xss: enabled:trueexcludes: /system/notice urlPatterns: /system/*,/monitor/*,/tool/*3.11.5 运行 jar 包cd/opt/ruoyi# 在ECS-1和ECS-2上运行 jar 包java-jarruoyi-admin.jar# 让后端在后台持续运行nohupjava-jarruoyi-admin.jar/opt/ruoyi/logs/ruoyi.log21curlhttp://localhost:8080# 返回欢迎使用Ruoyi后台管理框架当前版本v3.9.13.12 前端迁移3.12.1 在本地虚拟机上找到dist文件cd/path/to/ruoyi-ui# 安装依赖如果 node_modules 不存在npminstall# 打包生产环境npmrun build:prod# 压缩 distzip-rdist.zip dist/3.12.2 上传到 ECS-1和ECS-2后解压cd/opt/ruoyiunzip-odist.zipcp-rdist /usr/share/nginx/html/3.12.3 在 ECS-1 和 ECS-2 上安装 Nginxyuminstall-ynginx# 启动 Nginxsystemctl start nginx systemctlenablenginx# 验证curlhttp://localhost:803.12.4 配置 Nginx 反向代理cat/etc/nginx/conf.d/ruoyi.confEOF server { listen 80; server_name _; root /usr/share/nginx/html/dist; index index.html index.htm; location / { try_files $uri $uri/ /index.html; } location /prod-api/ { proxy_pass http://127.0.0.1:8080/; 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 X-Forwarded-Proto $scheme; } } EOF# 测试配置nginx-t# 重启 Nginxsystemctl restart nginx# 验证在浏览器访问 SLB 公网 IPhttp://218.244.145.103.13 测试高可用停止 ECS-1然后再次访问SLB 公网 http://218.244.145.103.14 安装 Logtail 采集日志到 SLS3.14.1 创建弹性公网IP在ECS实例这一块的基础信息里有一个弹性公网ip创建弹性公网ip这里需要绑定实例3.14.2 安装 Logtail# 下载安装脚本wget-T10-t2https://logtail-release-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/linux64/logtail.sh-Ologtail.sh# 安装bashlogtail.shinstallauto# 启动 Logtail/etc/init.d/ilogtaild start# 查看状态/etc/init.d/ilogtaild status3.14.3 在 SLS 控制台配置采集进入 SLS 控制台 → 选择 Project ruoyi-logs-0829把ruoyi-ecs-group作为应用机器组完成后等待一会就可以看到日志了四、迁移过程中出现的问题问题原因解决方案RDS 连接失败本地虚拟机不在 VPC 网段通过 ECS 中转导入 SQLLogtail 无法下载ECS 无公网 IP临时绑定弹性 IP装完释放RDS 白名单未配置忘记添加 ECS IP添加 10.0.1.15, 10.0.2.101

相关新闻

C#实现发那科机器人二次开发:Socket通信与点位读写实战

C#实现发那科机器人二次开发:Socket通信与点位读写实战

简介:本资源是一套面向工业自动化工程师与机器人开发者的发那科(FANUC)机器人C#二次开发实践项目,聚焦于核心数据交互能力——通过C#调用官方SDK实现机器人点位信息的实时读取与控制参数写入,适用于汽车制造、电子装配…

2026/11/13 14:56:41 阅读更多 →
Claude Code多智能体协作:终端AI编程实践指南

Claude Code多智能体协作:终端AI编程实践指南

这次我们不聊图像生成,也不聊本地大模型推理,而是看一个纯工程侧的 AI 编程工具:Anthropic 出品的 Claude Code,以及怎么基于它搭出一个小型多智能体协作流程。简单说,Claude Code 是跑在终端里的 AI 编程助手。它不是…

2026/11/9 22:04:33 阅读更多 →
基于STM32的超声波风速风向测量仪:从硬件到算法的完整工程复盘

基于STM32的超声波风速风向测量仪:从硬件到算法的完整工程复盘

简介:这是一套面向嵌入式初学者与课程设计者的STM32超声波风速风向测量仪完整开发资料,解决气象参数低成本、非接触式实时采集的技术实现问题,适用于电子设计竞赛、毕业设计及物联网传感节点开发场景。资源包共405个文件,涵盖114个…

2026/11/7 5:52:54 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/13 5:13:25 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/13 5:13:25 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/13 5:13:25 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/12 18:22:26 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/12 18:22:25 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/13 5:13:25 阅读更多 →

日新闻

周新闻

月新闻