Spring Boot部署之Web项目jar包形式
上篇Spring Boot部署之 web项目war包形式介绍了war包形式的部署,本文介绍jar形式运行。jar形式相对简单,相对复杂的内容是如何将其注册为Linux服务。
一、打jar包
1、修改pom.xml配置
2、执行package(对于module执行package之前需要执行root项目的install,否则package执行失败)
3、执行完成之后,在默认的target目录或者指定目录会生成一个rpc_provider的jar
二、执行jar
java -jar rpc_provider.jar (具体可参考Spring Boot外部配置属性注入)。
三、注册为Linux服务
Linux下运行的软件通过将其注册为服务,这样可以通过命令开启、关闭以及保持开机启动等功能。主流的Linux大多使用init.d或systemd来注册服务,下面就以这两种方式下注册服务示例将自定义jar注册为Linux服务。操作如下:
1、基于init.d部署
ln -s /home/lifish/myproject/jardemo-0.0.1-SNAPSHOT.jar /etc/init.d/jardemo
由于本文开发使用环境为systemd管理服务的Linux,所以无法进行验证。如果需要验证,可使用如下命令:
service jardemo start
service jardemo stop
chkconfig jardemo on (开机启动)
日志保存在/var/log目录下。
2、基于systemd部署
1)在/etc/systemd/system添加文件jardemo.service,文件内容为:
注意Description=jardemo和ExecStart=/usr/bin/java -jar /home/lifish/myproject/jardemo-0.0.1-SNAPSHOT.jar
2)启动服务 systemctl start jardemo
3)开机启动 systemctl enable jardemo
4)项目日志journalctl -u jardemo
需要注意的是这是个java项目要jdk支持,如果Linux环境不存在jdk需要先按照jkd否则运行失败。
补充:在windows环境中启动可能提示端口号被占用,但实际使用netstat -ano| findstr port 查询这个端口号并未占用。可能原因就是端口号被Hyper-V保留了。试下netsh interface ipv4 show excludedportrange protocol=tcp,如果被保留了,就在打开或关闭功能里把Hyper-V去掉并重启电脑。
本案例在win10中执行即碰到端口号被占用但是找不到相关进程的问题。最后关闭Hyper-V功能并重启机器解决了。
注意:通过Maven中配置maven-plugin插件然后通过命令maven clean package将项目打成的jar是一个Fat jar。所谓Fat jar即这种jar不仅仅包含本项目中源码所编译生成的java类文件,还会包含项目所依赖的第三方库及有关项目启动的相关信息(项目代码、项目依赖包、应用启动相关文件等)。