2016-01-23 82 views
0

我在Ubuntu 13.04服务器上设置了一个基于django的项目。 我可以在uWSGI配置文件上使用“root”权限运行此项目。 但是,当我尝试使用标准“www数据”用户运行此我得到:权限被拒绝uWSGI问题

chdir(): Permission denied [uwsgi.c line 1851] 

我已经改变了我的项目,其相应的virtualenv文件夹“www数据”,但再次出现此错误的所有权!

我uWSGI的配置文件是这样的:

[uwsgi] 

# Django-related settings 
# the base directory (full path) 
chdir   = /root/my_project 
# Django's wsgi file 
module   = my_project.wsgi 
# the virtualenv (full path) 
home   = /root/.virtualenvs/my_project 

# process-related settings 
# master 
master   = true 
# maximum number of worker processes 
processes  = 10 
# the socket (use the full path to be safe 
socket   = unix:///root/my_project/server.uwsgi.sock 

chmod-socket = 666 
uid  = www-data 
gid  = www-data 


# clear environment on exit 
vacuum   = true 

有什么错?

+0

是另一个用户“chown”的目录吗? –

+0

不!亲爱的@AaronLelevier。 我带来的uWSGI文件中提到的所有文件夹都是由用户www-data使用chown由www-data组成的 – AbdolHosein

回答

1

chdirhomesocket指令都使用/root/作为他们的基地,这是root user'svhome目录,因此其他用户不能访问那里。也可能有一些SELinux限制。

尝试创建为您的项目,即在/home//home/www-data)一个单独的文件夹,请确保您www-data用户可以访问它和权利,移动你的项目和VENV那里,然后更改设置(包括socket)和再试一次。

+0

关于/ root /你是对的,但我已经给出了应用文件夹及其子内容的权限。 – AbdolHosein

+0

从'/ root'本身开始?因为如果你已经赋予了'/ root/my_project'的权限并且忘记了'/ root'本身,那么这将无济于事。另外,正如我所说的,有一个令人讨厌的东西 - SELinux上下文等,所以我的建议保持不变 - 移动到限制较少的文件夹,之后您可能还想尝试禁用SELinux以查看是否有帮助。 – Nikita

+0

我检查了我的容器文件夹,它也拥有适当的权限... – AbdolHosein