spring-boot launch-script:如何避免pid_folder identity-subdirectory?
我们在service
模式下使用带有嵌入式启动脚本的弹簧引导,以实现daemonized/init.d行为。spring-boot launch-script:如何避免pid_folder identity-subdirectory?
但是,我们没有/etc/init.d
符号链接到弹簧引导罐,因为这需要使用sudo
。我们避免sudo
通过一个配置文件,环境像-Dspring.profiles.active=$APP_PROFILE
在JAVA_OPTS
(当通过sudo
开始,但在/home/appuser/.bashrc
(?)定义,这将不起作用)
我们有这个目录布局一些间接引用。基本上app.jar => current/app.jar => build-xx/app.jar
[email protected]:~/apps/services$ ls
app.jar -> /home/appuser/apps/services/current/services-1.0-SNAPSHOT.jar
current -> /home/appuser/apps/services/services-1298
services-1298
当开始与app.jar start
启动脚本生成在PID-夹基于该程序的“同一性”的附加的PID子目录中的应用。对我们来说,这可能是这样的:
/home/appuser/apps/services/run/services-1.0-SNAPSHOT_homeappuserappsservicesservices-1298/services.pid
与符号链接/etc/init.d
它得到特殊待遇和PID-子目录省略services-1.0-SNAPSHOT_homeappuserappsservicesservices-1298
使用时不像/保持稳定。
这个动态的pid-subdir使得我们很难在部署过程中检查守护进程的状态或启动/停止,因为您必须始终顺序正确,没有人阻止您启动一个进程两次(旧实例和现在是具有新标识 - 子目录的新实例)。
那么,有没有人知道为什么这个pid-subdir-identity必须存在,我们最好的办法是什么? 我们有一个不好的设置?
任何意见赞赏。
您可以使用APP_NAME
环境变量来控制身份。
我建议使用jar文件旁边的.conf
文件来配置服务的环境变量。例如,如果您的应用程序名为app.jar
,则应将conf文件命名为app.conf
,并将其放在与jar相同的目录中。然后您可以为您的应用程序配置APP_NAME
和JAVA_OPTS
等。如果您愿意,这应该允许您使用init.d
。
我们使用'.conf'并尝试使用'APP_NAME',但只能将'APP_NAME'设置为环境并且我们有几个不同的应用程序unser'/ home/appuser/apps/...'后端,前端,api等 - 这只适用于每个用户的一个应用程序,不是吗? – hotzen
不可以。如果您在我的回答中建议使用.conf文件,则可以根据每个应用程序配置环境,而不考虑涉及多少用户 –
这不起作用,APP_NAME无法通过conf文件条目进行配置但只能通过一个环境变量。它甚至在conf文件来源之前使用 – hotzen