许吉友 - 运维

博客搭建

在 CentOS7 服务器上搭建 NodeJS 环境:

$ sudo curl --silent --location https://rpm.nodesource.com/setup_12.x | bash -
$ sudo yum install -y nodejs
$ sudo npm install -g cnpm

这里需要一个 NodeJS 的二进制工具,Github 地址是:https://github.com/mixu/markdown-styles

这个工具用于将 markdown 文件转换成 html 文件。

安装工具:

$ sudo cnpm install -g markdown-styles

流程

可以在本地用自己喜欢的编辑器写 markdown,图片使用相对路径即可,写完后直接 git push 上传到 git 仓库。

在服务器上,可以配置一个 CI/CD 工具,比如 gitlab-runner 、Jenkins 等工具,或者直接写个定时任务,定时 git pull

将一个文件夹内的 markdown 文件全部转换成 html 文件:

$ generate-md --layout /opt/source/my-layout --input /opt/source/blog-data/ --output /opt/source/output

--input 指定 markdown 文件的源目录,--output 指定了 html 的输出目录。

--layout 指定了转换样式,我这里是自定义的样式,代码在 my-layout 中,支持手机端。

也可以使用工具自带的样式,比如:generate-md --layout github,自带的样式列表请看 markdown-styles 的介绍。

关于如何自定义样式,markdown-styles 中也有介绍。

将这个命令和 git pull 写进脚本里,通过 CI/CD 或定时任务来执行。

然后 Nginx 代理一下 html 文件目录即可,比如:

location / {
    root /opt/source/output;
    index README.html;
    add_header Access-Control-Allow-Origin *;
}

这样博客就搭建好了。写完博客后,只需 git push 即可。

脚本

$ vim update.sh

脚本内容如下:

#!/usr/bin/env bash

cd /opt/source/blog-data
git pull
generate-md --layout /opt/source/my-layout --input /opt/source/blog-data/ --output /opt/source/output

赋予执行权限:

$ chmod +x update.sh

我这里使用定时任务,不用 CI/CD 工具了。在 /etc/crontab 中加入:

*/60  *  *  *  * root  /opt/source/update.sh

每 60 分钟执行一次。使之生效:

$ sudo systemctl status crond

自动构建

关于 Jenkins 自动构建可以看: Git提交触发Jenkins自动构建.md

关于 Gitlab-runner 自动构建可以看: Gitlab-Runner安装部署.md