WithdewHua 960 words 2 minutes to read

本文最后更新于2019-04-17,若有失效或者错误内容请留言或者通过其他方式联系我,尽可能及时更新。


前言

无意间看到了 hugo_encryptor 这个项目,为 Hugo 带来文章加密功能,虽然静态博客的加密可能不是那么完美,不过感觉这个也能拦住不少人了。所以尝试了一下,引入到自己博客中来。

效果演示

安装

安装过程项目里面作者介绍的挺清楚的,我直接搬过来好了(原地址)。我自己开始在 Windows 中尝试了,但是出现了各种乱七八糟的问题,边谷歌边解决但是最终还是有问题,我太菜了 😔 。没办法,只好进 Linux 解决了,虽然不熟却也没有遇到奇奇怪怪的问题。

环境依赖:Python3

  1. 下载 Hugo-Encryptor 并安装其所需要的依赖库

    $ git clone https://github.com/Li4n0/hugo_encryptor.git
    $ cd hugo-encryptor
    $ pip install -r requirements.txt
    
  2. hugo-encryptor.py放入博客根目录

    $ cp hugo-encryptor.py /path/to/your/blog/hugo-encryptor.py
    
  3. shortcodes/hugo-encryptor.html放入博客shortcodes目录

    $ mkdir -p /path/to/your/blog/layouts/shortcodes
    $ cp shortcodes/hugo-encryptor.html /path/to/your/blog/layouts/shortcodes/hugo-encryptor.html
    

使用方法

  1. 使用 hugo-encryptor标签包裹需要加密文章内容

  2. 生成网站

    rm -rf public #删除原来的 public 文件夹
    hugo #重新生成 public 文件夹
    
  3. 进行加密

    python3 hugo-encryptor.py
    

至此,文章就已经被加密好了,然后把 public 文件夹内容上传到服务器就好了。

部署到 Netlify

因为我的博客托管在 Netlify 上,并没有用自己的服务器,所以想直接弄到 Netlify 上。仔细看了 Netlify 的文档,自己稍微折腾了一下弄成功了。

我在 Netlify 上选择的 Build imgeUbuntu Xenial 16.04 (default)

放置依赖下载文件及设定版本号

  1. 博客项目根目录下放置runtime.txt文件,内容设定为 Python 版本号,例如 3.7

  2. 项目根目录下放置 requirements.txt 文件,内容为

    pycrypto==2.6.1
    beautifulsoup4==4.7.1
    lxml==4.3.3
    
  3. Netlify UI 中,在 Settings -> Build & deploy -> Build environment variables 中添加新的变量 RUBY_VERSION,值为 2.6.2(该 image 默认值,减少依赖下载)。

放置 pyhtml 文件

该步骤和上面安装 2、3 步相同,将对应文件放置在对应位置即可。

创建 deploy.sh 脚本

  1. 在博客项目根目录下创建该脚本,内容为

    #!/bin/bash
    rm -rf public #删除 public 文件夹
    hugo #生成 public
    python3 hugo-encryptor.py #加密文章
    npm run algolia #更新 algolia 数据
    

    algolia 为博客提供搜索(详见采用 ALGOLIA 作为 HUGO 搜索方案),顺便一起加在里面,每次部署都更新索引数据。

  2. 在 Netlify UI 中,找到 Settings -> Build & deploy -> Continuous Deployment -> Build settings -> Build command,将其改为 ./deploy.sh

这样,每次都能自动部署了。当然了,除了这种办法,还可以手动拖动 public 文件夹至 Netlify UI 的 Deploy 页面或者通过 Netlify-cli 直接部署 public 文件夹内容。相比较而言,上面的方式更加省事、自动化。

问题及解决

在部署成功后,发现表格内容被 hugo-encryptor 标签包裹之后无法正常解析。因此,我提交了一个 issue,最终在作者的帮助下找到了解决方法。如遇到相同情况的可以参考一下。


本文链接:https://withdewhua.space/2019/04/17/encrypt-content-in-hugo/
本作品由 WithdewHua 采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可,转载请注明出处。