使用Hexo搭建静态博客

一直使用Hexo搭建博客,这里记录一下从安装环境到部署的过程。

安装nodejs环境

我这里以CentOS为例

先删除老版本node

sudo yum remove -y nodejs npm

可根据NodeSource安装想要的版本

curl -fsSL https://rpm.nodesource.com/setup_lts.x | sudo bash -

sudo yum install -y nodejs

安装Hexo并初始化项目

npm install -g hexo-cli
hexo init blog

类别插件

npm install hexo-auto-category –save

可根据目录名称自动归类

auto_category:
 enable: true
 depth: 

git 部署插件

npm install hexo-deployer-git –save

deploy:
- type: git
  repo: https://xxx@github.com/yjll/yjll.github.io.git
  branch: master 

固定地址插件

Hexo在生成博客文章链接时,默认是按照年、月、日、标题格式来生成的,使用hexo-abbrlink插件可生成固定地址
npm install hexo-abbrlink –save

permalink: post/:abbrlink.html
abbrlink:
  alg: crc32  # 算法:crc16(default) and crc32
  rep: hex    # 进制:dec(default) and hex

支持Obsidian的引用链接插件

hexo-backlink

npm install hexo-backlink

Add backlink: true in _config.yml:

图片上传到图床

使用Markdown写作,插入图片是个问题,可选择本地引用或者上传图片到图床。

PicGo是一个用于快速上传图片并获取图片 URL 链接的工具,我平时写内容喜欢使用vscode,可在商店中安装对应的插件

PicGo_vscode

使用GitHub Pages部署

参考创建 GitHub Pages 站点

自定义域名

使用GitHub Pages部署默认使用的域名为yjll.github.io,我这里使用自定义域名www.yjll.blog
github_page_domain

创建名为CNAME的文件,写入www.yjll.blog,将该文件放入source目录下。

使用Github的Action进行部署

push后git会自动帮助我们部署项目

.github/workflows目录下创建部署脚本

	name: BlogCI

on: [push]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - name: Download Source file
      uses: actions/checkout@v2

    - name: Prepare Node env
      uses: actions/setup-node@v1
      with:
        node-version: "12.x"

    - name: Set Env
      run: |
        git config --global user.name '***' # github用户名
        git config --global user.email '***' # github邮箱
    - name: Hexo
      run: |
        rm package-lock.json
        npm i -g hexo-cli
        npm i
        hexo clean && hexo g && hexo d
使用 Github webhooks 自动部署

Github提供webhooks功能,可以在代码推送后回调我们配置的web接口,方便使用自己服务器部署。

20200430115330


from flask import Flask
from flask import request
import subprocess


app = Flask(__name__)

@app.route('/',methods=['POST'])
def hello_world():

    subprocess.Popen('./deployment.sh',shell=True)

    return 'Hello, World!'

if __name__ == '__main__':
    app.run(port=10080)
#!/bin/bash
cd /root/Blog
git pull
rm -rf /var/www/blog/source/_posts/*
cp /root/Blog/public/* /var/www/blog/source/_posts/
cd /var/www/blog/
hexo clean
hexo g

使用Hexo搭建静态博客
https://blog.yjll.blog/post/48dba841.html
作者
简斋
发布于
2020年9月25日
许可协议