手动/自动部署项目

devtools/2024/10/18 9:25:15/

手动部署

部署步骤

第一步: 通过IDEA自带的Maven面板的package指令将SpringBoot项目打成jar包并自动放在target目录下

第二步: 将jar包上传到linux服务器,可以创建一个/usr/local/app目录专门存放

第三步: 执行命令启动jar包java -jar [打包好的jar包名,注意后缀],确保8080和3306端口是开放的

  • .jar.original用来给别的项目用: 是普通jar包,不包含依赖
  • .jar文件专门用来部署: 可以直接用java -jar命令执行,包含了pom中的所有依赖
  • 这种方式是采用控制台霸屏的形式运行程序,一旦终端退出就无法访问

第四步: 在浏览器访问ip地址:端口/路径

使用线上程序的好处

  • 不会采用控制台霸屏的形式运行程序而是将程序在后台运行
  • 不会将日志输出到控制台,而是输出到日志文件,方便运维查阅信息

nohup(no hang up不挂起) Command[Arg ...][&]: 用于不挂断地运行指定命令,退出终端不会影响程序的运行

  • Command: 要执行的命令
  • Arg:一些参数如可以指定输出的日志文件(相对路径和绝对路径都可以)
  • &:让命令在后台运行
# 后台运行java -jar命令,并将日志输出到hello.log文件
nohup java -jar [打包好的jar包名] &> hello.log &
nohup java -jar MyRobot-0.0.1-SNAPSHOT.jar &> MyRobot.log &# 通过杀进程的方式停止SpringBoot程序
ps -ef | grep java -jar #查看进程号
kill -9 进程号

自动部署

部署步骤

编写Shell脚本(拉取代码,编译,打包,启动),为用户授予执行Shell脚本的权限,执行Shell脚本程序

  • Linux中安装Git克隆远程仓库的项目代码到本地仓库: git clone 仓库地址(自动生成目录),这样下次拉取最新代码的时候就不用指定仓库的位置了
  • 安装Maven对项目编译,打包
  • 使用java -jar命令启动项目
#!/bin/sh
echo =================================
echo  自动化部署脚本启动
echo =================================echo 停止原来运行中的工程
APP_NAME=工程名tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; thenecho 'Stop Process...'kill -15 $tpid
fi
# 两秒后再次查询进程确保进程被杀死
sleep 2
tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; thenecho 'Kill Process!'kill -9 $tpid
elseecho 'Stop Success!'
fiecho 准备从Git仓库拉取最新代码
cd /usr/local/克隆到本地的项目所在的目录echo 开始从Git仓库拉取最新代码
git pull
echo 代码拉取完成echo 开始打包
output=`mvn clean package -Dmaven.test.skip=true`cd targetecho 启动项目
nohup java -jar 工程名-1.0-SNAPSHOT.jar &> 工程名.log &
echo 项目启动完成
#!/bin/sh
echo =================================
echo  自动化部署脚本启动
echo =================================echo 停止原来运行中的工程
APP_NAME=hm-dianpingtpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; thenecho 'Stop Process...'kill -15 $tpid
fi
# 两秒后再次查询进程确保进程被杀死
sleep 2
tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; thenecho 'Kill Process!'kill -9 $tpid
elseecho 'Stop Success!'
fiecho 准备从Git仓库拉取最新代码
cd /usr/local/dian_pingecho 开始从Git仓库拉取最新代码
git pull
echo 代码拉取完成echo 开始打包
output=`mvn clean package -Dmaven.test.skip=true`cd targetecho 启动项目
nohup java -jar hm-dianping-1.0-SNAPSHOT.jar &> hm-dianping.log &
echo 项目启动完成

为用户授予执行Shell脚本的权限然后执行Shell脚本启动项目

# 7表示rwx三个权限都有
chmod 777 bootStart.sh
# 执行Shell脚本
./bootStart.sh
# 查看进程
ps -ef | grep hm-dianping
firewall-cmd --zone=public --add-port=12001/tcp --permanent
firewall-cmd --reload
firewall-cmd --zone=public --list-ports


http://www.ppmy.cn/devtools/51013.html

相关文章

npm install 的原理

1. 执行命令发生了什么 ? 执行命令后,会将安装相关的依赖,依赖会存放在根目录的node_modules下,默认采用扁平化的方式安装,排序规则为:bin文件夹为第一个,然后是开头系列的文件夹,后…

186.二叉树:二叉搜索树中的插入操作(力扣)

代码解决 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* Tre…

Content type ‘application/x-www-form-urlencoded;charset=UTF-8‘ not supported

Content type application/x-www-form-urlencoded;charsetUTF-8 not supported 问题背景新增页面代码改造 问题背景 这里有一个需求,前端页面需要往后端传参,参数包括主表数据字段以及子表数据字段,由于主表与子表为一对多关系,在…

扩散模型Stable Diffusion

扩散模型构成 Text Encoder(CLIPText) Clip Text为文本编码器。以77 token为输入,输出为77 token 嵌入向量,每个向量有768维度。 Diffusion(UNetScheduler) 在潜在空间中逐步处理扩散信息。以文本嵌入向量和由噪声组成的起始多维数组为输入&#xff0c…

设计模式——建造者模式(生成器模式)

建造者模式(生成器模式) 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示的意图 用了建造者模式,那么用户就只需要指定需要构建的类型就可以得到它们,而具体构造的细节和过程不需要知道 概括地说,Bu…

python爬虫入门:批量下载图片

引言: 爬虫也被称为网络蜘蛛(Spider),是一种自动化的软件程序,能够在互联网上漫游,按照一定的规则和算法抓取数据。 爬虫技术广泛应用于搜索引擎、 数据挖掘 、信息提取等领域,是互联网技术的重要组成部分。 摘要: 很多初学者对于一个这样新奇的事务当然愿意去探索,…

【计算机视觉】人脸算法之图像处理基础知识(四)

图像的几何变换 图像的几何变换是指在不改变图像内容的前提下对图像的像素进行空间几何变换。主要包括图像的平移变换、镜像变换、缩放和旋转等。 1.插值算法 插值通常用来放缩图像大小,在图像处理中常见的插值算法有最邻近插值法、双线性插值法、二次立方、三次…

05 SpringBoot 配置文件详解-application.properties

Spring Boot 提供了大量的自动配置,极大地简化了spring 应用的开发过程,当用户创建了一个 Spring Boot 项目后,即使不进行任何配置,该项目也能顺利的运行起来。当然,用户也可以根据自身的需要使用配置文件修改 Spring …