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

news2024/11/26 9:57:11

待部署的项目包括:前端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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/977045.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【python】logging报错KeyError: ‘formatters‘

报错 Traceback (most recent call last):File "E:\Python\lib\runpy.py", line 194, in _run_module_as_main return _run_code(code, main_globals, None, File &qu…

免费电脑清理工具:清除垃圾文件,提升性能表现

当电脑使用一段时间后,许多已安装的应用程序、文件或其他项目会在硬盘上积累起来。这会导致电脑运行速度变慢,或Windows提示你硬盘空间不足。在这个时候,你需要使用电脑清理工具来清理电脑。 电脑清理软件为用户提供了一种简单的方法…

【计组】2.3浮点数表示和运算

一、浮点数的表示 浮点数尾数的规格化 注:进行左规和右规仅移动数值位符号位不变 解释:尾数的最高数值位必须是一个有效位即算术意义上的1 规格化应用(与双符号位结合) 规格化浮点数的特点: 其中首位为符号位&#…

Linux之autofs自动挂载服务

目录 Linux之autofs自动挂载服务 产生原因 安装 配置文件分析 文件路径 作用 etc/auto.master文件内容格式 挂载参数 案例 案例1 --- 服务器创建共享目录,客户端实现自动挂载 案例2 --- 自动挂载光盘 Linux之autofs自动挂载服务 产生原因 在一般NFS文件系…

算法训练营day42|动态规划 part04(01背包问题基础(两种解决方案)、416.分割等和子集)

文章目录 01背包----二维dp数组01背包----滚动数组416.分割等和子集思路分析背包解法思考总结 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最…

第三方软件检测机构资质要求有哪些?专业测试报告如何申请?

科技信息的快速发展使得人们对于软件产品极度依赖,因此要想保障产品质量,测试必不可少。作为一家合格的软件检测机构,应当严格遵守相关资质要求,保证测试报告的专业性和可信度。 一、第三方软件检测机构需要具备的资质 1. 认证资…

Allegro如何通过当前PCB查看env的路径操作指导

Allegro如何通过当前PCB查看env的路径操作指导 在用Allegro做PCB设计的之前,所有的快捷键都需要定义到ENV文件中。在添加env文件之前需要找到env文件的路径,如下图 不同机器定义env路径是不一样的 下面介绍如何找到env路径,具体操作如下 点击Tools选择Utlities

巨额亏损,股价遭受重创,Polestar极星汽车已陷入困境

来源:猛兽财经 作者:猛兽财经 8月31日,由吉利汽车(00175)和沃尔沃汽车合资创建的瑞典电动汽车公司Polestar极星汽车(PSNY)公布了2023年第二季度财报。 这家电动汽车公司在去年通过SPAC上市后&am…

2023开学礼《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书南京财经大学图书馆

2023开学礼《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书南京财经大学图书馆

026:vue中el-progress逆向倒计时方式显示

第026个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下,本专栏提供行之有效的源代码示例和信息点介绍,做到灵活运用。 (1)提供vue2的一些基本操作:安装、引用,模板使…

【NKeditor】富文本编辑器上传图片

目录 目的: 效果 实现方法: 1、下载NKeditor插件库 2、部署 3、实现 4、自定义工具栏 目的: 使用NKeditor富文本编辑器上传图片,同时上传到七牛云存储上。后端语言使用ThinkPHP。 效果 实现方法: 1、下载NKe…

【构造】CF Edu 12 D

Problem - D - Codeforces 题意: 思路: 这种题一定要从小数据入手,不然很有可能走歪思路 先考虑n 1的情况,直接输出即可 然后是n 2的情况,如果相加是质数,就输出2个,否则就输出一个 然后…

使用 【jacoco】对基于 SpringBoot 和 Dubbo RPC 的项目生成测试覆盖率报告:实践+原理

基于 Dubbo RPC 的项目中有一个提供者项目backend、一个消费者项目gateway、以及注册中心nacos。本篇文章记录在windows本地对该框架的测试过程,以及介绍jacoco的基本原理 测试过程 官网下载安装包解压到本地,https://www.jacoco.org/jacoco/ 只需要用…

Bootstrap的标题类(标题样式h1~h6)

Bootstrap 的标题字体大小通常遵循以下样式规则: h1 标题的字体大小为 2.5rem(40像素)。h2 标题的字体大小为 2rem(32像素)。h3 标题的字体大小为 1.75rem(28像素)。h4 标题的字体大小为 1.5re…

《Python魔法大冒险》008 石像怪的挑战:运算符之旅

小鱼和魔法师继续深入魔法森林。不久,他们来到了一个巨大的魔法石圈旁边。石圈中心有一个闪闪发光的魔法水晶,周围则是一些神秘的符号。但令人意外的是,水晶的旁边还有一个巨大的石像怪,它的眼睛散发着红色的光芒,似乎…

CentOS 安装蒲公英

官方教程链接: https://service.oray.com/question/5063.html 教程使用的是2.3版本,官网下载的最新版是2.4,所以命令会有所不同 安装成功后, 任意路径下执行pgyvisitor,调出交互界面pgyvisitor login,登录…

智汇云舟亮相2023服贸会,全面展示视频孪生技术与产品

9月2日-6日,为期5天的2023年中国国际服务贸易交易会(以下简称:服贸会)在北京首钢园举办。在电信、计算机和信息服务专题展馆中,智汇云舟有幸作为北京市专精特新和数字孪生企业优秀代表受邀参展,并携视频孪生…

【C语言】——调试技巧

目录 ​编辑 ①前言 1.什么是Bug? 2.什么是调试? 2.1调试的基本步骤 2.2Release与Debug 3.常用快捷键 4.如何写出好的代码 4.1常见的coding技巧 👉assert() 👉const() const修饰指针: ①前言 调试是每个程序员都…

计及电池储能寿命损耗的微电网经济调度(matlab代码)

目录 1 主要内容 2 部分代码 3 程序结果 4 下载链接 1 主要内容 该程序参考文献《考虑寿命损耗的微网电池储能容量优化配置》模型,以购售电成本、燃料成本和储能寿命损耗成本三者之和为目标函数,创新考虑储能寿命损耗约束、放电深度约束和储能循环次…

光电耦合器市场在预测期内预计将以8.99%的复合年增长率增长!

光耦合器是一种用于传输光信号的电子器件。它具有以下特性: 1. 传输性能:光耦合器能够实现光电转化和信号传输,具有良好的传输性能和抗干扰能力,可以避免外部环境的干扰。 2. 隔离性能:光耦合器能够实现电路之间的隔…