Hexo网站的自动化部署
Hexo + GitHub 建站
这个视频讲解的很明晰了,就不重复造轮子了。文字版 点这里
GitHub Actions 自动化
- 新建workflows脚本
在.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
34name: Build and Deploy
on: [push]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout 🛎️
uses: actions/checkout@v3 # If you're using actions/checkout@v3 you must set persist-credentials to false in most cases for the deployment to work correctly.
with:
persist-credentials: false
- name: Install and Build 🔧 # This example project is built using npm and outputs the result to the 'build' folder. Replace with the commands required to build your project, or remove this step entirely if your site is pre-built.
run: |
npm install
npm run build
env:
CI: false
- name: Deploy 🚀 #部署至github-pages所对应仓库
uses: JamesIves/github-pages-deploy-action@releases/v4
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BRANCH: master # The branch the action should deploy to.
FOLDER: public # The folder the action should deploy.
- name: Docker deploy #通过git部署至自己的服务器对应文件地址
uses: easingthemes/ssh-deploy@main
env:
SSH_PRIVATE_KEY: ${{ secrets.ACCESS_TOKEN }} # ACCESS_TOKEN 为加密参数,于仓库的 Settings-Secrets and variables-Acitons 页面点击 New repository secret 进行添加,确保添加的名称与这里的对应上
ARGS: "-rlgoDzvc -i --delete"
SOURCE: "public/"
REMOTE_HOST: ${{ secrets.REMOTE_HOST }} # REMOTE_HOST 为加密参数
REMOTE_USER: ${{ secrets.REMOTE_USER }} # REMOTE_USER 为加密参数
TARGET: ${{ secrets.TARGET }} # TARGET 为加密参数
此处用到了三个脚本,有兴趣的可自行了解:
Hexo的Docker部署
网站文件夹所在根目录下新建文件
Dockerfile
,输入内容:1
2
3
4
5
6
7
8
9
10# 基于 node 镜像构建
FROM node:latest
# 复制 hexo 目录下的数据至容器的 data 目录
COPY hexo /data/
# 安装 http-server 模块
RUN npm install -g http-server
# 指定工作目录
WORKDIR /data
# 运行容器时执行的shell命令:启动 http 服务指向 /data 目录,默认端口为 5000
CMD [ "http-server","-p","5000" ]上传此文件和网站文件至自己服务器
注:文件的构建方式有多种,此处只是用最简单的方式进行实现,具体构建方式可自行探索。更多指令详见 Dockerfile。连接服务器并进入文件所在地址
1
cd /存放文件的地址/
执行Docker镜像构建指令
1
docker build -t hexo(镜像名称可自定义)
使用构建的镜像创建容器
1
docker run -d -p 5000:5000 -v /root/website_data/hexo:/data --name my-hexo-blog --restart=always hexo
其中:
-p
指定访问端口
-v
映射程序运行数据的文件地址,容器内文件地址不好找,最好自定义文件路径
--name
定义容器名称
--restart=always
跟随docker程序自启动
hexo
自构建镜像名称
添加域名访问
使用代理软件对指定端口以域名形式进行访问,具体操作见这篇文章:Nginx的安装与配置
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 InAction!
评论