1.库版本
supervisor 4.2.5 django-celery-beat 2.5.0 django-celery-results 2.5.1 Django 4.2.6
环境: Linux
项目路径:/opt/new/new_project
2.制作软连接
已知,Python的安装目录是 /usr/local/python3,其下有 bin/include/lib和share四个目录,其中bin里面就是我们安装pip库后的可执行文件存放位置
可以 ll /usr/local/python3/bin 查看到echo_supervisord_conf、supervisorctl、supervisord三个相关的文件
echo_supervisord_conf用来生成supervisor的默认配置信息
supervisorctl用来控制supervisor服务中各项服务的启停
supervisord可以用来以指定配置文件启动supervisor服务
新建软连接 cd /usr/bin ln -s /usr/local/python3/bin/echo_supervisord_conf echo_supervisord_conf ln -s /usr/local/python3/bin/supervisorctl supervisorctl ln -s /usr/local/python3/bin/supervisord supervisord 建立完成后可在任务位置执行supervisor相关命令
3.生成配置文件
在项目目录下/opt/new/new_project 生成配置文件
cd /opt/new/new_project
# 会在上述目录生成一个supervisord.conf文件
echo_supervisord_conf > supervisord.conf
4.修改配置
vim supervisord.conf
将配置文件末尾的[include]部分放开,包含[include]这一行,files设置一个相对于supervisord.conf文件的位置,所有这个目录下的.ini文件都会被supervisor识别为他的看护进程,这里设置为config,则在目录/opt/new/new_project/config下所有的ini文件的进程都会被看护
[include]
files = config/*.ini
5.新增ini文件
一个.ini文件代表一个进程,本次主要有Django项目、celery进程,celery-beat进程
Django.ini内容: [program:django] command=python3 /opt/new/new_project/manage.py runserver 192.168.131.129:8000 user=root autostart=true autorestart=true stdout_logfile=/opt/new/new_project/django.log stderr_logfile=/opt/new/new_project/django_error.log
参数说明: program: 进程名,会在supervisorctl status中显示 command:启动进程的命令,需要使用环境能够识别的命令,一般为绝对路径 user: 用来执行command的用户名 autostart: 是否自动启动 autorestart: 掉线后是否自动重启 stdout_logfile: 日志文件 stderr_logfile: 错误日志
celery.ini文件内容 [program:celery] command=celery -A new_project worker -l debug -P eventlet user=root autostart=true autorestart=true stdout_logfile=/opt/new/new_project/celery.log stderr_logfile=/opt/new/new_project/celery_error.log celery-beat.ini文件内容 [program:celery-beat] command=celery -A new_project beat -l info user=root autostart=true autorestart=true stdout_logfile=/opt/new/new_project/celery-beat.log stderr_logfile=/opt/new/new_project/celery-beat_error.log
6.启动supervisor服务
此处以指定配置文件进行启动
cd /opt/new/new_project
supervisord -c supervisord.conf
服务启动完成,可以使用 supervisorctl status 查看进程状态
重启进程: supervisorctl restart 进程名/all
启动进程: supervisorctl start 进程名/all
关闭进程: supervisorctl stop 进程名/all
修改ini配置之后,一点要!!!重载配置: supervisorctl reload