我使用的二进制文件本身的标志尝试(--uid www数据--gid www数据),并在我的配置设置它:uWSGI皇帝被拒绝的权限,除非根
uid = www-data
gid = www-data
但套接字总是与我正在使用的帐户一起产生,所以我得到了来自nginx的权限被拒绝错误。
任何人都知道这是为什么?
附加问题:有谁知道nginx和uwsgi有用户设置?我有另一台服务器一直在工作,它没有在任何配置文件中设置uid或gid,但是一切都在使用www-data。
ANSWER显然,如果你从终端启动服务,就像我试图做的那样,即(user @ server:〜/ $ uwsgi --uid www-data --gid www-data),它会一直开始并运行与调用它的用户,这解释了为什么我觉得它不服从我的uid和gid标志。当我如下所述运行它时,它确实以正确的用户/组www数据运行。
修订
我开始uWSGI正如你所说, “sudo的服务uwsgi启动” 应该被触发这个文件(/etc/init/uwsgi.conf):
description "uWSGI"
start on runlevel [2345]
stop on runlevel [06]
respawn
env UWSGI=/home/ccadmin/.local/bin/uwsgi
env LOGTO=/var/log/uwsgi/emperor.log
exec $UWSGI --master --emperor /etc/uwsgi/vassals --die-on-term --uid www-data --gid www-data --logto $LOGTO
不过这个配置我emperor.log文件说:
execvp(): Permission denied [core/emperor.c line 1481]
[emperor] binary path: /home/ccadmin/.local/bin/uwsgi
[emperor] is the uwsgi binary in your system PATH ?
TIME STAMP - [emperor] curse the uwsgi instance cc_uwsgi.ini (pid: ####)
TIME STAMP - [emperor] removed uwsgi instance cc_uwsgi.ini
如果我改变--uid和--gid根,那么这一切工作正常。它必须是一些简单的许可,但是对于linux来说是新手,我发现很难查明。
奇怪的是,它问我在我的系统路径中的uwsgi二进制文件...它应该在那里吗?因为我在/ etc/environment中将/home/ccadmin/.local/bin添加到了我的系统路径中。它不应该在那里吗?还是应该一直到二进制文件? (即将/home/ccadmin/.local/bin/uwsgi insetad添加到/ bin)
Uwsgi应该在您的配置中为uid/gid和uid/gid参数设置过程 - 用于http套接字和unix套接字。如果你通过启动脚本来管理你的uwsgi守护进程,这应该是自动的。你如何开始/停止uwsgi? – kchan 2015-03-25 05:47:23
对于nginx,您可以使用“user”指令来设置它将运行的用户/组。用户的默认值(来自源代码)是“nobody”,但如果您从包中安装,它将特定于您的系统(如www-data)。请参阅:http://nginx.org/en/docs/ngx_core_module.html#user – kchan 2015-03-25 05:49:01