服务端配置

创建初始化一个仓库

1
2
mkdir -p /home/hexo
git init --bare blog.git

–bare 是 git init 命令的一个选项,用于创建一个裸仓库。

进入 blog.git 下的 hooks 目录

1
cd /home/hexo/blog.git/hooks

新建 post-receive 并写入命令

1
vim post-receive

要写入的内容如下:

1
git --work-tree=/home/nginx/html/ --git-dir=/home/hexo/blog.git checkout -f

保存后赋予可执行权限

1
chmod +x post-receive

nginx配置

在这里我使用的是docker部署nginx

  1. 拉取镜像
    1
    docker pull nginx
  2. 创建挂载目录
    1
    2
    3
    4
    # 创建挂载目录
    mkdir -p /home/nginx/conf
    mkdir -p /home/nginx/log
    mkdir -p /home/nginx/html
  3. 复制镜像配置文件
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    # 生成容器
    docker run --name nginx -p 9001:80 -d nginx
    # 将容器nginx.conf文件复制到宿主机
    docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf
    # 将容器conf.d文件夹下内容复制到宿主机
    docker cp nginx:/etc/nginx/conf.d /home/nginx/conf/conf.d
    # 将容器中的html文件夹复制到宿主机
    docker cp nginx:/usr/share/nginx/html /home/nginx/
    # 直接执行docker rm nginx或者以容器id方式关闭容器
    # 找到nginx对应的容器id
    docker ps -a
    # 关闭该容器
    docker stop nginx
    # 删除该容器
    docker rm nginx
    # 删除正在运行的nginx容器
    docker rm -f nginx
  4. 运行容器
    1
    2
    3
    4
    5
    6
    7
    8
    docker run \
    -p 80:80 \
    --name nginx \
    -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
    -v /home/nginx/conf/conf.d:/etc/nginx/conf.d \
    -v /home/nginx/log:/var/log/nginx \
    -v /home/nginx/html:/usr/share/nginx/html \
    -d nginx:latest
    1
    2
    3
    4
    5
    6
    7
    8
    # 配置ssl版本,自行下载对应文件
    docker run -d -p 80:80 -p 443:443 --name nginx \
    -v /home/nginx/ssl:/etc/nginx/ssl \
    -v /home/nginx/log:/var/log/nginx \
    -v /home/nginx/html:/usr/share/nginx/html \
    -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
    -v /home/nginx/conf/conf.d:/etc/nginx/conf.d \
    nginx
  5. nginx配置
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    server {
    listen 80;
    server_name localhost;

    location / {
    root /usr/share/nginx/html;
    index index.html index.htm;
    try_files $uri $uri/ =404;
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    root /usr/share/nginx/html;
    }
    }
    ssl配置
    1
    2
    3
    4
    5
    6
    7
    server {
    listen 443 ssl;
    server_name yourdomain.com;
    ssl_certificate /etc/nginx/ssl/yourdomain.com.pem;
    ssl_certificate_key /etc/nginx/ssl/yourdomain.com.key;
    ssl_session_timeout 5m;
    }

客户端配置

配置node环境

推荐使用nvm

nvm常用指令:

1
2
3
4
5
6
7
8
9
10
11
12
# 查看已安装的node版本
nvm list
# 查看可下载的 nodejs 版本
nvm list available
# 安装node版本
nvm install 12.18.3
# 切换node版本
nvm use 12.1
# 设置默认node版本
nvm alias default 12.18.3
# 卸载node
nvm uninstall 12.18.3

镜像源配置

1
2
nvm npm_mirror https://npmmirror.com/mirrors/npm/
nvm node_mirror https://npmmirror.com/mirrors/node/

安装hexo

1
2
3
4
5
npm install -g hexo-cli

npm install --save hexo-deployer-git

hexo init blog

修改远程配置

1
2
3
4
deploy:
- type: git
repo: root@your server ip:/home/hexo/blog.git
branch: master

完成

1
2
3
4
# 生成静态文件
hexo g
# 部署远程
hexo d

过程中可能需要输入服务器密码等操作.