Errno 13使用Gunicorn的许可被拒绝

Kho*_*Phi 6 gunicorn

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

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

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

Joe*_*rty 7

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

如果您检查ps aux | grep gunicornGunicorn服务器正在运行您的应用程序的用户,那么您可以相应地更改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服务器以进行读/写.这可能会产生巨大的安全隐患.


小智 5

好吧,我研究这个问题一个多星期了,终于弄清楚。请点击来自数字海洋的链接,但他们没有指出重要的问题,其中包括

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

    ETC。

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

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

  1. 以root用户登录系统
  2. 创建 /home/nginx 目录。
  3. 完成此操作后,按照网站进行操作 ,直到创建 Upstart 脚本。
  4. 运行 chown -R nginx:nginx /home/nginx
  5. 对于 upstart 脚本,请在最后一行进行以下更改: exec Gunicorn --workers 3 --bind unix:myproject.sock -u nginx -g nginx wsgi 不要添加 -m 权限,因为它会弄乱套接字。从Gunicorn的文档来看,当-m默认时,python会找出最佳权限
  6. 启动新贵脚本
  7. 现在只需转到 /etc/nginx/nginx.conf 文件。转到服务器模块并附加:

    位置 / { 包括 proxy_params; proxy_pass http<>:<>//unix:/home/nginx/myproject.sock; } REMOVE <> 从这里开始不要关注 digitalocean 文章

    1. 现在重新启动 nginx 服务器就可以了。