Hexo到Hugo

HexoHugo 是两款类似的静态页面博客框架,其中 Hexo 是基于 Node.js 的,并且需要安装额外的依赖,而 Hugo 虽然是用 Go 语言写的,但提供有预编译好的可执行二进制文件,即不需要安装额外的依赖,最重要的是 Hugo 的编译速度要比 Hexo 快很多

下载 hugo.exe 后,将其保存到一个目录下并配置环境变量,即可开始使用

因为 Hexo 和 Hugo 都只是负责编译生成静态页面,所以 Hugo 也可采用 Hexo 的博客搭建思路

本地环境

创建一个 Hugo 工程目录

1
hugo new site xxx

xxx 目录下将会创建出以下子目录

1
2
3
4
5
6
7
├── archetypes   #时间等字段原型,类似Hexo的scaffolds
├── content      #存放文章、关于等其他页面的.md文件,注意文章要保存在/post子目录下
├── layouts      
├── static       #存放图片之类的媒体资源,例如图片保存在/images/子目录下
├── themes       
├── data         
└── config.toml  

设置主题,例如选用 LoveIt

1
2
cd themes
git clone https://github.com/dillonzq/LoveIt.git

然后在 config.toml 中设置

1
theme = "LoveIt"

注意 LoveIt 主题使用了 sass,需要 hugo_extended 版本来进行编译,可在同样的地址 下载

写文章、本地测试

1
hugo new posts/my-first-post.md

测试地址 http://localhost:1313/

1
hugo server -D

生成静态页面,保存在 public 目录下

1
hugo -D

服务器环境

站点目录,即存放静态文件的路径 /hugo/www ,裸库路径为 /hugo/repo/hugo.git

1
2
mkdir -p /hugo/www
mkdir /hugo/repo

进入 /hugo/repo 并创建 hugo.git 裸库

1
2
cd /hugo/repo
git init --bare hugo.git

配置 hooks

1
vim /hugo/repo/hugo.git/hooks/post-receive
1
2
#!/bin/bash
git --work-tree=/hugo/www --git-dir=/hugo/repo/hugo.git checkout -f
1
chmod +x /hugo/repo/hugo.git/hooks/post-receive

配置 Nginx

1
vim /usr/local/nginx/conf/nginx.conf
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
server {
    listen 80;
    server_name www.52dadudu.com;
    root /hugo/www;
    index index.html;
    access_log /tmp/logs/hugo.access.log;
    error_page 404  /404.html;
    location = /404.html {
        root /hugo/www;
    }
}

加载 Nginx 配置文件

1
/usr/local/nginx/sbin/nginx -s reload

从本地部署到服务器

首先进入 public 目录并初始化 git 仓库

1
2
cd public
git init

然后连接到服务器的裸库,只需要第一次推送的时候连接一下

1
git remote add origin ssh://root@www.52dadudu.com/hugo/repo/hugo.git           

生成静态页面,同样为了防止冲突,可以先清空一下 public 中的静态页面,注意不要删除到了.git

1
hugo -D

最后 add,commit,push 推送三连

1
2
3
git add -A
git commit -m "push remote"
git push origin master

以上内容是玉山整理的笔记,如有错误还请指出