如何在家庭路由器上搭博客(二)
此文章是17年中完成的,此方法已经不可用,但文章仍有一部分参考意义,如果想深究,请移步到新文章开发完成了网站的自动同步功能,写一些建站的那些小事
第一篇讲了怎么开https端口申请证书并展示了一个静态页面,现在我们将充分利用上路由的硬件和操作系统特性构建一个真正的博客。
这里首先安利一下我们需要用到的编码语言,google开发推广的强大的go语言,golang是一种跨平台操作系统编译的语言,它的各种库尤其是网络库特别完善,对并发的支持很好很强大。对于我们来说特别有用的一点是用golang开发的可执行文件只要做到代码级别的依赖就可以完美运行了,这对于路由器这种缺少依赖库的Linux平台是特别方便的事。
简单介绍一下go语言安装配置,大部分简单能轻易查到资料的我就稍微介绍一下,首先到官网下载二进制包(点这里),对应有不同操作系统,windows有MSI的安装包不用操心直接安装搞定,linux下载二进制包,解压后可以放到/usr/local/bin下, 配置环境变量。
加入 /usr/local/go/bin 到PATH环境变量中. 可以加入下面几行到文件$HOME/.profile中:
export PATH=$PATH:/usr/local/go/bin
export GOROOT=/usr/local/go
export GOPATH=$HOME/gopath
以上完成后,windows运行cmd,linux开终端输入go version,如果有正确的版本输出,说明配置运行成功。
如果要学习go语法,有很多资料,这里就不详细说了,教程里并不需要你懂如何写代码,想比较深入学习的,我觉得比较好的请参考开源书Go语言圣经。
我们要用到一个go的开源工程叫hugo,这是一个根据模板静态渲染的博客及网站发布系统,为什么要用到hugo生成静态博客呢,好处非常多
-
资源需求小,访问速度极快,正好满足路由器的性能问题及家用宽带的不足。
-
Hugo生成静态页面的效率很高,官网介绍是在普通PC机上可以小于1ms的速度生成一个页面
-
我们可以用markdown来写文章,markdown是一种接近txt极简单的语法的标记语言。
首先用命令go get github.com/gohugoio/hugo
下载hugo,这个命令是下载到到gopath路径下,切换hugo目录,用命令编译mips版本的可执行文件
GOOS=linux GOARCH=mipsle CGO_ENABLED=0 go build -o hugo-mips main.go
将编译好的文件hugo-mips拷贝到路由器的sd卡中(编译的文件比较大,一般路由器的flash闪存可能不够用)。
可能需要注意一个问题,我用的极路由版本是1.2.5.15805s,并未升级到最新的1.3.4.18145s,此版本可能由于某些系统调用的修改导致go编译的文件不能成功运行,其他路由固件未发现类似问题。
ssh登陆路由进入目录,运行 ./hugo-mips env
,成功打印信息则编译运行正常。
我们以极路由为例,把网站生成在SD卡中,先进入SD卡目录/tmp/storage/mmcblk0/,运行./hugo-mips new site hugoSite
命令会创建目录hugoSite,并生成目录下其他目录和文件如下(有些并没直接生成)
|
|
其中config.toml是网站的配置文件,其中需要配置各种参数,其中最需要关注的是content目录,我们用markdown格式写的博客就放在这里,还需要下载主题到themes目录下(这个很重要,要不什么都不会生成和显示),作者修改了一个本土化主题(地址),放在github上供下载, 当然也可以下载各种其他丰富的主题,./hugo-mips --theme=主题名
就会自动生成后就会生成在public中了。
具体hugo的强大用法可以参考官网,或者这里有中文版的介绍。感谢原作者。
下面是你可能要关注的几个点:
-
markdown语法非常简单,请收集资料花十分钟就能搞定语法(真的只要十分钟)。
-
作者修改的主题中有些配置项,在exampleSite中有config.toml配置,所有配置都是未配置则不显示,其中有几个关键项说明一下
zhihu
此配置会在主题右下角显示本人知乎友链,未配置不显示,配置名为知乎个人主页链接/people/后的用户名,比如作者是ou-xie-te-36Weibo WeiboID
一个是微博名,注意不是昵称,WeiboID登陆微博,在主页看粉丝或者关注的链接地址,此链接地址中包含了WeiboIDTwitter Facebook LinkIn Facebook
这些配置就懒得说了。BDAnalyticsID
这个是百度统计ID,百度统计的申请地址点这里,填好监控网站,在代码获取中看到那一串HASH,就是ID了,填入即可。GitHubCID GitHubCS GitHubRepo
这几个有点麻烦,重点讲一下,正常国内的几个留言系统都基本上关了,国外的Disqus之类也基本上在国内不会存在的,因此用了github上一个开源的用issue做留言系统的项目Gitment(佩服项目作者脑洞大开的天才想法)。首先要有一个github帐户,创建一个repo,GitHubRepo写项目名。点击此处注册一个新的 OAuth Application。其他内容可以随意填写,但要确保填入正确的 callback URL(如https://oser.space)。你会得到一个 client ID 填入GitHubCID,一个 client secret填入GitHubCS,确保GitHub配置也是你对应的帐户名,配置完成,对应的评论系统也可用了。
-
ngnix配置确保指向hugo生成的目录下的public目录就可以了
-
总结一下,所有的目录配置好,写好md文件放到content/post目录,下载好主题放入themes目录,假设,你下载了作者的主题hugo-oser,填写好配置项,登陆路由ssh,在hugo目录下运行./hugo-mips --theme=hugo-oser,再打开自己的网站看看,是不是一个漂亮的博客就出来了。