V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
KInG2
V2EX  ›  问与答

关于 supervisord 配置文件的问题

  •  
  •   KInG2 · 236 天前 · 517 次点击
    这是一个创建于 236 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在使用 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
    
    3 条回复
    idontnowhat2say
        1
    idontnowhat2say  
       236 天前
    command 比较长建议直接用脚本,但脚本最后的启用使用 exec 命令。exec 是 用新的进程替换旧的,而不是 fork
    KInG2
        2
    KInG2  
    OP
       236 天前
    @idontnowhat2say 感谢,不过现在的目标对于我来说是纠结为什么这个不行,想知道是因为 supervisor 不支持还是什么的,以及如果支持的话怎么定义进去。
    idontnowhat2say
        3
    idontnowhat2say  
       236 天前
    @KInG2 这个我以前也想弄过,记得应该是支持不了的。想要用自定义变量得声明环境变量,然后用 %(ENV_)s 前缀
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1642 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 16:55 · PVG 00:55 · LAX 08:55 · JFK 11:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.