在我的Mac上,我在VMware中运行Windows Server 2016。在那里我在vagrant / Virtual Box中运行Ubuntu。在那里我试图用nginx / uwsgi在docker容器中运行django应用程序。
uwsgi未能开始:
[uWSGI] getting INI configuration from /opt/django/CAPgraph/uwsgi.ini
*** Starting uWSGI 2.0.15 (64bit) on [Thu Aug 17 20:01:23 2017] ***
compiled with version: 6.4.0 20170805 on 17 August 2017 06:10:50
os: Linux-3.13.0-128-generic #177-Ubuntu SMP Tue Aug 8 11:40:23 UTC 2017
nodename: 37db4344b5ae
machine: x86_64
clock source: unix
pcre jit disabled
detected number of CPU cores: 1
current working directory: /
detected binary path: /usr/local/bin/uwsgi
uWSGI running as root, you can use --uid/--gid/--chroot options
*** WARNING: you are running uWSGI as root !!! (use the --uid flag) ***
chdir() to /opt/django/CAPgraph/
your memory page size is 4096 bytes
detected max file descriptor number: 524288
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
bind(): Operation not permitted [core/socket.c line 230]
在VMware中,该文件夹设置为具有写入权限的所有人共享。它安装在778的vagrant VM中,在docker容器中也是777.我可以在所有3个地方的dir中创建文件。但似乎uwsgi无法创建套接字。
我尝试了一个简短的python脚本作为来自vagrant的测试,并且无法创建套接字:
vagrant@vagrant-ubuntu-trusty-64:/vagrant$ python -c "import socket as s; sock = s.socket(s.AF_UNIX); sock.bind('/vagrant/app.sock')"
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/lib/python2.7/socket.py", line 224, in meth
return getattr(self._sock,name)(*args)
socket.error: [Errno 1] Operation not permitted
任何人都知道如何解决这个问题?
更新:我将dir更改为/ tmp,我可以使用我的python脚本创建套接字,但仍然uwsgi失败并出现相同的错误。
更新2:我使用我的python脚本在/ tmp中创建了套接字,将其修改为777但仍然从uwsgi获得相同的错误。
答案 0 :(得分:2)
使用/vagrant
以外的任何其他文件夹。我通常使用/ home / vagrant
问题是/vagrant
与普通文件夹不同。如果你执行命令mount | grep vagrant
,你会发现它使用了一个vboxfs
文件系统,由于某些原因它与docker不能很好地融合