这篇文章与部署 AirBnB 有关 knowledge repo应用程序。
我们在服务器的子路径上托管我们的知识库 - 例如 https://aws.our-server-uri.com/knowledge-repo
我遇到了加载静态内容和重定向的问题。
总之,我无法让 knowledge_repo Flask 应用知道该应用正在子路径上运行。
问题
我遇到的第一个问题是让 gunicorn 知道上下文路由以便成功定位静态文件,这些文件现在位于 /knowledge-repo/static/...
。而不是相对于根 url。我通过设置 SCRIPT_NAME
解决了这个问题环境变量为 /knowledge-repo
运行前 knowledge_repo --repo . deploy
. 我将其包括在内是为了引用我尝试过的内容以及潜在的更好解决方案建议。
第二个 Unresolved 问题是动态地将我们的上下文路由添加到由网络应用程序生成的重定向 URL。例如,Home
顶部导航栏中的按钮将用户重定向到根 url(在我们的示例中为 https://aws.our-server-uri.com/
)。我需要 flask 应用程序了解我的上下文路由并附加 /knowledge-repo/
生成的所有链接的页面根目录。
我尝试过的:
我想避免 fork 和修改这个 repo,所以我专注于不涉及编辑 Flask 应用程序 html 的方法,例如设置 <base>
标签。
- 我已经设置了
SCRIPT_NAME
部署前的环境变量,但无济于事。 - 我尝试在
config.py
中设置一些变量我使用--config config.py
通过了运行时标记knowledge_repo deploy
,但似乎找不到任何可以解决问题的方法。
最佳答案
我做了一些代码更改以使其工作:
- 为静态内容提供 URL 前缀。
- 为 flask 中的蓝图添加 URL 前缀。
- 使用 jinja 模板访问 HTML 和 JavaScript 路径的用户 URL_for。
Here是代码更改。
关于python - AirBnB 知识库 : Deploying using a context route,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48702628/