简介

Hugo是用Go语言写成的静态网站生成器,由于是使用Go语言写成,安装部署非常便利,只需要下载binary文件即可,非常方便。 此外Hugo具有很高的效率,能够以很快的速度生成静态网页。此外Hugo开发者社区活跃,更新快速,有大量的漂亮的主题。

安装

首先到Github官方repo的releases下载最新binary,解压文件后将hugo binary文件放到系统的PATH目录下。

1
2
tar zxvf hugo_0.58.1_Linux-64bit.tar.gz -C hugo_0.58.1
sudo cp hugo_0.58.1/hugo /usr/local/bin

写博客

1
2
3
hugo new site myblog
cd myblog
hugo new posts/hello.md

这样就在myblog/content/posts下生成了hello.md文件。然后可以通过以下命令启动测试:

1
hugo server -D #启动hugo web server,对draft文件渲染

hugo server启动后,默认情况下可以通过http://localhost:1313端口访问该博客,查看博客效果。其他更多操作可以参考Hugo quick-start

主题

Hugo themes提供了很多漂亮的主题,例如本博客使用的是Even:

1
2
3
cd myblog
git clone https://github.com/olOwOlo/hugo-theme-even themes/even
cp themes/even/exampleSite/config.toml .

config.toml文件中提供了多种控制项,其内容配置可以参考Hugo config

部署

提交更新

Hugo官方提供了自动化部署功能,可以通过自动化脚本实现自动上传内容到服务器:

1
2
3
4
5
6
7
8
#!/bin/sh
USER=my-user #服务器登录账户
HOST=my-server.com #服务器域名或地址
DIR=/path/to/myblog #服务器上的博客目录

hugo && rsync -avz --delete public/ ${USER}@${HOST}:~/${DIR}

exit 0

将以上内容写入到myblog/deploy.sh中,然后chmod 777 deploy.sh,在每次需要向服务器更新博客内容时,只需要运行./deploy.sh

更新在线内容

服务器端的web server推荐使用Caddy,若服务端的网站目录为/var/www/liuyaqiu.io,将以下内容写入到脚本~/blog-update.sh中,chmod 777 blog-update.sh,需要更新网站内容时,只需要运行./blog-update.sh:

1
2
3
4
5
6
7
sudo systemctl stop caddy
web_dir=/var/www/example.com
sudo rm -rf $web_dir
sudo cp -R /path/to/myblog $web_dir
sudo chown -R www-data:www-data $web_dir
sudo chmod -R 555 $web_dir
sudo systemctl start caddy