使用 virtualenv 或 venv 而不是 pipenv 时如何配置 supervisor 中的启动命令?

书上使用pipenv配置是

[program:bluelog]
command=pipenv run gunicorn -w 4 wsgi.app
...

virtualenv虚拟环境下如何配置呢?

http://2dogz.cn/blog/article/3/
可以参考我写的这篇博客 写一个shell脚本去启动就可以了

1 Like

除了楼上的方法,也可以这样写(假设你的虚拟环境文件夹名是 venv):

[program:bluelog]
command=venv/bin/gunicorn -w 4 wsgi:app
directory=/home/greyli/bluelog
(venv)****@****$ sudo supervisorctl
equipment                        FATAL     can't find command 'venv/bin/python'

貌似这样写不行

equipment                        FATAL     command at '/home/jarvy/equipment/bash.sh' is not executable

脚本单独执行可以,在supervisor中还是启动不了。

1.确保supervisor配置正确了

[program:app]
command=/home/ubuntu/app/bash.sh
directory=/home/ubuntu/app
user=root
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true

其中配置的参数跟你的实际情况而定~

2.修改一下你的shell脚本的权限

chmod 777 /home/jarvy/equipment/bash.sh

试一下吧~

刚刚写错了,应该是这样:command=venv/bin/gunicorn -w 4 wsgi:app

反复试验过,貌似还是有些问题。
“wsgi.app”写错了,中间是“:”。
command要写绝对路径

改成下面这样就可以了。

[program:bluelog]
command=/home/greyli/bluelog/venv/bin/gunicorn -w 4 wsgi:app
directory=/home/greyli/bluelog
1 Like

你的方案可以,之前确实是文件权限的问题。