我正在部署一个django应用程序,它失败了,因为由于某种原因,gunicorn.socket文件没有创建,即使在添加nginx之前,它工作得很好,所以我在互联网上搜索,找到了这个answer,其中的家伙说,这是虚拟环境的原因,但我相信一定有一种方法可以绕过它使用venv的权利?
我从nginx得到的日志:
connect()to unix:/run/gunicorn.sock failed(11 1:Connection refused)while connecting to upstream,
来自Gunicorn的错误:
gunicorn.socket:失败,结果为“service-start-limit-hit”。
我100%确定问题出在gunicorn上,而不是nginx的设置上,因为我检查了gunicorn文件,它不存在。
3条答案
按热度按时间7rtdyuoh1#
我不了解django,但我假设这个问题与我今天看到的试图在我的一台服务器上启动MySQL服务的问题类似(参见这里:https://stackoverflow.com/a/55141733/708323)。
基本上,“start-limit-hit”消息是一个转移注意力的信息--服务启动尝试多次启动您提供的服务名称,如果在第五次尝试失败后(对我来说,至少)它在第六次尝试时崩溃,并显示“start-limit-hit”。(可能是/var/log/syslog),以查看阻止服务在尝试1-5时启动的真实的错误。
zbdgwd5y2#
检查您是否对gunicorn.service文件中提到的用户/组具有适当的权限。
我有同样的问题,我的gunicorn文件有:
字符串
我更改了gunicorn服务文件、socket文件和django目录的权限,它工作得很好。
型
希望,这有帮助。
balp4ylt3#
我的问题与Django设置有关
由于错误的环境变量值,Django使用了sqlite3而不是pgsql
所以我的建议是从/var/log/syslog开始,尝试在没有nginx的情况下启动gunicorn
类似
gunicorn --workers=2 'zt.wsgi' -b 0.0.0.0:8000
的东西,然后在8000端口上检查您的网站URL