前几个月部署过使用虚拟环境的项目,今天把笔记补上!
使用supervisor部署普通项目中的celery和虚拟环境中的celery在command的写法上有些许不同,其他地方都差不多,话不多说,直接上配置。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| [program:celery]
;运行目录下执行命令,这里写绝对路径,需要虚拟环境中的celery启动服务
command=/home/syz/E_mall/bin/celery worker -A e_mall.celery -l info
;指定运行目录,表示项目的根目录,用来调用e_mall.celery
directory=/home/syz/E_mall/e_mall/
;启动设置
autostart=true ;当supervisor启动时,程序将会自动启动
autorestart=true ;自动重启
startsecs=10
numprocs=1 ;初始的进程
user=syz ;脚本运行的用户
;输出日志
stdout_logfile=/var/log/celery/celery_worker.log
stdout_logfile_maxbytes=10MB ;默认最大50M
stdout_logfile_backups=10 ;默认日志文件备份数,默认为10
;错误日志
redirect_stderr=false ;为true表示禁止监听错误
stderr_logfile=/var/log/celery/celery_worker_err.log
stderr_logfile_maxbytes=10MB
stderr_logfile_backups=10
;停止信号,默认TERM
;中断:INT (类似于Ctrl+C)(kill -INT pid),退出后会将写文件或日志(推荐)
;终止:TERM (kill -TERM pid)
;挂起:HUP (kill -HUP pid),注意与Ctrl+Z/kill -stop pid不同
;从容停止:QUIT (kill -QUIT pid)
stopsignal=INT
|
上述配置完毕后,注意需要对日志文件赋予权限,否则会报无法分配celery的错误,其实也就是无法写入日志文件。
解决方法:
chown -R syz:syz /var/log/celery
-R表示递归执行文件,目的是将该文件归属给syz这个用户名(这里是我的,改成你自己的),或者用户组。
区别于chmod,chmod是对文件的读,写,执行设置权限,而chown是对文件所属的对象赋予权限。
在我看来,chmod的目的对象是文件本身,而chown的目的对象其实是用户或组。chown要比chmod更加外层,只有符合chown的该用户,再进一步判断是否对文件拥有读,写,执行权限。