使用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的引用链接插件
npm install hexo-backlink
Add backlink: true in _config.yml:
图片上传到图床
使用Markdown写作,插入图片是个问题,可选择本地引用或者上传图片到图床。
PicGo是一个用于快速上传图片并获取图片 URL 链接的工具,我平时写内容喜欢使用vscode,可在商店中安装对应的插件
使用GitHub Pages部署
自定义域名
使用GitHub Pages部署默认使用的域名为yjll.github.io
,我这里使用自定义域名www.yjll.blog
创建名为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接口,方便使用自己服务器部署。
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