用 Publii 替换 Wordpress


之前用 Docker 安装的 Wordpress, 动不动就崩溃了,特意做了定时自动重启,好像效果也不怎么样,终于下决心要解决这个问题了。

和 Chatgpt 咨询了一下,应该是因为 vps 配置太低,而 Docker 这一套方案太重了,内存不够时直接被系统 kill 掉了。和它讨论的结果,我决定采用 Publii 代替原来的方案。虽然线上变成了纯静态的网站,但这样资源占用极少,应该不会再频繁崩溃了。并且,我觉得对于国内大多数网站来说,静态可能是最合适的。因为只需要展示,不需要交互。既能避免不必要的麻烦,又能保证安全稳定。 

Publii 是个桌面应用,在编辑完网站后,直接生成静态网页,推送到线上。后台管理界面和 Wordpress 很像,并且支持一键从 Wordpress 导入 ,这样之前的网页和文章都可以保留了。但是主题就要靠自己了。

Publii 的介绍文章很多,我就不重复了。这里只记录几个我自己使用的经验。

  • 关于预览,我之前以为会自动打开浏览器,然而并没有。事实上在你的网站目录下会有 3 个目录: Input、Output、Preview。其中 Preview 就是在本地预览的专用目录,你可以直接打开这个目录下面的 Index.html 进行预览。在这个目录下生成的链接都是 file:/// 打头的本地目录地址。 而 Output 目录才是你要推送到线上的版本,并且预览阶段是不会生成的,只有你执行推送的时候才会生成。
  • 关于推送。可以配置多个 Server,可以选择不同类型的 Server。但是如果选择 Git 类型,其实并不是在本地生成 Git 库,每次 commit & push。本地并没有 Git 库,并且每次推送貌似都是全量而不是增量。如果需要可以自己生成 Git 库,自己 commit、push。
  • 我不知道是因为我选择的主题的原因还是什么原因。当我添加菜单项,并选择跳转目的是 posts index 时,跳转的是 index(首页)。我自己在 input 里面加了 posts.hbs,在生成预览时,posts 目录确实生成了  posts/index.html,但是它使用的模板,依然是根目录的 index.hbs,并没有用我添加的 posts.hbs。所以不得不修改 index.hbs 用条件判断去生成我想要的 posts index 的样式。
  • 如果想让 Publii 显示你自定义的一些属性,可以在 Input/themes/你的主题/config.json 的 customConfig 部分添加,属性就会显示在 Publii 的主题自定义部分。
  • Publii 有官方文档教你如何生成自己的主题。不过我是找了一个现成的,在它基础上,让 Claude 帮我修改的。开始是用的 Copilot ,不过还是放弃了。专业的事还得用专业的 AI。
  • 这次还顺便搞定了 Certbot ,不用每次手动更新证书了,AI 确实让我们解决问题的效率大幅提高。