在本地搭建调试博客没有问题后,就需要发布了,本文简述怎么将Hugo搭建的博客部署到Github

部署Hugo博客

Github Pages又分为两种方式,一种是通过User/Organization Pages ,另一种是Project Pages ,两者的区别可以看这里User, Organization, and Project Pages,使用个人页面 User Pages相对简单一些

部署到Github个人页面

  1. 在Github创建一个仓库,例如名字叫blog,可以是私有的,这个仓库用来存放网站内容和源文件

  2. 再创建一个名称为<username>.github.io的仓库,必须是public,不能是private,参考https://github.com/hexojs/hexo/issues/3427,username为GitHub用户名,这个仓库用于存放最终发布的网站内容

  3. 进入本地网站目录

    cd <YOUR PROJECT>
    
  4. 关联远程blog仓库

    git remote add origin git@github.com:jeshs/blog.git
    
  5. 将本地网站全部内容推送到远程blog仓库

    git push -u origin master
    
  6. 确保本地网站正常,hugo server运行后在本地打开localhost:1313检查网站效果和内容,注意hugo server这个命令不会构建草稿,所以如果有草稿需要发布,将文章中的draft设置为false

  7. 关闭本地Hugo服务器Ctrl+C,然后删除本地网站目录下的public文件夹

  8. 创建public子模块,注意下面是一行命令,不是两行

    git submodule add -b master git@github.com:<USERNAME>/<USERNAME>.github.io.git public
    
  9. 然后就可以执行hugo命令,此命令会自动将网站静态内容生成到public文件夹,然后提交到远程blog仓库

    hugo
    cd public
    git status
    git add .
    git commit -m "first commit"
    git push -u orgin master
    

过一会就可以打开<username>.github.io查看网站了

注意:本地网站是关联的blog仓库,本地网站下的public文件夹是以子模块的形式关联的github.io仓库,他们是相对独立的

自动部署脚本

将以上步骤添加到自动执行脚本中deploy.sh,脚本commit提交信息会使用执行时的时间,将脚本放到网站项目路径下,写完博客后,双击运行即可自动部署发布

#!/bin/bash

echo -e "\033[0;32mDeploying updates to GitHub...\033[0m"

# Build the project.
hugo # if using a theme, replace with `hugo -t <YOURTHEME>`

# Go To Public folder
cd public
# Add changes to git.
git add .

# Commit changes.
msg="rebuilding site `date`"
if [ $# -eq 1 ]
  then msg="$1"
fi
git commit -m "$msg"

# Push source and build repos.
git push origin master

# Come Back up to the Project Root
cd ..

给网站添加评论

Hugo支持Disqus评论,只需要在配置文件config.toml中设置disqusShortname = "disqusShortname",如果没有disqusShortname,需要到Disqus官网注册一个账号,注册后添加一个网站,添加时会让填一个shortname,Disqus会生成一个shortname.disqus.com的网址,另外还需要把config.toml中的baseURL地址,也就是公网访问地址添加到Diqus的信任网址中,类似于互相添加信任

参考

hosting-on-github

给Hugo添加disqus评论服务