绑定(bind):没有这样的文件或目录 [core/socket.c 第230行]

19

我正在尝试创建一个在uWSGI中运行的Unix套接字应用程序...但无法创建套接字,请检查以下设置。

[uwsgi]
chdir           = /home/deploy/webapps/domain/virtualenv/app
module          = app.wsgi
home            = /home/deploy/webapps/domain/virtualenv
master          = true
processes       = 10
uwsgi-socket    = /var/run/uwsgi/app/%n/socket # if i'm tried /tmp/name.socket if work!
vacuum          = true

# Error codes:
The -s/--socket option is missing and stdin is not a socket.
bind(): No such file or directory [core/socket.c line 230]
我已经授予权限给这个目录并创建了它,但它不起作用。

我已经给这个目录授权并创建了它,但是它无法正常工作。

mkdir -p /var/run/uwsgi/app
sudo chown -R deploy:root /var/run/uwsgi/app
sudo chmod 777 /var/run/uwsgi/app

这对此问题来说将是相同的解决方案。谢谢。


1
目录是 /var/run/uwsgi/app/%n 而不是 /var/run/uwsgi/app,%n 是配置文件的名称,因此请确保该目录存在。 - roberto
2个回答

7

您需要做两件事:

mkdir /var/run/app-uwsgi

并且

sudo chown -R www-data:www-data /var/run/app-uwsgi

在Ubuntu中,重启后该目录会丢失,需要重新创建。


1
这是因为错误的目录,但是问题并不在于以www-data身份运行(基于提供的配置),而是由于他们尝试将套接字放在不同的路径中。 - Paul Becotte
1
第一个建议毫无意义,看起来像是打字错误。您能澄清一下吗? - Bernd Wechner

6

我在 Docker 容器内运行 uwsgi 时遇到了同样的错误,所以我需要先创建目录。

我需要将以下命令添加到我的 Dockerfile 的末尾:

RUN mkdir -p /var/www/todobackend

我的情况下,服务器的设置是docker-compose.yml文件的一部分:
      - uwsgi
      - "--socket /var/www/todobackend/todobackend.sock"
      - "--chmod-socket=666"
      - "--module todobackend.wsgi"
      - "--master"
      - "--die-on-term"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接