Apache mod_wsgi、Django 和项目文件权限

Apache mod_wsgi、Django 和项目文件权限

我正在生产中设置一个 Django 项目。但我正在处理一个奇怪的权限问题。首先,这是我的项目结构:

项目

  • 项目

    • 设置.py
    • urls.py
    • wsgi.py
    • ...
    • 应用
      • 应用程序1
      • 应用2
      • 应用3
  • 日志

  • 静止的
  • ...

部署时,网站将无法运行,除非www-数据是 的用户所有者或组所有者项目/项目/应用程序(递归)是否775或者550权限。它有一个 HTTP 500 错误

奇怪的是,当我将权限更改为777,并删除所有所有权www-数据,我仍然遇到相同的 HTTP 500 错误。

常见的错误是 ImportError。它无法导入某些模块/应用程序。

现在我的问题是为什么会这样?至少在获得许可的情况下777,它应该运行,因为 www-data 无论如何都会对该文件夹拥有完全权限项目/项目/应用程序

Apache(www-数据)只想拥有该文件夹(无论是在组级别还是用户级别)

使用 Apache 部署时,如何设置 django 项目文件夹的权限?

答案1

首先,HTTP 500 错误是一种常见错误,可能由多种因素引起,我怀疑这是否是权限问题,因为可能存在 403 禁止错误。您能否将错误日志添加到问题中。

当您的文件无法导入其他文件或应用程序时,python/django 中就会出现导入错误。当 python 程序的工作目录与项目内导入的其他文件不兼容时,也可能导致这种情况。

比如如果我在 src/common/libraries/a.py 中有一个文件,在 src/common/helpers/a_helper.py 中有一个文件

在 a.py 中从 src.common.helper.a_helper 导入 *

当我从 mypro/src/common/libraries 运行上述 a.py 时,它会显示导入错误,而从 mypro/ 目录运行相同的程序将成功运行该程序。

Django 文档非常有用,请阅读以下内容:https://docs.djangoproject.com/en/1.10/howto/deployment/wsgi/modwsgi/

相关内容