把本博客从 Ghost 迁移到了 GitHub Pages,原因有二
受不了 Ghost 日趋臃肿
我的 GitHub Pro 还有 10 个月到期,不用也浪费。
整个迁移过程还是挺简单的,大致步骤如下:
先登录 Ghost 的后台导出内容,会是一个 json 格式的文件。
将该 json 格式的文件转化成 markdown 文件,可以用 ghostjson2markdown 这个开源工具操作。
将生成的 markdown 文件使用静态博客生成工具生成静态的页面,我使用的是 hugo,官网 gohugo.io,具体怎么操作,在其官网有。这里会生成的一个 public 的文件夹,里面就是整个网站的内容了。
去 GitHub 创建一个仓库,开启 GitHub Pages 功能,如下图
如果不绑定自己的域名可以用 GitHub pages 的自带域名,还可以开启 ssl,使用自己的域名也可以使用 ssl。这里一个小提示,如果是二级域名,系统会提示你使用 cname 绑定的方式,如果是 apex,即不是二级域名,则指向 ip 地址。
将第三步生成的静态页面(public 文件夹中内容)上传到这个代码库中即可。
hugo 这类的静态生成器的原理就是根据 markdown 中内容生成一个一个的文件夹及文件夹里面的 index.html 文件。比如 https://tourcoder.com/about
这个内容,通过 hugo 这类工具生成了一个 about
的文件夹,在这个文件夹里有一个 index.html
的 html 文件。
如果愿意开源博客的写作过程,则 GitHub 是免费的,这个算是一个优点吧。
但 GitHub pages 自定义域名如果用 https,需要第三方,这点很烦人,而 cloudflare 这类第三方的确很好,但也有个问题就是在国内经常会出现访问不了的情况(需要验证,因为国内很多 IP 都被视为了垃圾 IP)。
愿意动手玩玩 GitHub action 的,也可以直接写 markdown 文件,剩下的内容交给 GitHub action 去处理,也省事。
另外就是 GitHub 倒掉,数据丢失的可能性不是太大,安全有保障。
本博客还是会迁移到我私人的服务器去,迁移的原因是 cloudflare 在国内访问的问题,会用 Caddy + hugo 的方式部署。
半个小时后补充:
还是搬到了自己的服务器,hugo 生成静态页面,设置 Caddy 指向这个页面,具体操作如下。
在服务器上安装 hugo,然后新建一个站点,执行命令 hugo
即可生成一个 public
的文件夹,如上面所说这个文件夹里面就是整个网站的内容。
在服务器上安装配置 Caddy,将域名指向 public
文件夹,至于怎么安装配置,去看这篇文章,Caddyfile
内容如下
tourcoder.com {
root * /home/tcblog
file_server
}
``
完成。
在我看来目前这样比较好,一方面因为站点是静态页面,所以服务器的消耗不是很大,另外一个方面随时可以登录到服务器去写博客,内容都在 content
,写完后执行 hugo
命令即可生成内容,不需要做其他的事情。甚至可以在本地电脑上写好 markdown
格式的文件,写好后传到服务器上,然后执行命令也行。至于利用其他自动化部署就不展开谈了。
2021 年 3 月 31 日更新
我将博客移回了 GitHub,原因是我的服务器被墙了。
因为我的博客是用 hugo 生成的,它生成的默认发布目录是 public
,可以通过在 config.toml
中修改,增加一行 publicDir = '你需要的文件夹名字,也可以带上路经'
,比如 GitHub pages 使用的是 docs 或者 root。
Hugo 的安装
Hugo 是基于 Golang 开发,所以先安装 Golang,最快的安装方法 http://github.com/tourcoder/glv。
然后在 CentOS 下编辑 /etc/yum.repos.d/hugo.repo
,没有该文件直接创建即可,将下面的内容填入里面
[daftaupe-hugo]
name=Copr repo for hugo owned by daftaupe
baseurl=https://copr-be.cloud.fedoraproject.org/results/daftaupe/hugo/epel-7-$basearch/
type=rpm-md
skip_if_unavailable=True
gpgcheck=1
gpgkey=https://copr-be.cloud.fedoraproject.org/results/daftaupe/hugo/pubkey.gpg
repo_gpgcheck=0
enabled=1
最后执行 yum install hugo -y
.
在 Debian/Ubuntu 下安装,先去 hugo 的发布页面找到对应的 deb 文件,https://github.com/gohugoio/hugo/releases,然后执行即可。比如我的系统是 Debian 64 位,则
wget https://github.com/gohugoio/hugo/releases/download/v0.83.1/hugo_0.83.1_Linux-ARM64.deb
然后执行 sudo dpkg -i 文件名.deb
即可。
至于 macOS 下,用 brew install hugo
。
> 可在 Twitter/X 上评论该篇文章或在下面留言(需要有 GitHub 账号)