doc: add readme and config toml example for new backend
This commit is contained in:
@@ -0,0 +1,23 @@
|
|||||||
|
[database]
|
||||||
|
driver = "sqlite"
|
||||||
|
|
||||||
|
[database.config]
|
||||||
|
path = "coconut-leaf.db"
|
||||||
|
|
||||||
|
# MySQL(占位,尚未实现)
|
||||||
|
# [database]
|
||||||
|
# driver = "mysql"
|
||||||
|
#
|
||||||
|
# [database.config]
|
||||||
|
# host = "localhost"
|
||||||
|
# port = 3306
|
||||||
|
# user = "root"
|
||||||
|
# password = "password"
|
||||||
|
# database = "coconut_leaf"
|
||||||
|
|
||||||
|
[web]
|
||||||
|
port = 8848
|
||||||
|
|
||||||
|
[others]
|
||||||
|
auto-token-clean-duration = 86400 # 自动清理过期 token 的间隔(秒)
|
||||||
|
debug = true # 开启后日志级别降到 DEBUG
|
||||||
@@ -0,0 +1,70 @@
|
|||||||
|
# coconut-leaf 后端
|
||||||
|
|
||||||
|
coconut-leaf 的后端服务,使用 [Go](https://go.dev/) + [Gin](https://gin-gonic.com/) 实现,由旧版 Python Flask 后端迁移而来。
|
||||||
|
数据层直接执行 SQL(不使用 ORM),目前仅完整实现 SQLite,MySQL 接口为占位实现(全部接口返回 not implemented 错误)。
|
||||||
|
|
||||||
|
## 环境要求
|
||||||
|
|
||||||
|
- **Go >= 1.26**
|
||||||
|
- **C 编译器(cgo)**:SQLite 驱动 [`mattn/go-sqlite3`](https://github.com/mattn/go-sqlite3) 依赖 cgo。
|
||||||
|
- Windows:推荐使用 MSYS2 的 gcc。
|
||||||
|
- Linux / macOS:系统自带的 gcc / clang 即可。
|
||||||
|
- 构建前确保 `CGO_ENABLED=1`(有可用 C 编译器时通常默认开启)。
|
||||||
|
|
||||||
|
## 构建
|
||||||
|
|
||||||
|
在 `backend/` 目录下:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
go build -o coconut-leaf
|
||||||
|
```
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
|
> 首次构建会编译 SQLite 的 C 源,耗时 1–3 分钟属正常。
|
||||||
|
>
|
||||||
|
> 在 Windows 下用 MSYS2 编译出的可执行文件在运行时依赖 MSYS2 相关运行库(我这里是MSYS2 UCRT64,所以可能包含 `libgcc_s_*`、`libwinpthread-1.dll` 等)。
|
||||||
|
> 需让这些DLL所在文件夹处于 PATH 中,或将这些 DLL 拷贝到可执行文件旁。
|
||||||
|
|
||||||
|
## 配置文件
|
||||||
|
|
||||||
|
采用 TOML 格式,通过 `--config` 指定路径。完整模板见 `assets` 文件夹下的 [coconut-leaf.template.toml](../assets/coconut-leaf.template.toml)。
|
||||||
|
|
||||||
|
字段说明:
|
||||||
|
|
||||||
|
| 字段 | 含义 |
|
||||||
|
| --- | --- |
|
||||||
|
| `database.driver` | `"sqlite"` 或 `"mysql"` |
|
||||||
|
| `database.config.path` | SQLite 数据库文件路径 |
|
||||||
|
| `database.config.{host,port,user,password,database}` | MySQL 连接参数(未实现) |
|
||||||
|
| `web.port` | HTTP 监听端口 |
|
||||||
|
| `others.debug` | 调试模式(生产环境请务必设置为false) |
|
||||||
|
| `others.auto-token-clean-duration` | 过期 token 自动清理间隔(秒) |
|
||||||
|
|
||||||
|
## 命令行参数
|
||||||
|
|
||||||
|
| 参数 | 说明 |
|
||||||
|
| --- | --- |
|
||||||
|
| `--config <PATH>` | **必填**,配置文件(TOML)路径 |
|
||||||
|
| `--init` | 初始化系统:建表并创建首个管理员用户 |
|
||||||
|
| `--username <NAME>` | 与 `--init` 配合,初始管理员的用户名 |
|
||||||
|
| `--password <PASS>` | 与 `--init` 配合,初始管理员的密码 |
|
||||||
|
|
||||||
|
`--username` / `--password` 仅在 `--init` 时必填,并会做格式校验(用户名为 `[0-9A-Za-z]+`,密码为所有可见 ASCII 字符,即 `[!-~]+`)。
|
||||||
|
|
||||||
|
## 初始化与运行
|
||||||
|
|
||||||
|
### 首次部署
|
||||||
|
|
||||||
|
首次部署包括:建表 + 创建管理员,随后如日常运行一般:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
./coconut-leaf --config coconut-leaf.toml --init --username admin --password "your-password"
|
||||||
|
```
|
||||||
|
|
||||||
|
### 日常运行
|
||||||
|
|
||||||
|
```sh
|
||||||
|
./coconut-leaf --config coconut-leaf.toml
|
||||||
|
```
|
||||||
|
|
||||||
|
启动后会在 `web.port` 监听。调试日志会输出到 stderr,格式为 `[<时间>] [<级别>] <消息> [key=value ...]`。
|
||||||
Reference in New Issue
Block a user