1. Hexo 是什么? Hexo 是一个快速、简洁且高效的博客框架。可以使用 Markdown 写文章,方便高效,无需后台服务,静态资源即可展示。搭配 github pages 或者个人云服务器都可以部署。
2. 安装
3. 初始化 hexo init <project-name>cd <project-name> npm install
4. 主要 api
创建新文章
例如创建 foo 页,在source/_posts/
目录下就会多出一个foo.md
文件,就在那里面写文章
例如在source/about/
下创建bar.md
文件
hexo new page --path about/bar "bar"
生成静态文件
项目根目录会多出一个public
文件夹,就是编译过后的html
静态文件
清除缓存
把上面生成的public
文件夹删掉
启动服务
默认情况下,http://localhost:4000
访问
5. 安装心仪的主题
hexo themes
这么多主题,总有一款适合你
本文选择的主题hexo-theme-fluid
npm install --save hexo-theme-fluid
然后在博客目录下创建 _config.fluid.yml,将主题的 _config.yml 内容复制进去
修改 Hexo 博客目录中的 _config.yml:
theme: fluid # 指定主题 language: zh -CN # 指定语言,会影响主题显示的语言,按需修改
6. 部署 6.1 github pages 部署
在你的 github 上创建一个名为<你的github用户名>.github.io
的仓库
本地生成 ssh 密钥对
ssh-keygen -t rsa -C "用户名@example.com "
在仓库Settings > Deploy Keys
中添加公钥内容,并勾选访问权限,最后确定
在仓库Settings > Secrets
中添加私钥,key 为DEPLOY_KEY
,内容为私钥内容
项目_config.yml
配置文件和主题配置文件配置deploy
字段
deploy: type: git repo: <你的github仓库 SSH下载链接> branch: gh-pages
.github/workflows/deploy.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 name: Hexo Github Pages Deploy on: [push ]jobs: build: runs-on: ubuntu-latest name: A job to deploy blog. steps: - name: Checkout uses: actions/checkout@v1 with: submodules: true - name: Cache node modules uses: actions/cache@v1 id: cache with: path: node_modules key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} restore-keys: | ${{ runner.os }}-node- - name: Install Dependencies if: steps.cache.outputs.cache-hit != 'true' run: npm ci - name: Deploy id: deploy uses: sma11black/hexo-action@v1.0.3 with: deploy_key: ${{ secrets.DEPLOY_KEY }} user_name: <你的github用户名> user_email: <你的github邮箱> commit_msg: ${{ github.event.head_commit.message }} - name: Get the output run: | echo "${{ steps.deploy.outputs.notify }} "
使用git
提交代码,在仓库Actions
里可以看到 yml 配置文件的自动执行日志,执行结束后,不出意外的话,浏览器里访问https://<你的github用户名>.github.io
,可以看到你的博客了!
6.2 docker 容器部署在个人云服务器
在 github 仓库Settings > Secrets
中添加你的阿里云镜像容器服务账号,key 为ALIYUN_DOCKER_USERNAME
,dockerhub 等也可以,这里以阿里云镜像容器服务为例
在 github 仓库Settings > Secrets
中添加你的阿里云镜像容器服务密码,key 为ALIYUN_DOCKER_PASSWORD
Dockerfile
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 FROM alpine:3.15 AS baseENV NODE_ENV=production \ APP_PATH=/usr/share/nginx/hexoWORKDIR $APP_PATH RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories RUN apk add --no-cache --update nodejs=16.14.0-r0 yarn=1.22.17-r0 FROM base AS installCOPY . ./ RUN yarn install RUN yarn run build FROM base AS resultCOPY --from=install $APP_PATH /public . FROM nginx:alpineWORKDIR /usr/share/nginx/hexo ADD nginx.conf /etc/nginx/conf.d/default.conf COPY --from=result /usr/share/nginx/hexo . EXPOSE 80
.github/workflows/deploy.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 name: deploy ci on: push: branches: [main ] jobs: build: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 - name: build and push docker image run: | echo ${{ secrets.ALIYUN_DOCKER_PASSWORD }} | docker login registry.cn-hangzhou.aliyuncs.com --username ${{ secrets.ALIYUN_DOCKER_USERNAME }} --password-stdin docker image build -t hexo-blog . docker tag hexo-blog registry.cn-hangzhou.aliyuncs.com/<命名空间>/<镜像仓库名>:latest docker push registry.cn-hangzhou.aliyuncs.com/<命名空间>/<镜像仓库名>:latest docker logout
使用 docker 容器可视化管理,比如portainer
等,拉取刚才制作的镜像,然后运行容器。或者登录云服务器,手动拉取镜像再运行容器
docker pull registry.cn-hangzhou.aliyuncs.com/<命名空间>/<镜像仓库名>:latest docker container run -d -p <你的服务器宿主机向外暴露的端口>:80 --name hexo-blog registry.cn-hangzhou.aliyuncs.com/<命名空间>/<镜像仓库名>:latest
不出意外,浏览器里访问http:<你的ip或者配好的域名>:<端口>
,可以看到你的博客了!
7. 参考资料
Hexo 官方文档
Hexo Fluid 主题用户手册
Hexo Github Action