我的Django应用程序与我的守护进程my named pipe通信时出现问题:
Django application -> garage_gate_pipe -> python daemon
守护进程由gate
用户使用,我假设www-data
负责运行我的Django应用程序(应用程序由uwsgi
驱动),因此我将www-data
添加到gate
组:
$ sudo -u www-data groups
gate www-data
我已经为garage_gate_pipe
授予了适当的访问权限:
prw-rw---- 1 gate gate 0 Jul 2 17:55 garage_gate_pipe
很遗憾,由于权限错误,它无法工作:
[Errno 13] Permission denied: '/path/to/garage_gate_pipe'
错误代码如下:
pipeout = open(settings.PIPE_NAME, 'w')
这很奇怪,因为在命令行中一切正常:
echo -n 'Open' | sudo -u www-data tee ./garage_gate_pipe
我决定检查哪个用户负责管理Django应用程序,所以我更改了pipe的权限:
sudo chmod 666 garage_gate_pipe
并决定从shell调用whoami
命令,将其发送到我的命名管道,并在我的python守护进程中打印它:
os.system("whoami > /home/gate/garage_gate/gate_gpio/garage_gate_pipe")
pipeout = open(settings.PIPE_NAME, 'w')
一切正常。。。你知道吗
我的守护进程的输出是:
'www-data
'
这很奇怪,因为我的uwsgi Django应用程序似乎是由www-data
用户运行的。你知道吗
我的命名管道garage_gate_pipe
具有良好的访问权限,因此我可以从命令行对其进行写入,但从django应用程序,除非我为others
添加写入权限,否则它无法工作。。。你知道吗
知道我可以做些什么来让这个解决方案使用660
的garage_gate_pipe
权限吗?你知道吗
我在
/etc/rc.local
脚本中更改了uwsgi命令中的gid
参数,该参数负责在启动时启动服务器:现在起作用了。你知道吗
相关问题 更多 >
编程相关推荐