首页 > 系统相关 >Linux--部署SpringBoot应用

Linux--部署SpringBoot应用

时间:2022-09-02 23:37:14浏览次数:75  
标签:grep SpringBoot tpid -- jar helloworld echo Linux

打包SpringBoot项目

部署方式一:手动部署

1、将打包好的jar包上传到Linux服务器中

mkdir -p /opt/java62/app

2、前台启动SpringBoot应用

编译jar包:java -jar helloworld-1.0-SNAPSHOT.jar

使用浏览器进行访问:http://192.168.138.100/hello

缺点:启动SpringBoot项目后会占用一个窗口,一旦窗口关闭,则这个SpringBoot项目对应的进程就会被杀掉,外部就无法访问了

3、后台启动SpringBoot应用

3.1 利用nohup后台启动:nohup java -jar helloworld-1.0-SNAPSHOT.jar &> hello.log &

nohup命令:英文全称 no hang up(不挂起),用于不挂断地运行指定命令,退出终端不会影响程序的运行
语法格式: nohup Command [ Arg … ] [&]
参数说明:
​ Command:要执行的命令
​ Arg:一些参数,可以指定输出文件
​ &:让命令在后台运行
举例:
​ nohup java -jar boot工程.jar &> hello.log &
​ 上述指令的含义为: 后台运行 java -jar 命令,并将日志输出到hello.log文件

3.2 监控日志:tail -f hello.log

3.3 浏览器访问:http://192.168.138.100/hello

关闭窗口后,因为是后台运行,所以不会停止springboot应用,依旧可以对外提供访问

部署方式二:自动部署

1、Linux克隆项目

进入到要克隆的目录路径下:cd /opt/java62

2、上传shell脚本

上传 shell 脚本到 /opt/java62 目录下(即与项目放在同一个目录中)

shell是linux中的一种开发语言,以sh为后缀名

#!/bin/sh
echo =================================
echo  自动化部署脚本启动
echo =================================

echo 停止原来运行中的工程
# APP_NAME 项目的名称(===========需要修改===========)
APP_NAME=helloworld

tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
    echo '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} ]; then
    echo 'Kill Process!'
    kill -9 $tpid
else
    echo 'Stop Success!'
fi

echo 准备从Git仓库拉取最新代码
# /opt/java62/helloworld 仓库名称 地址码云拉项目的文件夹(===========需要修改===========)
cd /opt/java62/helloworld

echo 开始从Git仓库拉取最新代码
git pull
echo 代码拉取完成

echo 开始打包
output=`mvn clean package -Dmaven.test.skip=true`

cd target

echo 启动项目
# jar包的名称(===========需要修改===========)
nohup java -jar helloworld-1.0-SNAPSHOT.jar  &> helloworld.log &
echo 项目启动完成
3、授权shell脚本

chmod 777 bootStart.sh 为所有的用户都授权 读写执行 的权限

第一个7:表示授予当前用户对文件权限
第二个7:表示授予当前用户同组内的用户对文件权限
第三个7:表示授予其他用户对文件权限

4、执行shell脚本

./bootStart.sh

自此本地更新代码,上传到git,服务器自动执行shell脚本,拉取代码,运行应用。

标签:grep,SpringBoot,tpid,--,jar,helloworld,echo,Linux
From: https://www.cnblogs.com/cxy-lxl/p/16651613.html

相关文章

  • 类和对象-运算符重载
    运算符重载运算符重载概念:对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型4.5.1加号运算符重载作用:实现两个自定义数据类型相加的运算  成员函......
  • docker-compose 启动一个MySQL测试数据库
    services:mysql:image:mysql:5.7ports:-"3306:3306"expose:-"3306"environment:-MYSQL_USER=test-MYSQL_PASSWO......
  • Linux性能监测的查看
    监控进程使用情况查看方法:登录linux服务器输入对应的命令查看使用情况根据使用情况进行对应的调整登录linux服务器的方法:直接通过物理机登录:将键盘、鼠标、显示......
  • 放大镜
    代码实现:js实现放大镜js模块代码实现varobj={$:function(name){returndocument.querySelector(name);},init:function(){this.small_pic=this.$(".small......
  • ES6 关键字 let 和 ES5 及以前关键字 var 的区别
    var在ES5及以前,通过var在块级作用域中声明的变量,外边也可以访问。块级作用域就是一对{}的作用域;块级作用域可以是控制语句的作用域,也就是非函数的作用域。functionf()......
  • 算法题练习,Solo和koko分糖 ,整数拆分, Cookies 分饼干
    目录1.CandySolo和koko分糖2.整数拆分3=1+1+13=1+23=33.Cookies分饼干1.CandySolo和koko分糖如果可以分给弟弟,必定满足全部异或为0,找出最小的一个给弟弟......
  • Typescript类型体操 - First of Array
    题目中文实现一个通用First<T>,它接受一个数组T并返回它的第一个元素的类型。例如:typearr1=['a','b','c']typearr2=[3,2,1]typehead1=First<arr1>//e......
  • 6-1 简单输出整数——10分
    本题要求实现一个函数,对给定的正整数N,打印从1到N的全部正整数。函数接口定义:voidPrintN(intN);其中N是用户传入的参数。该函数必须将从1到N的全部正整数顺序打印......
  • "蔚来杯"2022牛客暑期多校训练营6
    A.Array给定\(\geqslant2\)的整数\(a_1,a_2,...,a_n\),满足\(\sum\limits_{i=1}^n\frac{1}{a_i}\leqslant\frac{1}{2}\),构造一个循环数列,使得其任意长度为\(a_i\)的子区......
  • Typescript类型体操 - Length of Tuple
    题目中文创建一个通用的Length,接受一个readonly的数组,返回这个数组的长度。例如:typetesla=['tesla','model3','modelX','modelY']typespaceX=['FALCON9'......