使用【宝塔+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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

风土是如何影响葡萄酒的?

风土的概念已经伴随我们几个世纪了,它有助于我们理解葡萄酒的生长条件和影响它的质量的因素有哪些。虽然这个术语在葡萄酒中已经存在了1000多年,但在葡萄酒爱好者中仍然被误解,接下来让我们来解释一下有关风土的文化与知识吧。 来自云仓酒庄雷…

K8S的介绍和架构

仅供入门 K8S的介绍和架构 一. 什么是kubernetes二、Kubernetes架构和组件 2.1 核心组件 2.1.1 Kubernetes Master控制组件,调度管理整个系统(集群),包含如下组件: a、Kubernetes API Serverb、Kubernetes Schedulerc、Kubernet…

代码随想录笔记--二叉树篇

目录 1--递归遍历 1-1--前序遍历 1-2--中序遍历 1-3--后序遍历 2--迭代遍历 2-1--前序遍历 2-2--后序遍历 2-3--中序遍历 3--二叉树的层序遍历 4--翻转二叉树 5--对称二叉树 6--二叉树最大深度 7--二叉树的最小深度 8--完全二叉树节点的数量 9--平衡二叉树 10-…

CS420 课程笔记 P5 - 内存编辑 数据类型

文章目录 IntroductionData typesBooleansNegative numbers (Signed integers)Floating-point numbers (fractional numbers) Unknown value scansHealth findingFloat finding (Player position hack / Teleport hack) Additional things Introduction 这节课将结束数据类型并…

用Airtest快速实现手机文件读写与删除功能

1. 前言 前几天有同学留言,能不能安排“读写手机文件”的示例。我们今天就来实现这个小功能。 当然,熟悉adb的同学,看到这个需求,肯定很开心,不就是一个 adb push 和 adb pull 嘛,非常简单呀。 确实如此…

行业追踪,2023-08-31

自动复盘 2023-08-31 凡所有相,皆是虚妄。若见诸相非相,即见如来。 k 线图是最好的老师,每天持续发布板块的rps排名,追踪板块,板块来开仓,板块去清仓,丢弃自以为是的想法,板块去留让…

【数据结构】顺序表详解

当我们写完通讯录后,顺序表肯定难不倒你,跟着小张一起来学习顺序表吧! 线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表&#x…

Linux_VMware_虚拟机磁盘扩容

来源文章 :VMware教学-虚拟机扩容篇_vmware虚拟机扩容_系统免驱动的博客-CSDN博客 由于项目逐步的完善,需要搭建的中间件,软件越来越多,导致以前虚拟机配置20G的内存不够用了,又不想重新创建新的虚拟机,退…

pg_database中的datlastsysoid

一,关于 pg_database 在 PostgreSQL 中,对于在数据库集群内创建的每个数据库,其关键信息都会被保存到 pg_database 系统表中。 PostgreSQL 确保通过 pg_database 系统表持久化存储每个数据库的属性信息,以方便后续管理和使用。这也让 pg_da…

go锁--读写锁

每个锁分为读锁和写锁,写锁互斥 没有加写锁时,多个协程都可以加读锁 加了写锁时,无法加读锁,读协程排队等待 加了读锁,写锁排队等待 Mutex用来写协程之间互斥等待 读协程使用readerSem等待写锁的释放 写协程使用writer…

Android Native Code开发学习(三)对java中的对象变量进行操作

Android Native Code开发学习(三) 本教程为native code学习笔记,希望能够帮到有需要的人 我的电脑系统为ubuntu 22.04,当然windows也是可以的,区别不大 对java中的对象变量进行操作 首先我们新建一个java的类 pub…

多目标应用:基于多目标人工蜂鸟算法(MOAHA)的微电网多目标优化调度MATLAB

一、微网系统运行优化模型 参考文献: [1]李兴莘,张靖,何宇,等.基于改进粒子群算法的微电网多目标优化调度[J].电力科学与工程, 2021, 37(3):7 二、多目标人工蜂鸟算法MOAHA 多目标人工蜂鸟算法(multi-objective artificial hummingbird algorithm&…

跨数据中心Multi-Fabric解决方案:L2和L3网络的高效连接和扩展

云数据中心里,为什么需要DCI互通? 云化数据中心,网络资源通过虚拟化技术形成资源池,实现业务与物理网络解耦,通过网络虚拟化,物理网络资源可以被分成多个虚拟网络资源,从而提高网络资源的使用效…

设计模式之装饰者模式

文章目录 星巴克咖啡订单项目(咖啡馆)方案 1-解决星巴克咖啡订单项目方案 1-解决星巴克咖啡订单问题分析方案 2-解决星巴克咖啡订单(好点)方案 2-解决星巴克咖啡订单问题分析装饰者模式定义装饰者模式原理装饰者模式解决星巴克咖啡订单装饰者模式下的订单…

【LeetCode算法系列题解】第51~55题

CONTENTS LeetCode 51. N 皇后(困难)LeetCode 52. N 皇后 II(困难)LeetCode 53. 最大子序和(中等)LeetCode 54. 螺旋矩阵(中等)LeetCode 55. 跳跃游戏(中等) …

跨站请求伪造(CSRF)攻击与防御原理

跨站请求伪造(CSRF) 1.1 CSRF原理 1.1.1 基本概念 跨站请求伪造(Cross Site Request Forgery,CSRF)是一种攻击,它强制浏览器客户端用户在当前对其进行身份验证后的Web 应用程序上执行非本意操作的攻击&a…

Debian离线安装mysql

PS:虽然已经分享了很多安装各种环境订的教程,但是每个客户的环境不一样,那就得重新来一次,其实都是大同小异的,但是里面其实也是存在不少坑的,今天我们就来安装一个新的东西,Debian 11离线安装mysql,为什么…

Linux命令200例:bc是用于数学计算的高级计算器

🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌。CSDN专家博主,阿里云社区专家博主,2023年6月csdn上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师&#xff0…

单片机通用学习-​什么是寄存器?​

什么是寄存器? 寄存器是一种特殊的存储器,主要用于存储和检查微机的状态。CPU寄存器用于存储和检查CPU的状态,具体包括计算中途数据、程序因中断或子程序分支时的返回地址、计算结果为零时的负值、计算结果为零时的信息、进位值等。 由于CP…

基于Yolov5的摄像头吸烟行为检测系统(pytoch)

目录 1.数据集介绍 1.1数据集划分 1.2 通过voc_label.py生成txt 1.3 小目标定义 2.基于Yolov5的吸烟行为检测性能提升 2.1采用多尺度提升小目标检测精度 2.2 多尺度训练结果分析 2.3基于多尺度基础上加入BiFormer: 基于动态稀疏注意力构建高效金字塔网络架构 2.3.1 BiFo…