在 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