将hugo博客部署到github

本文

主要介绍了如何将hugo创建的博客站点部署到github。

版本 说明
0.1 初版发布
0.2 修改issue.sh脚本

背景

  • 主机: Thinkpad S2
  • 系统: Deepin GNU/Linux 15.11
  • 内核: Debian 6.3.0-18+deb9u1
  • hugo版本: hugo 0.58

参考

git的安装与介绍

请参考我的另一篇帖子git的安装

部署过程

在github创建仓库

首先登录 github官网,如果没有账户需先用邮箱注册一个账户,然后点击 Repositories [new] ,新建仓库,新建页面如下。

  • 1位置是用户名
  • 2位置是仓库名
  • 3位置是选择公开还是私有
  • 4位置点击创建仓库
github新建仓库
在这里要创建两个仓库,一个私有仓库,名字自定义,可以为“my\_blog”,用来存放博客站点文件;另一个公共仓库,名字为 **username.github.io** ,记住,一定为 **username.github.io** (username替换为你的用户名),后面启用 **github page** 时会解释为什么如此命名。

克隆仓库

复制仓库的http链接,使用 “git clone http…” 命令,将创建的仓库克隆到本地,如果是新仓库的话,会提示你 似乎你克隆了一个空仓库 ,可以不用管。

启用github page功能

GitHub Pages 是一个静态网站托管服务,简单说就是他可以实现创建个人网页。我们需要给名为 username.github.io 的仓库启用github page功能,需要以下几步:

  • 首先空仓库是不能启用page功能的,你需要添加一个文件(无所谓什么文件,可以写个readme),通过以下git命令,上传到远程仓库。这里可能需要输入账户密码,可以使用 "git config –global credential.helper store" ,避免重复输入账户密码。
1
2
3
git add .
git commit -m "first push"
git push
  • 打开github,进入名为 username.github.io 的仓库,然后点击 settings ,拉到最下面会看到 Github Pages ,此时关于github page是 None 状态,将其选择为 master branch (如果是私有仓库是无法开通的,所以创建时我们选择了公共仓库),如果有显示 “Your site is published at https://username.github.io/ ,就是启动了page功能,你可以使用此网址访问你的个人网页了,只不过目前什么内容都没有。这里对page的网址说明一下,如果仓库名为 username.github.io ,那网址就为 https://username.github.io/ ,如果仓库名为其他,则网址中会带有仓库名,也就是 https://username.github.io/reponame/ ,如果是这样,使用hugo时,本地相对路径索引的图片上传后通过网页是无法加载的,hugo生成的图片链接没有仓库名,这里是经过试错得到结论。

生成博客站点静态文件并上传到远程仓库

  • 打开终端,进入博客站点根目录 my_blog ,使用 “hugo server” 命令预览博客,无问题的话输入 “hugo” 命令,生成博客站点静态文件 public ,我们将 public 内文件全部粘贴到 username.github.io 仓库,并上传到远程仓库,命令参考上文。
  • 打开浏览器,输入开启github page时提示的网址,就看到你的个人博客网页了,到此部署成功。
  • 我们也可以写一个脚本方便处理,我起名为 issue.sh ,如下:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#!/bin/bash

hugo
rm -rf ../cao-arvin.github.io/*
mv ./public/* ../cao-arvin.github.io/
rm -rf ./public
cd ../cao-arvin.github.io/
git add .
git commit -m "rebuilding site $(date)"
git push -u origin +master
cd -

维护自己的博客内容和环境

最初我们创建了两个仓库,目的就是一个开启page功能,将博客静态文件发布到网络,另一个就是维护博客内容和环境文件。

  • 复制仓库的http链接,使用 “git clone http…” 命令,将创建的仓库克隆到本地,如果是新仓库的话,会提示你 似乎你克隆了一个空仓库 ,可以不用管。
  • 将博客站点根目录my_blog中的所有文件复制到克隆的仓库文件(仓库名也可以为my_blog)
  • 这里themes中的jane本身是一个git仓库,我们可以不用上传到远程仓库,生成的public是中间文件也不需要上传到远程仓库,所以添加一个 .gitignore 文件,git可以自动忽略 .gitignore 列出的文件,不上传到远程仓库。终端中进入博客站点根目录,输入如下命令即可:
1
2
echo themes  >>.gitignore
echo public  >>.gitignore
  • 将博客内容和环境文件上传之远程仓库,命令参考上文。

文章原创,可能存在部分错误,欢迎指正,联系邮箱 cao_arvin@163.com。