Seven's blog

你不会找到路,除非你敢于迷路

0%

部署 Hexo 博客到 VPS

前言

Hexo + Github Pages 本是绝顶搭配, 无奈最近国内访问速度越来越慢, 实在不忍直视.

虽说国内也有 Gitee.com 和 Coding.net 提供类似服务, 但都不完全免费, 甚至还有广告, 不在考虑范围之内.

最终只好忍痛买了个云主机, 开启博客搬迁之旅.

准备

  1. 公网可以访问的 VPS 一台;
  2. 可以正常使用的 Hexo 博客;

我这边的服务器环境是 Ubuntu 18.04 LTS 64 位, 下面的操作也都以此为准.

步骤

登录服务器

使用自己熟悉的工具登录服务器, Unix 环境下直接使用 ssh 命令 ssh user@host 即可, 其中 “user” 代表服务器用户名, “host” 代表服务器 ip.

安装 git 和 nginx

在服务器上运行以下命令即可:

1
2
sudo apt-get update
sudo apt-get install git-core nginx

配置 nginx

  1. 创建 “/var/www/hexo” 目录用于存放博客静态文件:

    1
    mkdir /var/www/hexo
  2. 修改 nginx 配置文件:

    1
    vim /etc/nginx/conf.d/hexo.conf

    写入以下内容:

    1
    2
    3
    4
    server {
    listen 80;
    root /var/www/hexo;
    }
  3. 重启 nginx:

    1
    sudo systemctl restart nginx.service

配置 Git Hooks

  1. 创建 Git 裸仓库:

    1
    2
    3
    mkdir ~/hexo.git
    cd ~/hexo.git
    git init --bare

    其中: hexo.git 作为远程 git 仓库, 用于接收本地 Hexo 生成并 push 过来的静态文件.

  2. 配置 Hooks 脚本:

    1
    vim ./hooks/post-receive

    填入以下内容:

    1
    2
    3
    4
    #!/bin/bash

    rm -rf /var/www/hexo
    git clone /root/hexo.git /var/www/hexo

    给脚本赋予可执行权限:

    1
    chmod +x ./hooks/post-receive

    post-receive 脚本会在 hexo.git 仓库接收到 push 动作时执行. 脚本执行的命令也很简单, 先删除 /var/www/hexo 目录, 再将 hexo.git 中最新的博客文件复制到 /var/www/hexo 目录下.

部署 Hexo 博客

回到本地, 修改 Hexo 配置文件 “_config.yml”:

1
2
3
deploy:
typr: git
repo: user@host:hexo.git

其中: “user” 代表远程主机用户名, “host” 代表远程主机 ip, “hexo.git” 是我们刚才在服务器建立的仓库.

本地执行命令:

1
2
hexo clean
hexo g -d

即可将博客发布至服务器.

发布完成后, 通过 “http://host“ 接口访问博客.

That’s All.

微信公众号
扫码关注, 一起进步!