【问题标题】:uWSGI error: "Error opening file for reading: Permission denied'uWSGI 错误:“打开文件读取时出错:权限被拒绝”
【发布时间】:2013-05-23 01:20:12
【问题描述】:

我遇到了与此处描述的完全相同的错误:

uWSGI Server log…permission denied to read file...which file?

uWSGI 在日志中不断向我抛出“打开文件读取时出错:权限被拒绝”。

但是,我使用传统的 init.d 脚本启动 uWSGI。因此,上述文章中描述的修复不适用于我。谁能帮我解决这个问题?我相信它与这个错误有关(如上面的链接中所述): https://bugs.launchpad.net/ubuntu/+source/libjpeg-turbo/+bug/1031718

提前谢谢你。

【问题讨论】:

    标签: python django nginx uwsgi


    【解决方案1】:

    检查运行 uWSGI 进程的用户是否对它需要读取的文件具有读取权限。您可以通过 grepping ps 轻松查看正在运行 uwsgi 的用户:

    ps aux | grep uwsgi
    

    在第一列中,您会在最右边的列中看到正在运行该命令的用户。

    【讨论】:

    • 问题是/proc/self/auxv,它正在被libjpeg-turbo8 读取。这是一个特定于 Ubuntu 的问题,原因是 /proc/self/auxv 归启动该进程的用户所有,如果您更改 uid 意味着您将无法再读取它。
    【解决方案2】:

    修复本质上是相同的,并且是由相同的问题引起的。您不能在 uWSGI 配置文件中使用 uidgid 选项,因为这样做会阻止进程读取 /proc/self/auxv,从而导致您看到的消息。

    解决问题的一种方法是使用 sudo 调用 uwsgi,例如

    sudo -u uwsgiuser -g uwsgiuser /path/to/uwsgi
    

    而不是直接执行。

    【讨论】:

    • 感谢您的回复。 @alastair 由于我没有与暴发户一起运行 uWSGI,我怎样才能实现相同的 setuid/setgid 修复?当我发出您提到的 sudo 命令时,我得到以下响应: open("/var/log/uwsgi/app/baruwa.log"): Permission denied [utils.c line 246]
    • 请阅读错误信息!它会告诉您问题所在(您无权创建该日志文件)。您需要修复权限以便这样做,或者您需要将路径更改为您可以写入的位置。
    • 似乎以root 以外的任何用户的身份调用 uwsgi 涉及一些相当深入的配置更改(比权限更深)。我相信在创建/删除目录时需要修改整个启动脚本。你对我应该如何解决这个问题有任何其他建议吗?如果您认为这会有所帮助,我可以发布我的启动脚本。在我所有的权限修改结束时,我最终得到:failjob-working-directory: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
    • 在这一点上,我认为,如果您急需这个,最好聘请一位经验丰富的 UNIX 系统管理员来帮助您。您可能会考虑的另一个选择是使用不同的 WSGI 主机; gunicorn相当不错。
    猜你喜欢
    • 1970-01-01
    • 2014-02-02
    • 1970-01-01
    • 2021-02-17
    • 1970-01-01
    • 2017-04-11
    • 2014-05-08
    • 2019-07-07
    • 1970-01-01
    相关资源
    最近更新 更多