当前位置: 首页 > news >正文

使用【宝塔+docker】在云服务器上部署基于SpringBoot 和 Dubbo RPC 的项目:踩坑记录

待部署的项目包括:前端front,服务提供者backend,服务消费者gateway,注册中心nacos
服务器信息:腾讯云入门级服务器2核2G(后续有对服务器进行升级)
部署工具:前端使用宝塔部署,消费者和服务者使用打包jar的方式部署,其他后端项目使用docker部署
基于rpc框架项目的部署相对于只有一个后端程序的项目部署会要复杂很多,博主在这里踩了很多坑,耗费了很多时间,本篇博客记录下一些大大小小的坑,希望对读者有所帮助~

nacos部署

  • 在部署nacos之前需要先部署java jdk 和 maven环境
  • 先把服务器上自带的javaopenjdk全部删除
  • 按照本地环境的jdk版本下载linux的jdk,并且配置好java的环境变量
  • 直接把linux版本的nacos解压到服务器上即可,注意版本要和项目中的版本一致
  • sh startup.sh -m standalone 单机运行nacos,此时只会显示正在starting,但是不会本地一样打印出详细的启动信息,具体的启动信息在nacos/logs/start.out里面

在这里插入图片描述

  • 如果报内存不够无法启动的错误,可以调整startup.sh里面的jvm内存,具体看自己的服务器调小一点:JAVA_OPT=“${JAVA_OPT} -Xms512m -Xmx512m -Xmn256m”
  • 如果是报其他错误,可以指定一下startup.sh里面的 JAVA_HOME为刚刚装的jdk(因为宝塔在添加站点的时候会要求再装一个Tomcat和jdk)
  • 如果日志里面显示正常启动,但是无法在自己的电脑上访问nacos主页,需要检查一下application.yml里面配置的address: nacos://ip:8848是不是外网的ip,然后按照外网ip访问主页:http://外网ip:8848/nacos/。如果是顺利启动会很快访问到主页,如果一直在nacos页面上转圈加载说明肯定启动有问题,检查日志中是不是有错误

在这里插入图片描述

  • 如果显示无法访问,检查防火墙是不是开放了端口,注意有两层防火墙,一个是直接在腾讯云设置的防火墙规则,一个是服务器自己的防火墙服务。端口要开齐,9848 9849,8848等

在这里插入图片描述

提供者部署(backend)

  • 注意把application.yml中的数据库信息和nacos地址修改为服务器的外网信息
  • 把client-sdk项目中的网关地址改外外网地址,重新打包client-sdk和backend
  • 把打包好的backend jar包传到服务器上直接java -jar运行 (先确保nacos能正确启动再运行backend项目)
  • 如果有问题的话注意观察日志

在这里插入图片描述

消费者部署(gateway)

  • 修改gateway中的白名单以及interface_host,打包成jar之后传到服务器

  • 先启动naocs,再启动backend,确保正确之后启动gateway

  • 此时发现gateway一直启动错误,日志显示客户端无法连接,dubbo实例创建失败(在这一步上花了很多时间!)
    在这里插入图片描述

  • 启动gateway失败之后,我尝试关闭nacos,先ps -ef | grep nacos查看nacos的运行状态,此时显示有一条nacos项目,我便判断nacos是正常运行的,然后使用sh shutdown.sh关闭nacos,但是却显示目前没有正在运行的nacos

  • 此时我恍然大悟,重新开启nacos,再启动backend,检查到此时是可以运行sh shutdown.sh成功,说明backend启动之后nacos正常,随后启动gateway,发现此时使用sh shutdown.sh已经会提示没有运行的nacos了,说明在启动gateway的过程中,nacos挂掉了。

  • 回到宝塔面板主页,显示内存已经爆红了。我再一次尝试调整startup.sh里面的jvm内存,不过调小了之后连backend都启动不了,显然问题出在了硬件上

  • 我实在是太贫穷了,贪小便宜买了2G的服务器,加了200块钱升到了4G,里面就启动成功了

  • 果然,钱能解决大部分问题!

前端部署

  • 安装工作:
    • 在服务器上安装宝塔
    • 在宝塔上安装Tomcat(为了装java),Nginx, Mysql,docker
    • 安装完毕之后停止tomcat,在服务器防火墙中放行8888(宝塔),8080(后端项目),和 3306(数据库)
  • 宝塔部署前端:添加网站,PHP项目添加站点,在根目录下上传前端npm build 后dist目录中的所有内容
  • docker部署除了消费者和提供者之外的其他后端项目:本地maven package生成jar包,将项目传到服务器上,根据Dockerfile build后端镜像,并启动该镜像
  • 数据库准备:创建一个mysql超级用户(允许远程访问,并赋予所有权限),创建数据库和用户表
  • 域名配置:由于域名注册和备案需要一段时间,暂时用ip访问
  • 跨域配置:在站点配置文件中设置允许跨域

DockerFile

# Docker 镜像构建
FROM maven:3.5-jdk-8-alpine as builder
# Copy local code to the container image. # test
WORKDIR /app
COPY pom.xml .
COPY src ./src# Build a release artifact.
RUN mvn package -DskipTests# Run the web service on container startup.
CMD ["java","-jar","/app/target/user-center-0.0.1-SNAPSHOT.jar","--spring.profiles.active=prod"]

docker相关命令:

# 创建镜像
docker build -t user-center-frontend:v0.0.1 .  
# 显示已经安装的镜像
docker images
# 前端启动镜像
docker run -p 80:80 -d user-center-frontend:v0.0.1
# 后端启动镜像
docker run -p 8080:8080 user-center-backend:v0.0.1

相关文章:

使用【宝塔+docker】在云服务器上部署基于SpringBoot 和 Dubbo RPC 的项目:踩坑记录

待部署的项目包括:前端front,服务提供者backend,服务消费者gateway,注册中心nacos 服务器信息:腾讯云入门级服务器2核2G(后续有对服务器进行升级) 部署工具:前端使用宝塔部署&#x…...

【算法与数据结构】617、LeetCode合并二叉树

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:采用递归的方式遍历二叉树,【算法与数据结构】144、94、145LeetCode二叉树的前中后遍历&am…...

ffmpeg把RTSP流分段录制成MP4,如果能把ffmpeg.exe改成ffmpeg.dll用,那音视频开发的难度直接就降一个维度啊

比如,原来我们要用ffmpeg录一段RTSP视频流转成MP4,我们有两种方案: 方案一:可以使用以下命令将rtsp流分段存储为mp4文件 ffmpeg -i rtsp://example.com/stream -vcodec copy -acodec aac -f segment -segment_time 3600 -reset_t…...

朝夕光年游戏自动化测试实践

朝夕光年是面向全球用户与开发者的游戏研发与发行业务品牌,致力于服务全球玩家,帮助玩家在令人惊叹的虚拟世界中一起玩耍与创造。 在游戏的研发过程中,游戏自动化一直是开展难度较大的工程,具体包括机房机架、设备调度、软件框架、…...

数据结构基本概念

一、数据 数据对象-数据元素-数据项(属性),前者由后者组成 二、数据结构 定义:按某种关系的数据元素的集合 三、数据类型 1、原子类型(例如整型) 2、结构类型(由原子类型组成,例如数组) 3、…...

【javaweb】学习日记Day9 - Mybatis 基础操作

目录 一、删除 (1)在mapper接口执行sql删除语句 ① 注解后sql语句没有提示怎么办? (2)测试层 (3)开启mybatis日志 (4)预编译SQL 二、新增 (1&#…...

Mybatis学习|Mybatis缓存:一级缓存、二级缓存

Mybatis缓存 MyBatis包含一个非常强大的查询缓存特性,它可以非常方便地定制和配置缓存。缓存可以极大的提升查询效率。 MyBatis系统中默认定义了两级缓存:一级缓存和二级缓存 默认情况下,只有一级缓存开启。(SqlSession级别的缓存,也称为本地…...

230903文本docx

处理文本 块级项目,每次文本超出右边界时都会添加一行.对段落,边界一般是页边距,但如果按列布局页,则也可是列边界,如果表格单元格内有段,则也可是单元格边界. 块级项属性指定其在页上的位置,如缩进项及段落前后间距.内联项属性一般指定显示内容的如字样,字体大小,粗体和斜体…...

Mysql-DML(数据处理语言)

-- 插入数据 insert into member values(1,张三,21,5000); insert into member(id,name) values(2,李四); insert into member values(3,王五,23,3000) ,(4,纪六,24,4000) ,(5,查七,25,5000); -- 更新(修改数据) 不加限制条件 该字段全部修改 update member set age…...

部署项目至服务器

安装conda https://zhuanlan.zhihu.com/p/489499097 个人租借的服务器如何进行端口的开放呢? 防火墙设置: 添加规则设置: 即可; 通常下租借的服务器没有防火墙设置 相关链接: https://blog.csdn.net/weixin_4520…...

OSI与TCP IP各层的结构与功能,都有哪些协议

分析&回答 OSI七层模型 层功能TCP/IP协议族应用层文件传输,电子邮件,文件服务,虚拟终端TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet表示层数据格式化,代码转换…...

【2023年11月第四版教材】第10章《进度管理》(第三部分)

第10章《进度管理》(第三部分) 7 估算活动持续时间7.1 估算活动持续时间7.2 类比估算★★★7.3 参数估算★★★7.4 三点估算★★★7.5 数据分析★★★ 7 估算活动持续时间 组过程输入工具和技术输出计划4,估算活动持续时间1.项目管理计划(进…...

【Vuex状态管理】Vuex的基本使用;核心概念State、Getters、Mutations、Actions、Modules的基本使用

目录 1_应用状态管理1.1_状态管理1.2_复杂的状态管理1.3_Vuex的状态管理 2_Vuex的基本使用2.1_安装2.2_创建Store2.3_组件中使用store 3_核心概念State3.1_单一状态树3.2_组件获取状态3.3_在setup中使用mapState 4_核心概念Getters4.1_getters的基本使用4.2_getters第二个参数4…...

Linux centos7 bash编程(循环与条件判断)

在编程训练中,循环结构与条件判断十分重要。 根据条件为真为假确定是否执行循环。 有时,根据条件的真假结果,决定执行哪些语句,这就是分支语句。 为了训练分支语句与循环语句,我们设计一个案例: 求一组…...

设计模式-6--装饰者模式(Decorator Pattern)

一、什么是装饰者模式(Decorator Pattern) 装饰者模式(Decorator Pattern)是一种结构型设计模式,它允许你在不修改现有对象的情况下,动态地将新功能附加到对象上。这种模式通过创建一个包装类,…...

质量属性案例-架构真题(二十一)

试题一 某电子商务公司升级会员与促销管理系统,向用户提交个性化服务,提高用户粘性。在项目建立之初,公司领导人一致认为目标是提升会员管理方式的灵活性,由于当前用户规模不大,用户简单,系统方面不需要做…...

nacos Error to process server push response

nacos2.0.3报错&#xff1a; Error to process server push response 解决办法&#xff1a; 排查项目当中有没有直接或间接依赖reflections&#xff1a; <dependency><groupId>org.reflections</groupId><artifactId>reflections</artifactId>…...

神经网络NLP基础 循环神经网络 LSTM

用的时候&#xff0c;只关心token的输入&#xff0c;以及hidden state就好了 sequence的length是多少&#xff0c;lstm的cell的数量就是多少 LSTM BI-LSTM stacked lstm GRU 实现...

Oracle数据传输加密方法

服务器端“dbhome_1\NETWORK\ADMIN\”sqlnet.ora文件中添加 SQLNET.ENCRYPTION_SERVER requested SQLNET.ENCRYPTION_TYPES_SERVER (RC4_256) 添加后新的链接即刻生效&#xff0c;服务器无需重新启动。 也可以通过Net manager管理工具添加 各个参数含义如下&#xff1a; 是…...

Android列表片段

下面创建第二个片段WorkoutFragment&#xff0c;它包含不同训练项目构成的一个列表&#xff0c;用户可以从这个列表中选择训练项目。 列表视图是只包含一个列表的片段 列表片段是一种专门处理列表的片段&#xff0c;它会自动绑定到一个列表视图&#xff0c;所以不需要另外创建…...

新手如何借助快马平台AI生成代码,轻松入门蓝桥杯经典题型

作为一个刚接触编程的新手&#xff0c;参加蓝桥杯这样的比赛可能会觉得无从下手。特别是看到题目要求实现算法时&#xff0c;往往不知道如何把问题拆解成代码。最近我发现用InsCode(快马)平台可以很好地解决这个问题&#xff0c;它能根据题目描述直接生成可运行的代码&#xff…...

Phi-3-mini-4k-instruct-gguf多场景落地:跨境电商多语言商品描述批量生成

Phi-3-mini-4k-instruct-gguf多场景落地&#xff1a;跨境电商多语言商品描述批量生成 1. 跨境电商的痛点与解决方案 跨境电商卖家每天面临的最大挑战之一&#xff0c;就是为同一款商品准备不同语言版本的描述。传统做法要么需要雇佣多语种文案人员&#xff0c;要么使用机械的…...

GLM-4.6V-Flash-WEB新手入门:从镜像加速到网页推理实战

GLM-4.6V-Flash-WEB新手入门&#xff1a;从镜像加速到网页推理实战 1. 为什么选择GLM-4.6V-Flash-WEB 智谱AI最新开源的GLM-4.6V-Flash-WEB是一款专为实际业务场景优化的多模态视觉大模型。它结合了视觉理解和语言生成能力&#xff0c;特别适合需要快速部署的Web应用场景。 …...

千问3.5-2B在办公提效场景:会议白板照片文字提取+要点总结实战

千问3.5-2B在办公提效场景&#xff1a;会议白板照片文字提取要点总结实战 1. 办公场景的痛点与解决方案 1.1 会议记录的传统困境 每次开完会&#xff0c;最让人头疼的就是整理会议记录了。特别是那些在白板上写满讨论要点的会议&#xff0c;你需要&#xff1a; 对着白板照片…...

基于AI政策路径与通胀预期模型的美联储决策分析:鲍威尔观望信号引发加息预期归零

摘要&#xff1a;本文通过构建AI政策路径预测模型&#xff0c;结合通胀预期识别系统、能源价格传导算法与劳动力市场评估框架&#xff0c;对美联储在当前环境下的利率决策逻辑进行分析&#xff0c;重点解析“观望策略”背后的模型依据及市场加息预期快速回落的原因。一、AI政策…...

【QT】-- QT操作数据库

前言&#xff1a; Qt是C一个开发框架&#xff0c;具有跨平台特性。这篇是作者大二学习的时候做的笔记&#xff0c;有可能有错误&#xff0c;请各位批评指正。这篇记录QT操作数据库。欢迎大家收藏 关注&#xff0c;作者将会持续更新。 文章目录Qt 操作数据库QSqlDatabase数据库…...

别再手动画封装了!用嘉立创EDA免费库5分钟搞定Altium Designer缺失的器件

5分钟极速救援&#xff1a;用嘉立创EDA破解Altium Designer封装缺失难题 深夜11点&#xff0c;李工盯着屏幕上闪烁的光标和半成品的PCB布局图&#xff0c;额头渗出细密的汗珠。项目交付截止前48小时&#xff0c;团队突然发现Altium Designer官方库中缺少关键芯片TPS5430DDAR的封…...

知乎上线求职工具,助力毕业生破困局

知乎上线求职利器&#xff0c;直击毕业生痛点2026届全国普通高校毕业生预计达1270万人&#xff0c;再创历史新高。与此同时&#xff0c;AI技术加速行业重构&#xff0c;部分传统岗位需求收缩&#xff0c;大量毕业生陷入“海投”困境&#xff0c;难以精准定位自身。在此背景下&a…...

Clawdbot惊艳效果:Qwen3-32B在医疗问诊摘要与术语标准化输出实测

Clawdbot惊艳效果&#xff1a;Qwen3-32B在医疗问诊摘要与术语标准化输出实测 1. 测试背景与平台介绍 Clawdbot是一个统一的AI代理网关与管理平台&#xff0c;为开发者提供直观的界面来构建、部署和监控自主AI代理。这个平台集成了聊天界面、多模型支持和强大的扩展系统&#…...

期权到期日别慌!手把手教你搞定上交所股票期权的行权与交割(附避坑清单)

期权到期日实战指南&#xff1a;从行权准备到交割避坑全流程解析 手机屏幕上的红色倒计时提醒着期权合约即将到期&#xff0c;作为刚接触期权交易不久的新手&#xff0c;此刻最需要的不再是复杂的概念解释&#xff0c;而是一份能握在手中的应急操作清单。本文将用最直白的语言拆…...