原来的blog系统
过程
- 20100502---20140811 CSDN博客
14篇技术文章 - 20160508---20170601 Python DjangoCMS 自建博客
使用的Python DjangoCMS系统,没精力去定制,只是初步学习了djangocms架构,搭建了简单的博客页面。写了12篇文章。采用Nginx+UWSGI+DjangoCMS。 - 20171110---20190821 Ghost博客平台
为了追求简洁性,也是在朋友的推荐下选择了Ghost,主题风格选择简单版的attila。写了13篇文章。期间遇到一个难以绕过的问题是就是Markdown的星号list在文章发布后还是显示星号而且分层结构的list也不区分星号与-,但并没有去深究。
也因为这个问题,试图升级ghost。期间尝试了两次,都以失败告终。blog系统放在DO的vps上,古老的Debian 8系统,Docker不能安装(没有修复成功),而且ghost的升级过程确实挺冗长。 - 20190101---20190115 基于Nextjs的简易博客平台nextein-starter
2019年初想选择一个强大的开源blog系统,顺便能学习js。所以就排除了市面上的那些很普及的纯粹定制的静态站点blog系统。最终选择了Nextjs。利用Nextein静态站点生成器搭建了一个风格类似于attila的系统。写了4个实践性的文章。到此为止,并没有开始相关的React 和 Next.js的学习实践。 - 20200118---当前 升级到Ghost3.0并切换主题到默认主题
2020年初春节假期再次迁移ghost。这次最终成功升级到ghost v3。社区咨询才了解到list的星号显示问题是attila本身的问题,考虑放弃使用这个主题风格,采用默认casper风格。
再次调研,发现Ghost+Nextjs是个较好的组合。参考Using Ghost as a Headless CMS with Next.js计划构建Blog系统。
截止20200228,目前对ghost主题进行了定制,添加了评论系统、目录结构、阅读进度条,并修改了部分bug,网址暂时是https://blog.approachai.com。 后续可能需要添加统计、全文搜索。 - 20200218--当前 Next.js,Ghost+Nextjs组合
Ghost只是作为内容生成和写作平台,Nextjs作为前端。博客系统走通并定制。
基于开源项目,目前走通了几乎所有功能实践。- RSS
- 邮件订阅和营销 mailchimp
- 单项评论系统 基于formspree
- 博客推荐
利用自己手机号码给Twilio号码发送博客链接,Twilio平台收到信息后,根据我们配置的webhook url,调用这个webhook。请求到达自己的服务器进行如下处理:判断url是否已经存在于firebae firestore中,若没存在,就先获取博客相关的的title、desc等元数据,写入firestore中。
同时这个项目里的一个子包需要部署到firebase里,其中实现了三个云functions,保证google firebase firestore与全文索引系统Algolia的实时同步。
从目前的使用现状来看,firebase、Algolia、mailchimp、formspree看来都可以免费使用。但是Twilio估计也就使用一年。需要考虑替换选项。
Firebase function的免费使用的一个限制是不能访问外部网络。所以改为在自有服务上做了与algolia的自动同步,同时把数据库从firebase firestore更换为firebase realtime database。
当前的系统
- Ghost v3.0 blog.approachai.com
暂时整合了三个blog系统的站点链接,并把nextblog的文章直接迁移到ghost系统中, - Ghost + Nextjs blog系统 now.approachai.com
暂时正在定制、开发中 - 目前文章数
CSDN14+ Python DjangoCMS12+ Ghost博客平台13+ nextein-starter4+ Ghostv3 9篇
总计52篇。去掉一些质量不好的,估计就45篇多。(20190228统计)
ToDo
-
Nextblog站点链接不能正确切入到NAVIGATION中
已在ghost forum中咨询;自己分析mysql正常存储,只是读取时有问题。 如何debug ghost theme,即handlebarsjs的debug。
目前问题已经解决。 -
升级DO vps 到最新的系统
-
迁移遇到的问题总结
-
Ghost + Nextjs blog系统设计和开发
既然所有的走通了,需要沉下心来学习架构、Typescript、CSS布局和代码其中的良好实践,同时积累思考实践设计思路和灵感,提升创造能力。