📖 前言
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 之一
📖 预览
🚀 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