Gradle 配置增加
springBoot { executable = true }
通过该插件可 build 'fully executable' Jar ,嵌入一个额外的 shell 脚本,方便注册为 Unix/Linux services
Build 可执行的 Jar 包
注意赋予 Jar 包可执行权限
$ sudo chmod +x myapp.jar
这时可以通过 ./myapp.jar 启动项目
注册到系统服务
建立一个软链接,将脚本注册到 init.d 中 (通过 vim /etc/init.d/myapp 可查看脚本内容)
$ sudo ln -s /home/user/www/myapp.jar /etc/init.d/myapp
以服务方式管理
$ sudo service myapp start | stop | restart | status
(or $ sudo /etc/init.d/myapp start)
默认控制台输出日志位置
/var/log/<appname>.log
自定义配置文件
Spring boot 提供了一些属性可供配置,只需在 myapp.jar 相同位置创建 myapp.conf ,并放入配置属性如:
JAVA_HOME=/home/user/dev/jdk1.8
LOG_FOLDER=/home/user/log
JAVA_OPTS=-Xmx1024M
更多的信息查看 Spring boot 官方文档的 Installing Spring Boot applications 章节,注意 Spring boot 版本
遇到的启动问题:
以上是官方文档的步骤,但是死个舅子在 ubuntu server 16.04.3 上运行不起来,提示 Unable to find java ,Jar 本来是已经可以直接运行,查看了一下服务脚本,问题应该是通过服务启动时始终找不到 $JAVA_HOME,最后通过在配置文件中显式指定 JAVA_HOME 解决
完成自定义配置后先执行命令重新加载一下服务
$ sudo systemctl daemon-reload
否则可能出现 Unit myapp.service not found 或者 myapp.service changed on disk. Run 'systemctl daemon-reload' to reload units.