Heroku:如何将静态站点生成与 Python/Flask 集成

Heroku: How to integrate static site generation with Python / Flask

我是 运行 一个托管在 Heroku 上的 Flask 网站 https://www.example.org,附带一个静态博客,https://www.example.org/blog 我是通过 Hugo 生成的,我正在寻找这个过程更有效率

根据我的研究,出于 SEO 原因,最好将博客放在子目录中。

我目前维护博客的工作流程如下:

  1. 在 Hugo 中编写 Markdown post
  2. 检查以在 Hugo 和 Flask 应用程序之间协调 css 等
  3. 生成静态 html 代码
  4. 修复 link 错误等
  5. 将静态输出从 hugo/public 文件夹移动到 flask_app/static/blog 文件夹
  6. 我正在使用 whitenoise 访问静态文件夹
  7. 部署到 Heroku --> https://www.example.org/blog 通过 Flask 服务

我意识到通过 Flask 提供静态内容的计算效率较低(这是可以接受的),但这现在不是主要问题。

但我确定一定有更好的方法?!

您可以 运行 网络服务器(例如 nginx)将您的流量路由到 Flask 网站或静态博客内容,而不是依赖 Flask 来提供您的静态博客内容。

用户请求 -> https://example.org -> nginx -> flask

用户请求 -> https://example.org/blog -> nginx -> 静态内容(托管在 nginx 服务器或其他位置)

您可以通过添加 Heroku Buildpack. There are third party open-source buildpacks for Hugo available on Github, e.g. roperzh/heroku-buildpack-hugo. Alternatively, you could use a Git hook 来自动执行第 3 步,以便在每次提交任何更改时构建博客。

您可以通过设置 baseURLpublishDir Hugo configuration settings.

来避免第 4 步和第 5 步

我不确定第 2 步需要什么,但您的整体设置(6. 和 7.)似乎是合理的。