WangScaler: 一个用心创作的作者。声明:才疏学浅,如有错误,恳请指正。
Supervisor是python开发的一种进程管理工具。不仅可以监控我们的程序还可以自动重启我们的程序,非常好用。我们的python程序、springboot程序都可以交给Supervisor来管理,那么接下来一块看看supervisor是如何安装使用的吧!
1、安装
yum install supervisor
简简单单的就用yum安装上我们的supervisor。
2、修改配置文件
启动web界面并配置密码
[inet_http_server] ; inet (TCP) server disabled by default port=0.0.0.0:9001 ; (ip_address:port specifier, *:port for all iface) username=WangScaler ; (default is no username (open server)) password=WangScaler@juejin.com ; (default is no password (open server))
切记,如果开在公网一定配置上用户名和密码,安全第一。
给命令加密
[supervisorctl] serverurl=unix:///run/supervisor/supervisor.sock ; use a unix:// URL for a unix socket ;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket username=WangScaler ; should be same as http_username if set password=123 ; should be same as http_password if set ;prompt=WangScaler@juejin.com ; cmd line prompt (default "supervisor") ;history_file=~/.sc_history ; use readline history if available
如果操作的用户是你自己或者是你信任的用户,其实完全没必要,每次使用命令都得输入密码,反而麻烦。怎么说呢都是为了安全。
配置应用自启
;[program:theprogramname] ;command=/bin/cat ; the program (relative uses PATH, can take args) ;process_name=%(program_name)s ; process_name expr (default %(program_name)s) ;numprocs=1 ; number of processes copies to start (def 1) ;directory=/tmp ; directory to cwd to before exec (def no cwd) ;umask=022 ; umask for process (default None) ;priority=999 ; the relative start priority (default 999) ;autostart=true ; start at supervisord start (default: true) ;autorestart=true ; retstart at unexpected quit (default: true) ;startsecs=10 ; number of secs prog must stay running (def. 1) ;startretries=3 ; max # of serial start failures (default 3) ;exitcodes=0,2 ; 'expected' exit codes for process (default 0,2) ;stopsignal=QUIT ; signal used to kill process (default TERM) ;stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10) ;user=chrism ; setuid to this UNIX account to run the program ;redirect_stderr=true ; redirect proc stderr to stdout (default false) ;stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO ;stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB) ;stdout_logfile_backups=10 ; # of stdout logfile backups (default 10) ;stdout_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0) ;stdout_events_enabled=false ; emit events on stdout writes (default false) ;stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO ;stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB) ;stderr_logfile_backups=10 ; # of stderr logfile backups (default 10) ;stderr_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0) ;stderr_events_enabled=false ; emit events on stderr writes (default false) ;environment=A=1,B=2 ; process environment additions (def no adds) ;serverurl=AUTO ; override serverurl computation (childutils)
可以在这里配置上启动程序的命令,比如
command=python3 /usr/local/wangscaler.py
,还可以通过其他的方法配置自启。接下来教你怎么使用配置文件,管理进程。
3、启动supervisor并配置自启
基本操作,没啥好说的。
systemctl restart supervisord
systemctl enable supervisord
4、使用配置文件管理python项目
- 1、 首先在
/etc/supervisor.d
下创建文件wangscaler.ini
2、编辑
wangscaler.ini
,示例如下:;/etc/supervisord.d/wangscaler.ini [program:wangscaler] command =sudo /root/.virtualenvs/grpc/bin/python3.6 /usr/local/wangscaler.py directory = /usr/local/ user = root startsecs = 3 autostart = true redirect_stderr = true stdout_logfile_maxbytes = 50MB stdout_logfile_backups = 10 stdout_logfile = /usr/local/log/app.log
内容和配置文件差不多,仿照着写即可。必须注意的是,如果上述的/usr/local/log/app.log文件不存在,那么你的项目是启动不起来的。如果是springboot项目,只需要将
command =sudo /root/.virtualenvs/grpc/bin/python3.6 /usr/local/wangscaler.py
修改为command =java -jar /usr/local/wangscaler.jar
即可。
5、启动上述的程序
通过supervisorctl reload
重新加载配置文件,切记不要使用supervisorctl update
,因为这个命令会使所有的程序重启。导致你原先启动的程序,再次启动,从而影响你的业务。
6、修改了代码,重启
supervisorctl restart wangscaler
你的program的名字是啥你就写啥,我这里使wangscaler。
7、命令参考
supervisorctl status:查看所有进程的状态
supervisorctl stop myproject:停止myproject
supervisorctl start myproject:启动myproject
supervisorctl restart myproject: 重启myproject
supervisorctl update :配置文件修改后可以使用该命令加载新的配置
supervisorctl reload: 重新启动配置中的所有程序
来都来了,点个赞再走呗!关注WangScaler,祝你升职、加薪、不提桶!