10

我用 uwsgi、supervisor 和 nginx 部署我的 django 项目。但是我已经在 /etc/supervisord.conf 中添加了我上面的程序。

[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 是我的项目名称。

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

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'

我不知道为什么它会报告那样的错误。我可以用runserver运行我的django项目。所以文件丢失了什么?

4

3 回答 3

8

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

为作业创建文件时,命令行应该可以作为 shell 命令执行,并且不应依赖给定 shell 的内部命令。例如,我遇到了一个开头的问题:

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

但是source是内置的bash。我需要将其更改为:

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

这样,supervisor 可以找到并运行的可执行文件是bash.

在您的情况下,似乎 uwsgi 应该是command=.

您提到您在-E运行时使用标志来保留环境变量sudo,但主管不需要sudo

于 2017-08-17T02:09:37.367 回答
1

就我而言,问题在于command="/bin/python3.8 main.py"我的 conf.d/mysite.conf 文件中有问题。

当我删除它时"",它起作用了。

于 2021-08-18T18:12:21.223 回答
1

我遇到了这个错误消息,但在我的情况下,我在我的作业定义中指定了一个尚未在服务器上创建的用户。

[program:my-task]
user=this-user-didnt-exist
于 2021-03-13T14:07:24.897 回答