博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
supervisor安装部署和使用实例
阅读量:6453 次
发布时间:2019-06-23

本文共 26749 字,大约阅读时间需要 89 分钟。

Supervisord是用Python实现的一款非常实用的进程管理工具,类似于,monit和supervisord的一个比较大的差异是supervisord管理的进程必须由supervisord来启动,monit可以管理已经在运行的程序;supervisord还要求管理的程序是非daemon程序,supervisord会帮你把它转成daemon程序,因此如果用supervisord来管理nginx的话,必须在nginx的配置文件里添加一行设置daemon off让nginx以非daemon方式启动。(此段话引用链接:)

 

注意:如果用supervisorctlstart nginx启动nginx显示错误nginx: ERROR(abnormal termination),查看日志说是nginx已经启动,这就是因为nginx本身是daemon程序,要在nginx的配置文件中把它转为非daemon程序.

 

1.Supervisor安装:

1 # 安装  2 easy_install supervisor

也可采用离线安装的方式:

 

安装python

安装meld3-0.6.8.tar.gz

安装elementtree-1.2.6-20050316.tar.gz

安装supervisor-3.0a12.tar.gz
官方安装文档:
http://supervisord.org/installing.html
依赖软件:

1 setuptools (latest) from http://pypi.python.org/pypi/setuptools.  2 meld3 (latest) from http://www.plope.com/software/meld3/.  3 elementtree (latest) from http://effbot.org/downloads#elementtree.
2.生成默认配置文件:
1 # 生成默认配置文件  2 echo_supervisord_conf > /etc/supervisord.conf  3 mkdir /etc/supervisord.conf.d

3.修改配置文件

1 include区段修改为:  2 [include]  3 files = /etc/supervisord.conf.d/*.conf
1 如需要访问web控制界面,inet_http_server区段修改为:  2 [inet_http_server]  3 port=0.0.0.0:9001  4 username=username ; 你的用户名  5 password=password ; 你的密码
 
1 每个需要管理的进程分别写在一个文件里面,放在/etc/supervisord.conf.d/目录下,便于管理。例如:test.conf  2 [program:sqlparse]  3 directory = /var/local/python  4 command = /use/bin python test.py
 

4.把supervisord服务设为开机自启动,把下面程序复制下来生成supervisord文件放到/etc/init.d/目录下面:

CentOS环境下:

1 #!/bin/sh   2 #   3 # /etc/rc.d/init.d/supervisord   4 #   5 # Supervisor is a client/server system that   6 # allows its users to monitor and control a   7 # number of processes on UNIX-like operating   8 # systems.   9 #  10 # chkconfig: - 64 36  11 # description: Supervisor Server  12 # processname: supervisord  13   14 # Source init functions  15 . /etc/init.d/functions  16   17 RETVAL=0  18 prog="supervisord"  19 pidfile="/tmp/supervisord.pid"  20 lockfile="/var/lock/subsys/supervisord"  21   22 start()  23 {  24         echo -n $"Starting $prog: "  25         daemon --pidfile $pidfile supervisord -c /etc/supervisord.conf  26         RETVAL=$?  27         echo  28         [ $RETVAL -eq 0 ] && touch ${lockfile}  29 }  30   31 stop()  32 {  33         echo -n $"Shutting down $prog: "  34         killproc -p ${pidfile} /usr/bin/supervisord  35         RETVAL=$?  36         echo  37         if [ $RETVAL -eq 0 ] ; then  38                 rm -f ${lockfile} ${pidfile}  39         fi  40 }  41   42 case "$1" in  43   44   start)  45     start  46   ;;  47   48   stop)  49     stop  50   ;;  51   52   status)  53         status $prog  54   ;;  55   56   restart)  57     stop  58     start  59   ;;  60   61   *)  62     echo "Usage: $0 {start|stop|restart|status}"  63   ;;  64   65 esac
 

Ubuntu环境下:

1 #! /bin/sh  2 ### BEGIN INIT INFO  3 # Provides:          supervisord  4 # Required-Start:    $remote_fs  5 # Required-Stop:     $remote_fs  6 # Default-Start:     2 3 4 5  7 # Default-Stop:      0 1 6  8 # Short-Description: Example initscript  9 # Description:       This file should be used to construct scripts to be 10 #                    placed in /etc/init.d. 11 ### END INIT INFO 12   13 # Author: Dan MacKinlay 
14 # Based on instructions by Bertrand Mathieu 15 # http://zebert.blogspot.com/2009/05/installing-django-solr-varnish-and.html 16 17 # Do NOT "set -e" 18 19 # PATH should only include /usr/* if it runs after the mountnfs.sh script 20 PATH=/sbin:/usr/sbin:/bin:/usr/bin 21 DESC="Description of the service" 22 NAME=supervisord 23 DAEMON=/usr/local/bin/supervisord 24 DAEMON_ARGS="" 25 PIDFILE=/tmp/$NAME.pid 26 SCRIPTNAME=/etc/init.d/$NAME 27 28 # Exit if the package is not installed 29 [ -x "$DAEMON" ] || exit 0 30 31 # Read configuration variable file if it is present 32 [ -r /etc/default/$NAME ] && . /etc/default/$NAME 33 34 # Load the VERBOSE setting and other rcS variables 35 . /lib/init/vars.sh 36 37 # Define LSB log_* functions. 38 # Depend on lsb-base (>= 3.0-6) to ensure that this file is present. 39 . /lib/lsb/init-functions 40 41 # 42 # Function that starts the daemon/service 43 # 44 do_start() 45 { 46 # Return 47 # 0 if daemon has been started 48 # 1 if daemon was already running 49 # 2 if daemon could not be started 50 start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \ 51 || return 1 52 start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \ 53 $DAEMON_ARGS \ 54 || return 2 55 # Add code here, if necessary, that waits for the process to be ready 56 # to handle requests from services started subsequently which depend 57 # on this one. As a last resort, sleep for some time. 58 } 59 60 # 61 # Function that stops the daemon/service 62 # 63 do_stop() 64 { 65 # Return 66 # 0 if daemon has been stopped 67 # 1 if daemon was already stopped 68 # 2 if daemon could not be stopped 69 # other if a failure occurred 70 start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME 71 RETVAL="$?" 72 [ "$RETVAL" = 2 ] && return 2 73 # Wait for children to finish too if this is a daemon that forks 74 # and if the daemon is only ever run from this initscript. 75 # If the above conditions are not satisfied then add some other code 76 # that waits for the process to drop all resources that could be 77 # needed by services started subsequently. A last resort is to 78 # sleep for some time. 79 start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON 80 [ "$?" = 2 ] && return 2 81 # Many daemons don't delete their pidfiles when they exit. 82 rm -f $PIDFILE 83 return "$RETVAL" 84 } 85 86 # 87 # Function that sends a SIGHUP to the daemon/service 88 # 89 do_reload() { 90 # 91 # If the daemon can reload its configuration without 92 # restarting (for example, when it is sent a SIGHUP), 93 # then implement that here. 94 # 95 start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME 96 return 0 97 } 98 99 case "$1" in100 start)101 [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"102 do_start103 case "$?" in104 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;105 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;106 esac107 ;;108 stop)109 [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"110 do_stop111 case "$?" in112 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;113 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;114 esac115 ;;116 #reload|force-reload)117 #118 # If do_reload() is not implemented then leave this commented out119 # and leave 'force-reload' as an alias for 'restart'.120 #121 #log_daemon_msg "Reloading $DESC" "$NAME"122 #do_reload123 #log_end_msg $?124 #;;125 restart|force-reload)126 #127 # If the "reload" option is implemented then remove the128 # 'force-reload' alias129 #130 log_daemon_msg "Restarting $DESC" "$NAME"131 do_stop132 case "$?" in133 0|1)134 do_start135 case "$?" in136 0) log_end_msg 0 ;;137 1) log_end_msg 1 ;; # Old process is still running138 *) log_end_msg 1 ;; # Failed to start139 esac140 ;;141 *)142 # Failed to stop143 log_end_msg 1144 ;;145 esac146 ;;147 *)148 #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2149 echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2150 exit 3151 ;;152 esac

用root用户执行下面命令把supervisord服务设为开机自启动:

 

CentOS系统下:

1 chmod +x /etc/init.d/supervisord  2 chkconfig supervisord on  3 service supervisord start

Ubuntu系统下:

1 chmod +x /etc/init.d/supervisord  2 update-rc.d supervisord defaults

 

5.supervisord管理

Supervisord安装完成后有两个可用的命令行supervisor和supervisorctl,命令使用解释如下:

  • supervisord,初始启动Supervisord,启动、管理配置中设置的进程。
  • supervisorctl stop programxxx,停止某一个进程(programxxx),programxxx为[program:chatdemon]里配置的值,这个示例就是chatdemon。
  • supervisorctl start programxxx,启动某个进程
  • supervisorctl restart programxxx,重启某个进程
  • supervisorctl stop groupworker: ,重启所有属于名为groupworker这个分组的进程(start,restart同理)
  • supervisorctl stop all,停止全部进程,注:start、restart、stop都不会载入最新的配置文件。
  • supervisorctl reload,载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程。
  • supervisorctl update,根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启。
  • 注意:显示用stop停止掉的进程,用reload或者update都不会自动重启。

 

6.supervisord的配置文件(/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 ; Note: shell expansion ("~" or "$HOME") is not supported.  Environment    7 ; variables can be expanded using this syntax: "%(ENV_HOME)s".    8     9 [unix_http_server]   10 file=/tmp/supervisor.sock   ; (the path to the socket file)   11 ;chmod=0700                 ; socket file mode (default 0700)   12 ;chown=nobody:nogroup       ; socket file uid:gid owner   13 ;username=user              ; (default is no username (open server))   14 ;password=123               ; (default is no password (open server))   15    16 ;[inet_http_server]         ; inet (TCP) server disabled by default   17 ;port=127.0.0.1:9001        ; (ip_address:port specifier, *:port for all iface)   18 ;username=user              ; (default is no username (open server))   19 ;password=123               ; (default is no password (open server))   20    21 [inet_http_server]         ; inet (TCP) server disabled by default   22 port=0.0.0.0:9001        ; (ip_address:port specifier, *:port for all iface)   23 username=supervisor              ; (default is no username (open server))   24 password=supervisor               ; (default is no password (open server))   25    26 [supervisord]   27 logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log)   28 logfile_maxbytes=50MB        ; (max main logfile bytes b4 rotation;default 50MB)   29 logfile_backups=10           ; (num of main logfile rotation backups;default 10)   30 loglevel=info                ; (log level;default info; others: debug,warn,trace)   31 pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid)   32 nodaemon=false               ; (start in foreground if true;default false)   33 minfds=1024                  ; (min. avail startup file descriptors;default 1024)   34 minprocs=200                 ; (min. avail process descriptors;default 200)   35 ;umask=022                   ; (process file creation umask;default 022)   36 ;user=chrism                 ; (default is current user, required if root)   37 ;identifier=supervisor       ; (supervisord identifier, default is 'supervisor')   38 ;directory=/tmp              ; (default is not to cd during start)   39 ;nocleanup=true              ; (don't clean up tempfiles at start;default false)   40 ;childlogdir=/tmp            ; ('AUTO' child log dir, default $TEMP)   41 ;environment=KEY="value"     ; (key value pairs to add to environment)   42 ;strip_ansi=false            ; (strip ansi escape codes in logs; def. false)   43    44 ; the below section must remain in the config file for RPC   45 ; (supervisorctl/web interface) to work, additional interfaces may be   46 ; added by defining them in separate rpcinterface: sections   47 [rpcinterface:supervisor]   48 supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface   49    50 [supervisorctl]   51 serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL  for a unix socket   52 ;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket   53 ;username=chris              ; should be same as http_username if set   54 ;password=123                ; should be same as http_password if set   55 ;prompt=mysupervisor         ; cmd line prompt (default "supervisor")   56 ;history_file=~/.sc_history  ; use readline history if available   57    58 ; The below sample program section shows all possible program subsection values,   59 ; create one or more 'real' program: sections to be able to control them under   60 ; supervisor.   61    62 ;[program:theprogramname]   63 ;command=/bin/cat              ; the program (relative uses PATH, can take args)   64 ;process_name=%(program_name)s ; process_name expr (default %(program_name)s)   65 ;numprocs=1                    ; number of processes copies to start (def 1)   66 ;directory=/tmp                ; directory to cwd to before exec (def no cwd)   67 ;umask=022                     ; umask for process (default None)   68 ;priority=999                  ; the relative start priority (default 999)   69 ;autostart=true                ; start at supervisord start (default: true)   70 ;autorestart=unexpected        ; whether/when to restart (default: unexpected)   71 ;startsecs=1                   ; number of secs prog must stay running (def. 1)   72 ;startretries=3                ; max # of serial start failures (default 3)   73 ;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)   74 ;stopsignal=QUIT               ; signal used to kill process (default TERM)   75 ;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)   76 ;stopasgroup=false             ; send stop signal to the UNIX process group (default false)   77 ;killasgroup=false             ; SIGKILL the UNIX process group (def false)   78 ;user=chrism                   ; setuid to this UNIX account to run the program   79 ;redirect_stderr=true          ; redirect proc stderr to stdout (default false)   80 ;stdout_logfile=/a/path        ; stdout log path, NONE for none; default AUTO   81 ;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)   82 ;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)   83 ;stdout_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)   84 ;stdout_events_enabled=false   ; emit events on stdout writes (default false)   85 ;stderr_logfile=/a/path        ; stderr log path, NONE for none; default AUTO   86 ;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)   87 ;stderr_logfile_backups=10     ; # of stderr logfile backups (default 10)   88 ;stderr_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)   89 ;stderr_events_enabled=false   ; emit events on stderr writes (default false)   90 ;environment=A="1",B="2"       ; process environment additions (def no adds)   91 ;serverurl=AUTO                ; override serverurl computation (childutils)   92    93 ; The below sample eventlistener section shows all possible   94 ; eventlistener subsection values, create one or more 'real'   95 ; eventlistener: sections to be able to handle event notifications   96 ; sent by supervisor.   97    98 ;[eventlistener:theeventlistenername]   99 ;command=/bin/eventlistener    ; the program (relative uses PATH, can take args)  100 ;process_name=%(program_name)s ; process_name expr (default %(program_name)s)  101 ;numprocs=1                    ; number of processes copies to start (def 1)  102 ;events=EVENT                  ; event notif. types to subscribe to (req'd)  103 ;buffer_size=10                ; event buffer queue size (default 10)  104 ;directory=/tmp                ; directory to cwd to before exec (def no cwd)  105 ;umask=022                     ; umask for process (default None)  106 ;priority=-1                   ; the relative start priority (default -1)  107 ;autostart=true                ; start at supervisord start (default: true)  108 ;autorestart=unexpected        ; whether/when to restart (default: unexpected)  109 ;startsecs=1                   ; number of secs prog must stay running (def. 1)  110 ;startretries=3                ; max # of serial start failures (default 3)  111 ;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)  112 ;stopsignal=QUIT               ; signal used to kill process (default TERM)  113 ;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)  114 ;stopasgroup=false             ; send stop signal to the UNIX process group (default false)  115 ;killasgroup=false             ; SIGKILL the UNIX process group (def false)  116 ;user=chrism                   ; setuid to this UNIX account to run the program  117 ;redirect_stderr=true          ; redirect proc stderr to stdout (default false)  118 ;stdout_logfile=/a/path        ; stdout log path, NONE for none; default AUTO  119 ;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)  120 ;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)  121 ;stdout_events_enabled=false   ; emit events on stdout writes (default false)  122 ;stderr_logfile=/a/path        ; stderr log path, NONE for none; default AUTO  123 ;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)  124 ;stderr_logfile_backups        ; # of stderr logfile backups (default 10)  125 ;stderr_events_enabled=false   ; emit events on stderr writes (default false)  126 ;environment=A="1",B="2"       ; process environment additions  127 ;serverurl=AUTO                ; override serverurl computation (childutils)  128   129 ; The below sample group section shows all possible group values,  130 ; create one or more 'real' group: sections to create "heterogeneous"  131 ; process groups.  132   133 ;[group:thegroupname]  134 ;programs=progname1,progname2  ; each refers to 'x' in [program:x] definitions  135 ;priority=999                  ; the relative start priority (default 999)  136   137 ; The [include] section can just contain the "files" setting.  This  138 ; setting can list multiple files (separated by whitespace or  139 ; newlines).  It can also contain wildcards.  The filenames are  140 ; interpreted as relative to this file.  Included files *cannot*  141 ; include files themselves.  142   143 ;[include]  144 ;files = relative/directory/*.ini  145   146 [include]  147 files = /etc/supervisord.conf.d/*.conf
 

7.管理实例

7.1.测试一个简单的python程序:

在/etc/supervisord.conf.d/目录下生成testsupervisor.conf文件

1 [program:testsupervisor]  2 directory = /opt/testsupervisor  3 command = /usr/local/bin/python testsupervisor.py  4 priority=1  5 numprocs=1  6 autostart=true  7 autorestart=true

directory表示testsupervisor.py所在的工作目录

command表示执行的命令,注意python要用绝对路径:/usr/local/bin/python

priority表示优先级,用supervisord管理的程序会按优先级从高到低依次启动,数字越多,优先级越高

autostart表示自动启动

autorestart表示自动重启

 

7.2.用supervisord管理 redis程序:

在/etc/supervisord.conf.d/目录下生成redis.conf文件

1 [program:redis]   2 directory=/usr/local/src/redis-2.6.16   3 command=/usr/local/src/redis-2.6.16/src/redis-server redis.conf   4    5 stdout_logfile=/tmp/redis_access.log   6 stderr_logfile=/tmp/redis_error.log   7 autostart=true   8 autorestart=true   9 startsecs=10  10   11 ; Need to wait for currently executing tasks to finish at shutdown.  12 ; Increase this if you have very long running tasks.  13 stopwaitsecs = 600  14   15 ; if rabbitmq is supervised, set its priority higher  16 ; so it starts first  17 priority=10

7.3.用supervisord管理nginx程序,因为nginx默认就是以daemon方式启动的,所以如果用supervisord来管理nginx的话,必须在nginx的配置文件里添加一行设置daemon off让nginx以非daemon方式启动。(supervisord还要求管理的程序是非daemon程序,supervisord会帮你把它转成daemon程序)

 

在/usr/local/nginx/conf/目录下面修改nginx.conf文件:

 
1 worker_processes 2;   2 daemon off;   3 events {   4 #use epoll;   5 worker_connections 1024;   6 }   7 http{   8         #gzip on;   9         #gzip_min_length  100;  10         #gzip_buffers     4 16k;  11         #gzip_http_version 1.0;  12         #gzip_comp_level 2;  13         #gzip_types       text/plain application/x-javascript text/css application/xml;  14         #gzip_vary on;  15   16         upstream 192.168.56.11 {  17         #这里指定多个源服务器,ip:端口,80端口的话可写可不写    18                 server 127.0.0.1:8003;  19                 server 127.0.0.1:8004;  20                 server 127.0.0.1:8005;  21                 server 127.0.0.1:8006;  22   23         }  24         server {  25                 listen 8010;  26                 location / {  27                         #rewrite ^/smmp/servletsendmoremsg\.do$ /send last;  28                         proxy_redirect off;  29                         proxy_set_header Host    $host;  30                         proxy_set_header X-Forwarded-For $remote_addr;  31                         proxy_pass http://192.168.56.11;  32   33                 }  34   35         }  36   37 #       server {  38 #               listen 443;  39 #                ssl                  on;  40 #               ssl_certificate      server.crt;  41 #               ssl_certificate_key  server.key;  42 #  43 #               ssl_session_timeout  5m;  44 #  45 #               ssl_protocols  SSLv2 SSLv3 TLSv1;  46 #               ssl_ciphers  HIGH:!aNULL:!MD5;  47 #               ssl_prefer_server_ciphers   on;  48 #               location / {  49 #                        proxy_redirect off;  50 #                        proxy_set_header Host    $host;  51 #                        proxy_set_header X-Forwarded-For $remote_addr;  52 #                        proxy_pass http://192.168.56.11;  53 #  54 #                }  55 #                 56 #       }    57 }

 

在/etc/supervisord.conf.d/目录下生成nginx.conf文件

1 [program:nginx]   2 command=/usr/local/nginx/sbin/nginx   3    4 stdout_logfile=/tmp/nginx.log   5 stderr_logfile=/tmp/nginx.log   6 autostart=true   7 autorestart=true   8 startsecs=10   9   10 ; Need to wait for currently executing tasks to finish at shutdown.  11 ; Increase this if you have very long running tasks.  12 stopwaitsecs = 600  13   14 ; if rabbitmq is supervised, set its priority higher  15 ; so it starts first  16 priority=55

 

7.4.用supervisord管理celery服务(python环境下):

celery官方链接:

在/etc/supervisord.conf.d/目录下生成celeryd.conf文件,启了两个worker,配置文件中要注意celeryconfig.py的路径:

1 ; ============================   2 ;  celeryd supervisor example   3 ; ============================   4    5 ; NOTE: If you're using Django, you shouldn't use this file.   6 ; Use   7 ; http://github.com/celery/django-celery/tree/master/extra/supervisord/celeryd.conf   8 ; instead!   9   10 [program:celery]  11 command=/usr/local/bin/celery worker --loglevel INFO --queues=low_send_task_queue,high_send_task_queue  12   13 process_name = %(program_name)s-%(process_num)d  14   15 ; Set PYTHONPATH to the directory containing celeryconfig.py  16 environment=PYTHONPATH=/usr/local/workspace_eclipse3.7.2/venus  17   18 directory=/usr/local/workspace_eclipse3.7.2/venus  19   20 numprocs=2  21 stdout_logfile=/tmp/celery_sendsms_access.log  22 stderr_logfile=/tmp/celery_sendsms_error.log  23 autostart=true  24 autorestart=true  25 startsecs=10  26   27 ; Need to wait for currently executing tasks to finish at shutdown.  28 ; Increase this if you have very long running tasks.  29 stopwaitsecs = 600  30   31 ; if rabbitmq is supervised, set its priority higher  32 ; so it starts first  33 priority=998

7.5.用supervisord管理celery服务(django环境下):

 

在/etc/supervisord.conf.d/目录下生成celeryd_worker.conf文件

1 ; ==============================================   2 ;  celery worker supervisor example for Django   3 ; ==============================================   4    5 [program:celeryworker]   6 command=/usr/local/bin/python manage.py celery worker --loglevel=INFO --queues=db_write_back_queue   7 directory=/usr/local/workspace_eclipse3.7.2/sms_web   8    9 numprocs=1  10 stdout_logfile=/tmp/celeryworker.log  11 stderr_logfile=/tmp/celeryworker.log  12 autostart=true  13 autorestart=true  14 startsecs=10  15   16 ; Need to wait for currently executing tasks to finish at shutdown.  17 ; Increase this if you have very long running tasks.  18 stopwaitsecs = 600  19   20 ; if rabbitmq is supervised, set its priority higher  21 ; so it starts first  22 priority=15  23   24 ;process_name = %(program_name)s-%(process_num)d  25 ;numprocs=2

 

在/etc/supervisord.conf.d/目录下生成celeryd_beat.conf文件,django环境下的心跳服务

 
1 ; ==============================================   2 ;  celery worker supervisor example for Django   3 ; ==============================================   4    5 [program:celerybeat]   6 command=/usr/local/bin/python manage.py celery beat -s /var/log/sms_web/celerybeat-schedule --loglevel=INFO   7 directory=/usr/local/workspace_eclipse3.7.2/sms_web   8    9 numprocs=1  10 stdout_logfile=/tmp/celerybeat.log  11 stderr_logfile=/tmp/celerybeat.log  12 autostart=true  13 autorestart=true  14 startsecs=10  15   16 ; Need to wait for currently executing tasks to finish at shutdown.  17 ; Increase this if you have very long running tasks.  18 stopwaitsecs = 600  19   20 ; if rabbitmq is supervised, set its priority higher  21 ; so it starts first  22 priority=14  23   24 ;process_name = %(program_name)s-%(process_num)d  25 ;numprocs=2
 

7.6.用supervisord管理venus服务(启了四个进程):

在/etc/supervisord.conf.d/目录下生成venux.conf文件

1 [program:venus-8003]   2 directory=/usr/local/workspace_eclipse3.7.2/venus   3 command=/usr/local/bin/python main.py --port=8003   4 stdout_logfile=/tmp/venus_8003.log   5 stderr_logfile=/tmp/venus_8003.log   6 autostart=true   7 autorestart=true   8 priority=50   9   10 [program:venus-8004]  11 directory=/usr/local/workspace_eclipse3.7.2/venus  12 command=/usr/local/bin/python main.py --port=8004  13 stdout_logfile=/tmp/venus_8004.log  14 stderr_logfile=/tmp/venus_8004.log  15 autostart=true  16 autorestart=true  17 priority=51  18   19 [program:venus-8005]  20 directory=/usr/local/workspace_eclipse3.7.2/venus  21 command=/usr/local/bin/python main.py --port=8005  22 stdout_logfile=/tmp/venus_8005.log  23 stderr_logfile=/tmp/venus_8005.log  24 autostart=true  25 autorestart=true  26 priority=52  27   28 [program:venus-8006]  29 directory=/usr/local/workspace_eclipse3.7.2/venus  30 command=/usr/local/bin/python main.py --port=8006  31 stdout_logfile=/tmp/venus_8006.log  32 stderr_logfile=/tmp/venus_8006.log  33 autostart=true  34 autorestart=true  35 priority=53  36 ~

7.7.用supervisord管理接收短信的服务:

在/etc/supervisord.conf.d/目录下生成receiver_cmpp.conf文件

1 [program:receiver-cmpp]   2 directory=/usr/local/workspace_eclipse3.7.2/sms_tool   3 command=/usr/local/bin/python receiver_cmpp.py   4    5 stdout_logfile=/tmp/receiver_cmpp.log   6 stderr_logfile=/tmp/receiver_cmpp.log   7 autostart=true   8 autorestart=true   9 startsecs=10  10   11 ; Need to wait for currently executing tasks to finish at shutdown.  12 ; Increase this if you have very long running tasks.  13 stopwaitsecs = 600  14   15 ; if rabbitmq is supervised, set its priority higher  16 ; so it starts first  17 priority=21

 

在/etc/supervisord.conf.d/目录下添加新的配置文件后,执行命令:

1 supervisorctl update

就会把新添加的服务启动起来,且不会影响正在运行的 服务。 

 

转载于:https://www.cnblogs.com/dengshihuang/p/8330296.html

你可能感兴趣的文章
linux pbs 用户时间,【Linux】单计算机安装PBS系统(Torque)与运维
查看>>
linux系统可用内存减少,在Linux中检查可用内存的5种方法
查看>>
linux 脚本map,Linux Shell Map的用法详解
查看>>
如何在linux系统下配置共享文件夹,如何在windows和Linux系统之间共享文件夹.doc
查看>>
thinkpad装linux无线网卡驱动,ThinkPad E530 Fedora 20 下无线网卡驱动的安装
查看>>
linux操作系统加固软件,系统安全:教你Linux操作系统的安全加固
查看>>
linux中yum源安装dhcp,24.Linux系统下动态网络源部署方法(dhcpd)
查看>>
linux屏幕复制显示出来的,linux – stdout到gnu屏幕复制缓冲区
查看>>
一起学Shell(十)之可称植性议题与扩展
查看>>
部署Ganglia监控Hadoop&Hbase
查看>>
gitlab的用户使用手册
查看>>
论Optimizer的工作模式ALL_ROWS&FIRST_ROWS
查看>>
生产环境高并发MySQL SQL语句优化案例
查看>>
Lync 小技巧-24-PDF 加密文件-转-Word-操作手册
查看>>
ASP.NET性能优化之分布式Session
查看>>
TaffyDB Introduction
查看>>
转载:《TypeScript 中文入门教程》 16、Symbols
查看>>
JavaScript、jQuery、HTML5、Node.js实例大全-读书笔记4
查看>>
C#技术------垃圾回收机制(GC)
查看>>
漫谈并发编程(三):共享受限资源
查看>>