为什么wsgi应用程序运行在“/”中?

a3y*_*3y3 5 python apache mod-wsgi

我刚刚使用 mod_wsgi 在 Apache2 上部署了 Flask 应用程序。然而,为了成功做到这一点,我必须修改我的应用程序代码。更改是针对目录的。我发现通过运行os.getcwd()os.listdir(cwd),应用程序正在根目录 (/) 中运行。

因此,我无法使用任何相对路径名来访问文件。例如,早些时候我使用open("../secrets/app_secrets.json"). 由于我的应用程序现在在 / 中运行,因此我被迫使用绝对路径名来识别文件。它可以工作,但非常不方便,因为绝对文件路径与我的服务器、本地目录和使用我的工作的其他人不同。所以我想我的问题是:

  • 为什么这是一个好的设计?我无法想象为什么 mod_wsgi 从“/”运行 python 文件。事实上,它是如何做到这一点的超出了我的范围。
  • 有什么方法可以改变这种行为并使 python 文件从特定文件夹运行,以便我可以使用相对路径?

编辑:好的,我已经阅读了 Graham 在评论中提供的链接(https://modwsgi.readthedocs.io/en/develop/user-guides/application-issues.html#application-working-directory),但我可以'不要思考这个问题:为什么使用相对路径是一个坏主意?我的应用程序使用大量文件 IO,我讨厌将所有内容都放在绝对路径中:我有很多环境,并且修改单个环境中的代码将不容易在其他环境中复制。除了使用绝对路径之外,是否没有简单的方法可以做到这一点?