django supervisorctl始终报告错误:错误(无此文件)

6kkfgxo0  于 2023-03-24  发布在  Go
关注(0)|答案(4)|浏览(95)

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

我不知道为什么它会报告这样的错误。我可以在www.example.com上运行我的django项目runserver.so但是文件丢失了吗?

pqwbnv8z

pqwbnv8z1#

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=之后的第一个。
您提到在运行sudo时使用-E标志来保留环境变量,但supervisor不需要sudo

jhiyze9q

jhiyze9q2#

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

[program:my-task]
user=this-user-didnt-exist
hwazgwia

hwazgwia3#

在我的例子中,问题是我的conf.d/mysite.conf文件中有command="/bin/python3.8 main.py"
当我删除""时,它起作用了。

yqhsw0fo

yqhsw0fo4#

我也遇到了这个问题,试图通过supervisord运行shell脚本,你需要使用/bin/sh myscript.sh

command=/bin/sh myscript.sh

相关问题