如何免费搭建独立博客
很多技术型人才都希望能打造自己的 IP,持续扩大影响力,但是又不善于表达,不善于推广,因此很难发挥自己的特长。前些年微信公众号是绝大多数技术人才表达自我的阵地,但是近两年公众号文章越来越多的推广文和水文,让这个平台内容的质量急剧下降。人们都不太愿意在上面去分享和阅读深度好文了,无论是作者还是读者,都将它看成一个纯粹的引流工具。
仿佛一切又回到 10 年前,人们又开始关注独立博客,关注 newsletter,关注传统的技术社区。我也开始着手,把自己的文章同步到新的独立博客上,争取以后好好维护这个自己打造的地方,写出优秀的文章出来。
# 为什么搭建个人独立博客
其实在之前,我也会在掘金、CSDN和博客园发布文章,也会写写公众号,但是这些写作平台总有不如意的地方。
比如说公众号,本身是一个封闭的生态,搜索引擎无法检索。虽然公众号生态里已经有很多的技术解决方案,但是想了解的没有办法快速查找到,但是技术文章,尤其是硬核的深度文章,是非常依赖检索能力的。
掘金这个平台目前是国内比较干净的技术社区了,我也非常喜欢在掘金更新文章。但是掘金在百度上的排名非常靠后,在 google 上的排名虽然靠前,但国内用的人毕竟很少。其次,掘金目前还是一个以前端技术为主的社区,其他领域的读者数量较少。
CSDN 在百度上的搜索非常亮眼,虽然现在抨击它的人非常多,但我还是认为,技术人是可以多在上面发文,增加曝光机会的。CSDN 的移动端 app 使用人数也非常多,社区活跃程度高,稳定更新文章会有很好的结果。 但是 CSDN 的文章质量越来越低,越浅层次的文章似乎越容易受到官方推荐,有一种劣币驱逐良币的趋势。久而久之,大家都是相互洗稿,弄一点通俗易懂的内容放上去吸引粉丝,不利于自我成长。
博客园只是看起来老了点,但是一点也不比别的平台差,百度排名也非常高,还允许你自定义二维码、自定义广告,完全可以作为一个独立博客来做。博客园不太好的地方在于文章的编辑和发布比较费劲,还停留在上个世纪的交互。而且博客园没有移动端APP,整个社区的氛围互动氛围没有做起来。基本上逛博客园的都是通过关键字搜索,然后看完就直接走了,很难对你这个人产生任何的印象。
当然每个平台都会有他自己的优劣,而作为技术人就是通过平台来让自己得到成长。如果你希望自己快速进步,写出更深入的文章,掘金是一个好地方,也可以把文章同步到csdn或者博客园吸引百度搜索的流量。
但是如果希望做一个长期主义的人,我觉得还是有一个自己的独立博客比较好。首先对于这些平台方来说,会限制你自己的 IP 的打造,他希望你停留在这个平台,并且只在这个平台上,因此限制会越来越多,你无法做到真正的自由。
其次,所有的平台都是不允许挂二维码,也很容易被其他的抄袭。独立博客其实就是一块自留地,在这个博客当中,你可以根据自己的需求进行一些定制化的管理,如果有一些系列文章或者是一些小照教程需要发布,可以做到更高的灵活性。而且通过长期的更新以及对博客网站的维护,它的流量自然而然也会上来。
# 静态博客 vs 动态博客
如果已经决定要搭建一个属于自己的博客,接下来要考虑到底是使用动态博客还是静态博客的问题。所谓的动态博客是需要自己架设服务器,自己维护数据库存储文章内容。它的好处在于可以提供编辑界面,让你非常快速的输出文章。
静态博客就是生成一个对应的html文件,只需要访问这个文件就可以获取到相关的内容,现在有很多静态博客的生成器,帮助我们快速生成内容,也不需要自己架设服务器,自己维护数据库。一般来说,静态博客对搜索会更友好一些。
动态博客推荐用Java语言编写的 Halo。我第1次看到它,就被它漂亮的模板所吸引,但是后来才发现需要自己买服务器,因此就放弃了。如果你希望搭建一个动态博客网站,我还是非常推荐使用hello的。
静态博客生成器非常非常多,我之前用过pelican、hugo、hexo和gridea,这次用的是 vuepress。
pelican非常适合Python程序员。因为基本上大多数的原代码你都是能够看懂的,方便你自己自定义,但是目前他提供的主题还是比较简陋的,而且生态也没有完全发展起来,因此经过短暂的试用以后,我就放弃了。
Hugo 是用 go 语言编写的静态网站生成器。构建网站的速度非常快,而且现在也有非常多好看的模板,文档也非常健全。整体使用和 Hexo 差不多,如果你比较纠结的,从 Hugo 和 Hexo 二选一就可以了。
Hexo 使用node.js编写,应该是目前来说最主流的静态网站生成器,你能在网上看到很多使用 Hexo 生成的静态网站。
gridea 是我用过最顺畅的,使用他编写博客非常非常的方便,因为他提供了一个可视化的界面软件,让你直接在里面写Markdown的文档,写完之后轻轻一点就可以自动发布到博客地址,应该是所有的静态博客编写过程当中体验最好的。我因为他写过比较多的文章,当然它目前可以使用的主题比较少,我很难判断他以后是否会能继续坚持更新下去。
好,这一次我选择的静态网站生成器是 vuepress。vue 的官网就是它写的写的。目前越来越多的开发者参与到这个项目的维护当中,它提供的功能以及模板都非常的健全和漂亮,而且据官网的介绍,他对seo也是非常友好的。
顺便我再说一下其他的文档编写工具。
gitbook 是用的比较多的,但是最近发现一个叫做 docsify 的,真的非常非常的惊艳,如果以后有文档需要部署的话呢,我应该会是选择 docsify,其实我觉得用语雀也听打错的。
# vuepress 主题
你有很多的方式,可以接触到非常多的主题。我直接查看了awesome-vuepress (opens new window) 这个 repo,选择 vdoing 这个主题,目前他在 github 上应该是排名非常靠前的。
模板确定好了之后,我直接打开 vdoing 的官方文档 (opens new window),按照它的说明下载安装。因为配置项比较多,所以推荐直接使用作者的模板修改,首先安装好主题。
git clone https://github.com/xugaoyi/vuepress-theme-vdoing.git
cd vuepress-theme-vdoing
npm install # or yarn install
npm run dev # or yarn dev
如果一切顺利,现在已经打开了一个网址,访问网址后能看到作者的博客模板。
# vuepress 如何编写新博客
vuepress 通过 markdown 文档编写文章,打开 docs 目录,进入到 \docs\_posts\随笔
路径,使用任意编辑器创建 markdown 文件就课可以开始写了,也可以把已经有的 markdown 文件直接搬进来。
写完之后,运行以下命令就可以查看效果了:
npm run dev
# 存储独立博客文章
比较推荐用 GitHub 存储独立博客的文章,Gitee 这样的代码托管平台都是可以的,但是绝大多数的博客托管网站对 GitHub 的支持会更友好,因此我直接用了 GitHub。
我采用的存储方式是把所有代码包括博客一起上传,这种方式让我写完博客后,能最快的发布到网上,整个文件目录是这样的。
有的文件并不需要上传,比如需要的依赖都存在 node_modules 目录中,把这个目录添加到 .gitignore 文件中,就不会上传到 GitHub 了。
# 托管独立博客
现在博客别人还看不到,必须要托管到外网访问。最常见的方式是通过 GitHub Pages,我之前一直使用这种方式,可能是之前的打开方式不对,发布流程有点复杂,这次换成了 Vercel 托管博客。
博客托管平台有很多,除了 vercel 以外,netlify,heroku 风评都是不错的。这些托管平台对百度收录都不友好,如果依赖百度搜索的话,国内的 21 cloudbox 会更好。
托管的步骤可以直接参照对应平台的官方文档,基本上都比较傻瓜,绑定 GitHub 仓库,直接点击下一步就可以了。
有一点需要注意,在 vercel 的配置,因为我是把整个代码库都上传到 GitHub,所以output 目录要选择 docs/.vuepress/dist 目录,不然构建不成功。
欢迎你访问我的博客 (opens new window)。
# 21cloudbox 访问博客
不能自动构建,添加 github webhook,当有代码提交的时候,触发自动构建的操作。 参考:https://www.21cloudbox.com/configure-deploy-webhook.html
# 快速发布博客的方式
如果用 GitHub, 发布博客的动作可以变得非常简单。流程越简单,坚持写下去的动力会越强。来看一个超级使用的技巧吧。 我使用的这个博客主题在每篇文章的下面会有个编辑的按钮。
点击这个按钮可以快速进入 GitHub 仓库的快速编辑界面。你可以在这个界面迅速编写文章,修改文章,然后发布,根本不需要手工打开任何编辑器。
要支持这个功能只需要修改少部分源码,找到 PageEdit.vue 这个文件。 把修改文章的路径改成:
const base = outboundRE.test(docsRepo)
? docsRepo
: `https://github.dev/${docsRepo}`
return (
base.replace(endingSlashRE, '')
+ `/tree`
+ `/${docsBranch}/`
+ (docsDir ? docsDir.replace(endingSlashRE, '') + '/' : '')
+ path
还有以前默认是 master 分支,现在是main分支,所以要把默认的分支名称改一下:
docsBranch = 'main'
好了,现在发布文章真的是毫无负担了。为自己的机智点赞。
# 绑定域名
其实最开始写博客的时候,我不太建议去绑定域名。只要耐心的写,积累更多的内容,对自己有一个提升就已经很好了。但是绑定域名还是非常有好处的,有了域名之后算是打造了一个真正意义上的独立网站,在写文章的时候会更有归属感,你会觉得这个网站真的是你融入自己内心的一块地方。
有了域名,也更方便在站长工具上统一管理网站。
购买域名既方便又便宜,像我这个 jiubing.site 的域名 10 年 100 块钱,完全是能够接受的。
有了域名后,直接在管理控制台配置 DNS 解析,当用户访问域名时,会绑定到 vercel 的托管服务上,具体配置过程可以参考这篇文章 (opens new window)。
# 向百度提交网页
对于一个刚刚建成的网站来说,要等待搜索引擎的蜘蛛主动来爬是需要一段时间的。有两个个方法可以让搜索引擎更快的收录自己的网站。
第一种方式是在其他的平台上面导入自己网站的链接。比如在 csdn 写文章有参考文献时,可以挂上自己网站的博客地址。
第二种方式是自己主动向搜索引擎提交网站内容。当写完一篇博客后,可以把这个博客的地址主动提交给百度 (opens new window),也可以直接在百度的站长工具上面来集中管理这个网站。在网站的管理当中,可以使用手工提交或者是API提交的方式向白度主动提交页面。
作为一个程序员,我们可以把主动提交页面的操作直接嵌入到网站的建设中。写完一篇博客后,自动触发用百度提交页面的代码,这样就不需要手工去管理了。
在 vdoing 主题自带了这个功能。
在一个名叫 baiduPush.js 的文件中,实现了生成当前所有网站 url 的功能,存储到 urls.txt 文件中。
打开package.json 来设置一条 node.js 命令运行这个文件,后面的参数改成自己网站的 地址。紧接运行 baiduPush.sh 文件,该文件主动将 urls.txt 中的链接全部主动推给百度。
现在我们实现主动上报网页的功能,但是还是需要手工操作。那怎么把它变成自动操作呢?这个可以借助 GitHub Action 的集成功能,在仓库中创建 .github/workflows 目录,写上推送网页的 baiduPush.yaml 文件,这个文件在 github 上会通过 action 功能执行,每天晚上 23 点主动向百度推送。
name: baiduPush
on:
push:
schedule:
- cron: '0 23 * * *' #
jobs:
bot:
runs-on: ubuntu-latest
steps:
- name: 'Checkout codes'
uses: actions/checkout@main
- name: 'Run baiduPush'
run: npm install && npm run baiduPush嗯。
还有一些不太紧急的优化工作,后面想写了再补充。
todo:
- css 定制
- SEO
- 百度统计
- 评论
- 留下好友
- 广告栏
本文完,感谢你的耐心阅读,如有需要可加我微信,备注「博客」并说明原因,我们一起进步,下次见。