Errno 13使用Gunicorn的许可被拒绝

时间:2015-01-31 06:57:51

标签: gunicorn

我正在使用 gunicorn nginx 在Digital Ocean上运行django。 Gunicorn为django和nginx提供静态文件。

通过网站上传文件后,我无法保存到/ home目录中的文件夹。我得到[Errno 13] Permission denied.

请问,如何使网络服务器能够读取/ home下任意文件夹的写入权限?

4 个答案:

答案 0 :(得分:7)

这一切都取决于您的应用程序正在运行的用户。

如果您检查ps aux | grep gunicorn Gunicorn服务器正在运行您的应用的用户,则可以相应地更改chmodchown权限。

ls -lash会显示哪个用户当前只拥有该文件夹以及您尝试写入的文件夹的权限:

4.0K drwxrwx--- 4 username username 4.0K Dec 9 14:11 uploads

然后,您可以使用它来检查是否存在任何问题。

有关更改所有权和权限的一些文档

http://linux.die.net/man/1/chmod

http://linux.die.net/man/1/chown

我建议您非常小心到磁盘上的哪些位置,您可以访问Web服务器进行读/写操作。这可能会产生巨大的安全隐患。

答案 1 :(得分:1)

好吧,我在这个问题上工作了一个多星期,最后能够计算出来。 请关注digital ocean中的链接,但他们没有查明包含

的重要问题
  1. 连接上游时没有上游
  2. * 4 connect()到unix:/myproject.sock连接上游时失败(13:权限被拒绝)
  3. gunicorn OSError:[Errno 1]不允许操作
  4. * 1 connect()到unix:/tmp/myproject.sock失败(2:没有这样的文件或目录)

    <强>等

  5. 对于Nginx和Gunicorn之间的连接,这些问题基本上是权限问题。 为简单起见,我建议 为您创建的每个文件/项目/ python程序提供相同的nginx权限

    要解决所有问题,请遵循以下方法: 首先是:

    1. 以root用户身份登录系统
    2. 创建/ home / nginx目录。
    3. 执行此操作后,请按照website 进行操作,直到创建一个Upstart脚本。
    4. 运行chown -R nginx:nginx / home / nginx
    5. 对于upstart脚本,请在最后一行执行以下更改: exec gunicorn - 工作者3 - 绑定unix:myproject.sock -u nginx -g nginx wsgi 不要添加-m权限,因为它弄乱了套接字。从Gunicorn的文档中,当-m是默认值时,python会找出最佳权限
    6. 启动upstart脚本
    7. 现在转到/etc/nginx/nginx.conf文件。 转到服务器模块并附加:

      location / {         包括proxy_params;         proxy_pass http&lt;&gt;:&lt;&gt; // unix:/home/nginx/myproject.sock;         } 删除&lt;&gt; 请勿在此处关注digitalocean aricle

      1. 现在重新启动nginx服务器,你很高兴。

答案 2 :(得分:0)

更改/ home的所有者

查看实际所有者$ ls -l /

f1  f2  f3  f4  f5  f6      f6      f8  f9              f10
-   rwx r-x r-x 1   root    root    209 Mar 30 17:41    /home

https://www.garron.me/en/go2linux/ls-file-permissions.html
f2文件或目录的所有者权限
f3对文件或目录的组权限
f4其他人对该文件或目录的权限
f6拥有文件或目录的用户

递归更改文件夹所有者sudo chown -R ubuntu /home/用非root用户替换ubuntu

良好做法

  • 使用子目录home/ubuntu作为服务器目录,ubuntu文件夹将ubuntu用户作为所有者。
  • 为所有用户设置所有者权限。您的论坛和其他用户为只读sudo chmod -R 744 /home/ubuntu/

答案 3 :(得分:0)

就我而言,这是非常简单的事情,它产生了类似的错误,我只需要检查控制Gunicorn的用户和控制NGINX的用户,他们是否具有不同的权限。