关于 supervisord 配置文件的问题

50 天前
 KInG2

在使用 supervisor 管理 Java 进程中,command 命令比较长,所以想拆分这一部分,supervisor 好像并不支持这样的写法,还是我的调用变量的写法不对。

; 项目的基本配置
[setting:variables]
; Java 启动时占用的端口
server_port=
; Java 包运行的服务器地址,当启用 JMX 监控时取消注释
; server_host=
; 当前部署的环境为测试环境:test ,还是生产环境:prod
server_prod=test
; Java 包启用的用户,默认为 nginx ,可选为 root
server_user=nginx
; Java 包所在的目录
dir=
job_name=
module_name=

; Java 包启动的基本命令
[usage:java]
java_home=/usr/local/jdk8/bin/java -jar
java_memory=-Xms256m -Xmx256m -XX:MaxMetaspaceSize=256M
springboot_options=-Dspring.profiles.active=%(server_prod)s
java_path=%(setting:variables:dir)s/content/%(setting:variables:job_name)s/%(setting:variables:module_name)s.jar

; JMX 监控配置
[monitor:jmx]
jmx_start=-Dcom.sun.management.jmxremote
jmx_host=-Djava.rmi.server.hostname=%(server_host)s
jmx_port=-Dcom.sun.management.jmxremote.port=1%(server_port)s
jmx_rmi_port=-Dcom.sun.management.jmxremote.rmi.port=1%(server_port)s
jmx_ssl=-Dcom.sun.management.jmxremote.ssl=false
jmx_auth=-Dcom.sun.management.jmxremote.authenticate=false

; Supervisor 项目运行配置
[program:%(setting:variables:job_name)s-%(setting:variables:module_name)s]
command=%(usage:java:java_home)s \
        %(usage:java:java_memory)s \
        %(usage:java:springboot_options)s \
        %(usage:java:java_path)s \
; 需要 JMX 监控时取消注释
;        %(monitor:jmx:jmx_start)s \
;        %(monitor:jmx:jmx_host)s \
;        %(monitor:jmx:jmx_port)s \
;        %(monitor:jmx:jmx_rmi_port)s \
;        %(monitor:jmx:jmx_ssl)s \
;        %(monitor:jmx:jmx_auth)s \
autostart=true
autorestart=true
startsecs=10
startretries=3
user=%(setting:variables:server_user)s
priority=999
redirect_stderr=true
stopasgroup=false
killasgroup=false
stdout_logfile_maxbytes=20MB
stdout_logfile_backups=20
stdout_logfile=%(setting:variables:dir)s/logs/%(setting:variables:job_name)s/%(setting:variables:module_name)s.log
365 次点击
所在节点    问与答
3 条回复
idontnowhat2say
50 天前
command 比较长建议直接用脚本,但脚本最后的启用使用 exec 命令。exec 是 用新的进程替换旧的,而不是 fork
KInG2
50 天前
@idontnowhat2say 感谢,不过现在的目标对于我来说是纠结为什么这个不行,想知道是因为 supervisor 不支持还是什么的,以及如果支持的话怎么定义进去。
idontnowhat2say
50 天前
@KInG2 这个我以前也想弄过,记得应该是支持不了的。想要用自定义变量得声明环境变量,然后用 %(ENV_)s 前缀

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1028791

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX