2017-02-24 115 views
1

我用uwsgi,supervisor和nginx部署我的django项目。 但我在/etc/supervisord.conf中添加了类似上面的程序。supervisorctl总是报告错误:错误(没有这样的文件)

[program:JZAssist] 
command=-E uwsgi --ini /home/work/xxxx/uwsgi.ini 
directory=/home/work/xxxx 
startsecs=0 
stopwaitsecs=0 
autostart=true 
autorestart=true 

和我uwsgi.ini内容是:

[uwsgi] 
socket = :8000 
chdir = /home/work/xxxx 
module = xxxx.wsgi 
master = true 
processes = 4 
vacuum = true 

xxxx是我的项目名称。

我在cmd中运行supervisorctl -c /etc/supervisord.conf restart all。 它显示的内容

xxxx: ERROR (no such file) 

/tmp/supervisord.log部分:

2017-02-24 23:31:41,433 INFO gave up: JZAssist entered FATAL state,   too many start retries too quickly 
2017-02-24 23:52:29,940 WARN Failed to clean up '/tmp/JZAssist-stderr---supervisor-goPZyS.log' 
2017-02-24 23:52:29,940 WARN Failed to clean up '/tmp/JZAssist-stdout---supervisor-WtfJcp.log' 
2017-02-24 23:52:57,535 WARN Failed to clean up '/tmp/JZAssist-stderr---supervisor-goPZyS.log' 
2017-02-24 23:52:57,535 WARN Failed to clean up '/tmp/JZAssist-stdout---supervisor-WtfJcp.log' 
2017-02-24 23:52:57,541 INFO RPC interface 'supervisor' initialized 
2017-02-24 23:52:57,541 CRIT Server 'unix_http_server' running without any HTTP authentication checking 
2017-02-24 23:52:57,542 INFO daemonizing the supervisord process 
2017-02-24 23:52:57,543 CRIT could not write pidfile /tmp/supervisord.pid 
2017-02-24 23:52:58,544 INFO spawnerr: can't find command '-E' 
2017-02-24 23:52:59,546 INFO spawnerr: can't find command '-E' 
2017-02-25 00:46:59,234 WARN Failed to clean up '/tmp/JZAssist-stderr---supervisor-goPZyS.log' 
2017-02-25 00:46:59,234 WARN Failed to clean up '/tmp/JZAssist-stdout---supervisor-WtfJcp.log' 

我不知道为什么它会报告错误,如that.I可以运行的runserver我的Django项目。那么文件丢失了什么?

+0

什么是命令第一'-E'元素? – Antwane

+0

使用-E在使用SUDO时保留环境变量 – xyxc

+0

您的日志文件的内容是什么以及监督员的日志级别是什么? – chaos

回答

1

在您的command=行中,您指定程序运行为-E,该管理程序找不到要执行的程序。

为作业创建文件时,命令行应该作为shell命令执行,并且不应该依赖于给定shell的内部命令。例如,我有一个麻烦与启动:

source /path/to/python/virtual/environment/bin/activate && ...

source是一个bash内建命令。我需要改变它来阅读:

bash -c 'source /path/to/python/virtual/environment/bin/activate && ...

这种方式,主管可以找到并运行可执行文件是bash

在你的情况下,看起来uwsgi应该是command=之后的第一个东西。

您提到,您使用的-E标志当您运行sudo保存环境变量,但主管将不需要0​​

+0

YE,这有点“混乱”的错误,特别是因为日志文件中没有解释正确的东西。 – Hvisage

相关问题