我使用maven取消了SpringBoot应用程序,并在AWS Linux中部署了代码。我正在运行Jar文件(从mvn clean包创建)作为服务。但是,当系统重新启动时,日志不会生成。如果我只是终止ssh会话并打开新的SSH终端,我就能看到日志生成了。但是问题是在系统重新启动时,因为应用程序在后台运行但记录器不起作用。我编写了shell脚本,每次启动服务/或系统重启时都会设置环境变量。因此,每次我手动启动服务/系统重启环境变量都将被设置。当我手动运行服务(sudo服务myapp start)时,它工作,但系统重新启动时没有设置环境变量。
我的项目结构 我已将启动脚本和停止脚本放在我的脚本文件夹
中 start.sh:
cd / home / ec2-user / webserver / osuserver
sudo -E java -jar target / osu-soap-server-0.1.0.jar&
Stop.sh:
sudo fuser 8090 / tcp -k ||真
我在/etc/init.d中创建了myapp
MyApp的:
source /home/ec2-user/webserver/osuserver/scripts/osuscript.sh
case $1 in
start)
/bin/bash /home/ec2-user/webserver/osuserver/scripts/start.sh
;;
stop)
/bin/bash /home/ec2-user/webserver/osuserver/scripts/stop.sh
;;
restart)
/bin/bash /home/ec2-user/webserver/osuserver/scripts/start.sh
/bin/bash /home/ec2-user/webserver/osuserver/scripts/stop.sh
;;
esac
exit 0
每次系统重启时都要启动服务,我在/etc/rc.local中放置一个启动服务的命令
sudo service myapp start
因此,每当我重新启动系统时,我都可以看到应用程序在后台运行,因为大多数API都不依赖于环境变量。问题出在Logs和环境变量上。系统重新启动后,应用程序不会将任何日志写入文件,并且环境变量为空(可能是我的脚本文件,其中我设置的env变量未被执行)。但是应用程序在后台运行。
所以我想知道我是否需要改变运行jar文件作为服务的方式?或任何其他选择?