连接到上游时,connect() 到 unix:///tmp/uwsgi_dev.sock 失败(2:没有这样的文件或目录)

连接到上游时,connect() 到 unix:///tmp/uwsgi_dev.sock 失败(2:没有这样的文件或目录)

我尝试使用 uwsgi+nginx 运行 django 应用程序,并且 cronjob 命令是,
* * * * * /usr/local/bin/lockrun --lockfile /path/to/lock_file -- uwsgi --close-on-exec -s /path/to/socket_file --chdir /path/to/project/folder/ --pp .. -w project_name.wsgi -C666 -p 32 -H /path/to/virtualenv/ 1>> /path/to/success_log 2>> /path/to/error_log
但我在 nginx 错误日志文件中收到错误,如下所示:
019/11/20 06:45:21 [crit] 1986#1986: *2 connect() 到 unix:///path/to/socket_file 失败(2:没有这样的文件或目录),同时连接到上游,客户端: xxx.xxx.xx.xxx,服务器:localhost,请求:“GET /auth/status/ HTTP/1.1”,上游:“uwsgi://unix:///path/to/socket_file:”,主机:“xx .xxx.xx.xxx”,引荐来源:“http://xx.xxx.xx.xxx/
nginx 配置文件和 cronjob 命令中的 socket_file 路径是相同的,任何人都可以知道我在哪里犯了错误???

答案1

如果套接字不存在且未创建日志文件,则您的 uwsgi 服务器不会启动。
由于 /path/to/error_log 不存在,我假设 cron 在该机器上不工作或存在权限问题(至少 crontab 的所有者无法写入日志文件)。

无论如何,通常你不会启动这样的服务器。好的,如果不稳定等情况,它会在一分钟内重新启动,但这样的问题应该以其他方式解决。最好制作一个 systemd 单元,您可以将服务配置为在它脱离时自动重新启动,而不需要 lockrun 等。

尝试使用用户(crontab 所有者)启动服务器

uwsgi --close-on-exec -s /path/to/socket_file --chdir /path/to/project/folder/ --pp .. -w project_name.wsgi -C666 -p 32 -H /path/to/virtualenv/

在外壳上看看你会得到什么。或者检查您的邮箱(mail),可能您会发现一些来自 cron 的错误消息...

相关内容