• 使用supervisor管理你的进程


    使用supervisor的好处就是它可以帮你保持进程存活,还能通过web界面查看状态和进行停止,重启等操作。如果你安装的是宝塔环境,在应用市场里可以直接安装,并有可视化操作界面,比较方便,我单独使用的原因是服务器已经配置好多年,不建议安装宝塔,所以单独使用supervisor。

    我的配置环境:

    我的操作系统版本是:Ubuntu 18.04 64位

    supervisor要求的python版本是2.7

    第一步:安装:

    执行命令:  pip install supervisor

    第二步:初始化配置:

    执行命令: echo_supervisord_conf > /etc/supervisord.conf

    生成的配置文件放在:/etc/supervisord.conf

    1. ; Sample supervisor config file.
    2. ;
    3. ; For more information on the config file, please see:
    4. ; http://supervisord.org/configuration.html
    5. ;
    6. ; Notes:
    7. ; - Shell expansion ("~" or "$HOME") is not supported. Environment
    8. ; variables can be expanded using this syntax: "%(ENV_HOME)s".
    9. ; - Quotes around values are not supported, except in the case of
    10. ; the environment= options as shown below.
    11. ; - Comments must have a leading space: "a=b ;comment" not "a=b;comment".
    12. ; - Command will be truncated if it looks like a config file comment, e.g.
    13. ; "command=bash -c 'foo ; bar'" will truncate to "command=bash -c 'foo ".
    14. ;
    15. ; Warning:
    16. ; Paths throughout this example file use /tmp because it is available on most
    17. ; systems. You will likely need to change these to locations more appropriate
    18. ; for your system. Some systems periodically delete older files in /tmp.
    19. ; Notably, if the socket file defined in the [unix_http_server] section below
    20. ; is deleted, supervisorctl will be unable to connect to supervisord.
    21. [unix_http_server]
    22. file=/tmp/supervisor.sock ; the path to the socket file
    23. ;chmod=0700 ; socket file mode (default 0700)
    24. ;chown=nobody:nogroup ; socket file uid:gid owner
    25. ;username=user ; default is no username (open server)
    26. ;password=123 ; default is no password (open server)
    27. ; Security Warning:
    28. ; The inet HTTP server is not enabled by default. The inet HTTP server is
    29. ; enabled by uncommenting the [inet_http_server] section below. The inet
    30. ; HTTP server is intended for use within a trusted environment only. It
    31. ; should only be bound to localhost or only accessible from within an
    32. ; isolated, trusted network. The inet HTTP server does not support any
    33. ; form of encryption. The inet HTTP server does not use authentication
    34. ; by default (see the username= and password= options to add authentication).
    35. ; Never expose the inet HTTP server to the public internet.
    36. [inet_http_server] ; inet (TCP) server disabled by default
    37. port=0.0.0.0:8888 ; ip_address:port specifier, *:port for all iface
    38. username=你的用户名 ; default is no username (open server)
    39. password=你的密码 ; default is no password (open server)
    40. [supervisord]
    41. logfile=/tmp/supervisord.log ; main log file; default $CWD/supervisord.log
    42. logfile_maxbytes=50MB ; max main logfile bytes b4 rotation; default 50MB
    43. logfile_backups=10 ; # of main logfile backups; 0 means none, default 10
    44. loglevel=info ; log level; default info; others: debug,warn,trace
    45. pidfile=/tmp/supervisord.pid ; supervisord pidfile; default supervisord.pid
    46. nodaemon=false ; start in foreground if true; default false
    47. silent=false ; no logs to stdout if true; default false
    48. minfds=1024 ; min. avail startup file descriptors; default 1024
    49. minprocs=200 ; min. avail process descriptors;default 200
    50. ;umask=022 ; process file creation umask; default 022
    51. ;user=supervisord ; setuid to this UNIX account at startup; recommended if root
    52. ;identifier=supervisor ; supervisord identifier, default is 'supervisor'
    53. ;directory=/tmp ; default is not to cd during start
    54. ;nocleanup=true ; don't clean up tempfiles at start; default false
    55. ;childlogdir=/tmp ; 'AUTO' child log dir, default $TEMP
    56. ;environment=KEY="value" ; key value pairs to add to environment
    57. ;strip_ansi=false ; strip ansi escape codes in logs; def. false
    58. ; The rpcinterface:supervisor section must remain in the config file for
    59. ; RPC (supervisorctl/web interface) to work. Additional interfaces may be
    60. ; added by defining them in separate [rpcinterface:x] sections.
    61. [rpcinterface:supervisor]
    62. supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
    63. ; The supervisorctl section configures how supervisorctl will connect to
    64. ; supervisord. configure it match the settings in either the unix_http_server
    65. ; or inet_http_server section.
    66. [supervisorctl]
    67. ;serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket
    68. serverurl=http://0.0.0.0:8888 ; use an http:// url to specify an inet socket
    69. ;username=chris ; should be same as in [*_http_server] if set
    70. ;password=123 ; should be same as in [*_http_server] if set
    71. ;prompt=mysupervisor ; cmd line prompt (default "supervisor")
    72. ;history_file=~/.sc_history ; use readline history if available
    73. ; The sample program section below shows all possible program subsection values.
    74. ; Create one or more 'real' program: sections to be able to control them under
    75. ; supervisor.
    76. ;[program:theprogramname]
    77. ;command=/bin/cat ; the program (relative uses PATH, can take args)
    78. ;process_name=%(program_name)s ; process_name expr (default %(program_name)s)
    79. ;numprocs=1 ; number of processes copies to start (def 1)
    80. ;directory=/tmp ; directory to cwd to before exec (def no cwd)
    81. ;umask=022 ; umask for process (default None)
    82. ;priority=999 ; the relative start priority (default 999)
    83. ;autostart=true ; start at supervisord start (default: true)
    84. ;startsecs=1 ; # of secs prog must stay up to be running (def. 1)
    85. ;startretries=3 ; max # of serial start failures when starting (default 3)
    86. ;autorestart=unexpected ; when to restart if exited after running (def: unexpected)
    87. ;exitcodes=0 ; 'expected' exit codes used with autorestart (default 0)
    88. ;stopsignal=QUIT ; signal used to kill process (default TERM)
    89. ;stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
    90. ;stopasgroup=false ; send stop signal to the UNIX process group (default false)
    91. ;killasgroup=false ; SIGKILL the UNIX process group (def false)
    92. ;user=chrism ; setuid to this UNIX account to run the program
    93. ;redirect_stderr=true ; redirect proc stderr to stdout (default false)
    94. ;stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO
    95. ;stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
    96. ;stdout_logfile_backups=10 ; # of stdout logfile backups (0 means none, default 10)
    97. ;stdout_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
    98. ;stdout_events_enabled=false ; emit events on stdout writes (default false)
    99. ;stdout_syslog=false ; send stdout to syslog with process name (default false)
    100. ;stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO
    101. ;stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
    102. ;stderr_logfile_backups=10 ; # of stderr logfile backups (0 means none, default 10)
    103. ;stderr_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
    104. ;stderr_events_enabled=false ; emit events on stderr writes (default false)
    105. ;stderr_syslog=false ; send stderr to syslog with process name (default false)
    106. ;environment=A="1",B="2" ; process environment additions (def no adds)
    107. ;serverurl=AUTO ; override serverurl computation (childutils)
    108. ; The sample eventlistener section below shows all possible eventlistener
    109. ; subsection values. Create one or more 'real' eventlistener: sections to be
    110. ; able to handle event notifications sent by supervisord.
    111. ;[eventlistener:theeventlistenername]
    112. ;command=/bin/eventlistener ; the program (relative uses PATH, can take args)
    113. ;process_name=%(program_name)s ; process_name expr (default %(program_name)s)
    114. ;numprocs=1 ; number of processes copies to start (def 1)
    115. ;events=EVENT ; event notif. types to subscribe to (req'd)
    116. ;buffer_size=10 ; event buffer queue size (default 10)
    117. ;directory=/tmp ; directory to cwd to before exec (def no cwd)
    118. ;umask=022 ; umask for process (default None)
    119. ;priority=-1 ; the relative start priority (default -1)
    120. ;autostart=true ; start at supervisord start (default: true)
    121. ;startsecs=1 ; # of secs prog must stay up to be running (def. 1)
    122. ;startretries=3 ; max # of serial start failures when starting (default 3)
    123. ;autorestart=unexpected ; autorestart if exited after running (def: unexpected)
    124. ;exitcodes=0 ; 'expected' exit codes used with autorestart (default 0)
    125. ;stopsignal=QUIT ; signal used to kill process (default TERM)
    126. ;stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
    127. ;stopasgroup=false ; send stop signal to the UNIX process group (default false)
    128. ;killasgroup=false ; SIGKILL the UNIX process group (def false)
    129. ;user=chrism ; setuid to this UNIX account to run the program
    130. ;redirect_stderr=false ; redirect_stderr=true is not allowed for eventlisteners
    131. ;stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO
    132. ;stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
    133. ;stdout_logfile_backups=10 ; # of stdout logfile backups (0 means none, default 10)
    134. ;stdout_events_enabled=false ; emit events on stdout writes (default false)
    135. ;stdout_syslog=false ; send stdout to syslog with process name (default false)
    136. ;stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO
    137. ;stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)
    138. ;stderr_logfile_backups=10 ; # of stderr logfile backups (0 means none, default 10)
    139. ;stderr_events_enabled=false ; emit events on stderr writes (default false)
    140. ;stderr_syslog=false ; send stderr to syslog with process name (default false)
    141. ;environment=A="1",B="2" ; process environment additions
    142. ;serverurl=AUTO ; override serverurl computation (childutils)
    143. ; The sample group section below shows all possible group values. Create one
    144. ; or more 'real' group: sections to create "heterogeneous" process groups.
    145. ;[group:thegroupname]
    146. ;programs=progname1,progname2 ; each refers to 'x' in [program:x] definitions
    147. ;priority=999 ; the relative start priority (default 999)
    148. ; The [include] section can just contain the "files" setting. This
    149. ; setting can list multiple files (separated by whitespace or
    150. ; newlines). It can also contain wildcards. The filenames are
    151. ; interpreted as relative to this file. Included files *cannot*
    152. ; include files themselves.
    153. [include]
    154. files = /home/super/*.ini

    第三步:修改配置

    web界面配置:

    inet_http_server项配置修改

    [inet_http_server]         ; inet (TCP) server disabled by default

    port=0.0.0.0:8888        ; ip_address:port specifier, *:port for all iface

    username=user              ; default is no username (open server)

    password=123456              ; default is no password (open server)

    supervisorctl项配置,

    [supervisorctl]

    serverurl=http://0.0.0.0:65432 ; use an http:// url to specify an inet socket

    其他项为注释状态

    设定程序配置:

    [include]

    files = /home/super/*.ini

    这样只需要在/home/super/目录下放对应程序的配置文件就行。

    文件:/home/super/test.ini 配置内容如下

    [program:test]

    command=python3 /user/local/test.py

    第四步:启动

    /usr/local/bin  supervisord  启动

    如果修改配置后,需要重新启动,先杀掉supervisord进程,再执行上述命令。

    ps -ef|grep supervisord 查看进程id

    kill 5055 关闭

    ***更好的方式还没研究***

    最后,通过浏览器访问可视化界面:

     附:官方文档,说的很全面详细:

    http://supervisord.org/installing.html

  • 相关阅读:
    【Vue-Element-Admin】select模糊查询
    nginx(三十九) ngx_http_realip_module模块学习
    C++智能指针
    为什么说Python 是胶水语言?
    STM32——MPU6050六轴传感器
    WOT全球技术创新大会2022:腾讯云数据库专场 + 云原生解决方案专场
    SSC mode
    js/axios/umi-request 根据后端返回的二进制流下载文件
    C++求解汉明距离
    Rust编译的时候报出link.exe not found错误
  • 原文地址:https://blog.csdn.net/dsb2008dsb/article/details/126784406