📖 前言

Sonic [ˈsɒnɪk] ,Sonic 是一个用 Golang 开发的博客平台。

这个项目是从去年夏天开始,断断续续写了一年,其中还因为工作的原因暂停了一段时间,现在终于写完了,尽管自己觉得有些地方仍然不是很完美,但是也完成了我当初的基本构想。

写这个项目的原因是我自己也是一名博主,喜欢写博客,用过 Wordpress 、typecho 、Hexo 、Hugo 等,但是总有一些不满意的地方

Halo 感觉非常不错,典型的 C/S 架构,很符合我这个后端程序员的口味。虽然 Java 是一种高性能的语言,但是缺点是占用内存较多,一些配置较低的主机并不符合要求,Go 的协程天然适合 Web 这种并发场景,并且内存占用极低。而且 Halo 自身也有些小缺陷,比如 For 循环查库,遂决定基于 Go 写一个高性能的博客框架

需要说明的是,Sonic 的灵感来自 Halo ,也借鉴了 Halo 很多优秀的设计,后台管理界面更是直接 Fork 自 Halo 。Sonic 未来的主要目标是快、轻量、优雅的代码,希望能成为 Golang web 的 best practice 之一

📖 预览

xX35qJ.png

🚀 Features:

  • 支持多种类型的数据库:SQLite 、MySQL(TODO: PostgreSQL)
  • 体积小: 安装包仅仅只有 10Mb
  • 高性能: 文章详情页可以达到 1000 QPS(压测环境是: Intel Xeon Platinum 8260 4C 8G ,SQLite3)
  • 支持更换主题(遗憾的是目前仅有一款主题)
  • 支持 Linux 、Windows 、Mac OS 等主流操作系统,支持 x86 、x64 、Arm 、Arm64 、MIPS 等指令集架构
  • 支持对象存储(MINIO 、Google Cloud 、AWS 、AliYun)
  • Sitemap 、Rss 、Atom 支持

🧰 安装

下载对应平台的安装包

根据你的操作系统和指令集下载对应的安装包

wget https://github.com/go-sonic/sonic/releases/download/v1.0.0/sonic-linux-amd64.zip -O sonic.zip

解压

unzip sonic.zip

运行

可以通过 -config 选项来指定配置文件的位置

cd sonic
./sonic -config conf/config.yaml

然后你就可以通过浏览器访问 sonic 了,默认的端口是 8080

后台管理路径是 http://ip:port/admin

TODO

  • i18n
  • PostgreSQL
  • 更好的错误处理
  • 插件系统(基于 Wasm)
  • 使用新的 web 框架(Hertz)

📄 License

sonic