
在使用 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 \ %(usae: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 1 idontnowhat2say 2024 年 4 月 1 日 command 比较长建议直接用脚本,但脚本最后的启用使用 exec 命令。exec 是 用新的进程替换旧的,而不是 fork |
2 KInG2 OP @idontnowhat2say 感谢,不过现在的目标对于我来说是纠结为什么这个不行,想知道是因为 supervisor 不支持还是什么的,以及如果支持的话怎么定义进去。 |
3 idontnowhat2say 2024 年 4 月 1 日 @KInG2 这个我以前也想弄过,记得应该是支持不了的。想要用自定义变量得声明环境变量,然后用 %(ENV_)s 前缀 |