supervisord部署多项目
一、先安装supervisor
-
安装命令:
$ pip install supervisor -
如果在沙盒环境下安装不上的话使用:
$ apt-get install supervisor
注意:如果是用虚拟环境部署的话,建议在虚拟环境里面安装supervisor,如果是在系统环境,建议用系统环境的pip 或者 apt/yum来安装
二、对supervisor进行配置
-
生成默认配置文件
$ echo_supervisord_conf > /etc/supervisord.conf -
在这里你也可以自定义默认配置文件生成的位置,前提是/etc目录下先去创建你的要放置配置文件的目录,假如我们创建了一个叫做supervisor的文件夹,然后将默认配置文件放到这个文件夹里面
$ echo_supervisord_conf > /etc/supervisor/supervisord.conf
-
我建议这样,用conf文件夹来管理,然后supervisord文件里面是要管理的项目,可以一直加,图片里面有一个celery和web项目
-
修改配置文件
$ vim /etc/supercisor/supervisord.conf
在最后一行添加files = /etc/supervisor/supervisord.conf.d/.conf
如:
[include]
;files = /etc/supervisor/conf.d/.conf
files = /etc/supervisor/supervisord.conf.d/*.conf
三、实例
1. 使用supervisor管理celery
安装celery
$ pip install celery
然后进入supervisord文件夹,创建celeryd_worker.conf文件并进行如下配置:
////
[program:celeryworker] # 这个是进程的名字,随意起
command=celery -A bookstore worker -l info # 要运行的命令
directory=/home/fhx/git_test1/bookstore # 运行命令的目录
numprocs=1 #进程数
stdout_logfile=/var/log/supervisor/info.log # 设置info log的路径
stderr_logfile=/var/log/supervisor/err.log # 设置err log的路径
autostart=true #自动启动
autorestart=true #自动重启
startsecs=10 #启动延迟10s
stopwaitsecs = 600 #进程停止等待时间
priority=15 #优先级
2. 使用supervisor管理flower, celery的web项目
安装flower
$ pip install flower
然后进入supervisord文件夹,创建supervisord_celery_flower.ini文件并进行如下配置:
////
[program:pyvip-celery-flower]
command=flower -A celery_tasks.app --port=5555 --basic_auth=pyvip:qwe123 #账号密码
directory=/home/pyvip/DjCe_proj
environment=PATH="/home/pyvip/.virtualenvs/Cel_proj/bin"
stdout_logfile=/home/pyvip/DjCe_proj/logs/celery_flower_info.log
stderr_logfile=/home/pyvip/DjCe_proj/logs/celery_flower_err.log
autostart=true
autorestart=true
startsecs=10
stopwaitsecs=60
priority=996
3. web项目
1.使用supervisor管理web项目
安装web项目依赖包
$ pip install -r pages.txt
然后进入supervisord文件夹,创建supervisord_web_xxx.ini文件并进行如下配置:
////
[program:pyvip-celery-flower]
command=python main.py runserver
directory=/home/pyvip/xxx
environment=PATH="/home/pyvip/.virtualenvs/Cel_proj/bin"
stdout_logfile=/var/log/web_xxx/info.log
stderr_logfile=/var/log/web_xxx/err.log
autostart=true
autorestart=true
startsecs=10
stopwaitsecs=60
priority=996
等等,grpc,当然不用这个,docker也是一种选则
四、supervisorctrl操作
- 更新新的配置到supervisord
supervisorctl update - 重新启动配置中的所有程序
supervisorctl reload - 启动某个进程(program_name=你配置中写的程序名称)
supervisorctl start program_name - 查看正在守候的进程
supervisorctl - 停止某一进程 (program_name=你配置中写的程序名称)
pervisorctl stop program_name - 重启某一进程 (program_name=你配置中写的程序名称)
supervisorctl restart program_name - 停止全部进程
supervisorctl stop all