AirBnB知识库:使用上下文路由进行部署

时间:2018-02-09 09:28:53

标签: python flask gunicorn airbnb

这篇文章与部署AirBnBs knowledge repo app。

有关

我们在服务器的子路径上托管我们的知识库 - 例如https://aws.our-server-uri.com/knowledge-repo,我遇到了加载静态内容和重定向的问题。 总之,我无法让knowledge_repo Flask应用程序知道应用程序正在子路径上运行。

问题

我遇到的第一个问题是让gunicorn知道上下文路由,以便成功找到静态文件,这些文件现在位于/knowledge-repo/static/...而不是相对于根URL。我在运行SCRIPT_NAME之前将/knowledge-repo环境变量设置为knowledge_repo --repo . deploy,从而解决了这个问题。 我将此包含在内,以供参考我尝试过的内容以及更好解决方案的潜在建议。

第二个问题尚未解决,它将我们的上下文路由动态地添加到Web应用程序生成的重定向URL。例如,顶部导航栏中的Home按钮会将用户重定向到根网址(在我的示例中为https://aws.our-server-uri.com/)。我需要使用flask应用程序来了解我的上下文路由,并将/knowledge-repo/附加到页面根目录中以生成所有链接。

我尝试了什么:

我想避免分支和修改此回购,因此我专注于不涉及编辑Flask app html的方法,例如设置<base>标记。

  • 我在部署之前设置了SCRIPT_NAME环境变量,但无济于事。
  • 我一直在设置config.py中的一些变量,我在运行--config config.py时使用knowledge_repo deploy标记传递了这些变量,但似乎无法找到任何可行的技巧

1 个答案:

答案 0 :(得分:1)

我做了一些代码更改以使其正常工作。 我做的代码更改是,

  1. 为静态内容提供网址前缀。
  2. 将URL前缀添加到烧瓶中的蓝图。
  3. 用户url_for与jinja模板访问HTML和javascript的路线。
  4. Here是代码更改。