打包部署相关

打包部署

手动部署

Window下测试

SpringBoot-Maven打包

SpringBoot打包工具,Maven认打的jar包不能直接运行

演示:没有使用SpringBoot打包工具,使用Maven原生打包

shop_product_maven_pak

打成的jar包很小【64k】,在CMD命令行运行测试

java -jar shop_product-1.0-SNAPSHOT.jar

不能运行,显示没有主清单属性

shop_product_maven_notFoundMain

可以讲这个jar包复制到桌面解压,查看meta-inf,定位Created-By可得知该jar包由Maven创建

shop_product_maven_createByMaven

在测试模块【此处为shop_product】pom.xml中加入SpringBoot打包工具配置

	<build>
		<finalName>shop_product</finalName>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

说明:buildfinalName标签定义了编译、打包、部署的项目名称

再次打包,会发现有两个jar包,shop_product.jar.original是Maven原生打的【就是之前的shop_product-1.0-SNAPSHOT.jar】,SpringBoot打包工具会对原始jar包重命名,在其基础上生成的shop_product.jar,该jar包包含完整依赖,可以独立运行【容量也增了不少,约75M】。

结果:

shop_product_springboot_pak

CMD再次运行测试,启动正常:

java -jar shop_product.jar

shop_product_windowsRun

确认:将shop_product.jar复制了桌面解压,查看meta-inf

说明:

JVM通过Main-Classs的JarLauncher【SpringBoot提供的jar包启动器】找到服务启动类Start-Class: com.atguigu.ProductApplication
Spring-Boot-Classes:SpringBoot源文件路径。

shop_product_springboot_info

Linux下测试

此处用的连接工具是FinalShell

未安装虚拟机可执行:

yum install -y java-1.8.0-openjdk-devel.x86_64
java -version

看到Jdk版本信息表示安装成功

openjdk version "1.8.0_342"
OpenJDK Runtime Environment (build 1.8.0_342-b07)
OpenJDK 64-Bit Server VM (build 25.342-b07, mixed mode)

基于bash命令

将shop_product.jar上传到服务器,执行java -jar shop_product.jar运行

shop_product_linux_frontRun

**问题:**当前是前台启动,不是常驻进程,输入Ctrl+C---->服务退出

**优化:**改为后台启动---->Linux的后台启动

可使用nohup java -jar xxx &,xxx代表我们需要启动的微服务

nohup java -jar shop_product.jar &

shop_product_linux_nohupRun

说明:

nohup—>no hang up:不挂起,当前进程不会接收任何输入,之前输入Ctrl+C服务退出了是因为接收了标准输入,此外还会把服务运行的输入信息追加到nohup.out文件中,可以执行tail -10f nohup.out查看最后10行信息
&:表示后台启动

关闭后台启动

第一步获取shop_product.jar相关的进程信息

ps -ef | grep shop_product.jar

此时显示有两个,第一个是java进程,第二个是grep搜索进程

root      41775  24702 22 07:35 pts/3    00:01:08 java -jar shop_product.jar
root      47771 102240  0 07:40 pts/0    00:00:00 grep --color=auto shop_product.jar

说明

ps -ef,ps:查看服务器的进程信息
选项:
-e:等价于 -A,表示列出全部的进程
-f:显示全部的列

第二步:过滤grep显示的进程信息,|后面添加grep -v grep

ps -ef | grep shop_product.jar | grep -v grep

显示java进程

root      41775  24702 10 07:35 pts/3    00:01:14 java -jar shop_product.jar

第三步获取shop_product.jar服务的进程号

ps -ef | grep shop_product.jar | grep -v  grep | awk '{print $2}'

关闭shop_product.jar服务:

ps -ef | grep shop_product.jar | grep -v  grep | awk '{print $2}' | xargs kill -9

基于shell脚本

第一步

每次执行很长的指令太麻烦了,可以封装成脚本,服务名动态传入

新建kill.sh

#!/bin/bash

ps -ef | grep $1 | grep -v  grep | awk '{print $2}' | xargs kill -9

$1代表第一个参数,此处指定为服务名

修改脚本权限:

chmod u+x kill.sh 

创建logs文件夹,存放日志信息
后台启动,将日志信息输出到logs文件夹下的test.log

nohup java -jar shop_product.jar > logs/test.log 2>&1 &

调用kill.sh脚本关闭shop_product.jar

 ./kill.sh shop_product.jar
[root@localhost java_jar]# ./kill.sh shop_product.jar
已杀死

第二步:将启动和停止服务封装成一个shell脚本,新建jar_opt.sh

#!/bin/bash

start_service() {
    nohup java -jar $1 > $2 2>&1 &
}

stop_service() {
    ps -ef | grep $1 | grep -v  grep | awk '{print $2}' | xargs kill -9
}

case $1 in
"start")
    start_service $2 $3
;;
"stop")
    stop_service $2
;;

esac

启动服务:

./jar_opt.sh start shop_product.jar logs/test.log 

停止服务:

./jar_opt.sh stop shop_product.jar 

自动部署待完善…

相关文章

显卡天梯图2024最新版,显卡是电脑进行图形处理的重要设备,...
初始化电脑时出现问题怎么办,可以使用win系统的安装介质,连...
todesk远程开机怎么设置,两台电脑要在同一局域网内,然后需...
油猴谷歌插件怎么安装,可以通过谷歌应用商店进行安装,需要...
虚拟内存这个名词想必很多人都听说过,我们在使用电脑的时候...