大改,整理项目结构,完成rust ffi调用,写好tcp接口

This commit is contained in:
LIm1tZz7 committed 2026-10-02 15:07:38 +08:00
1 parent df6d348995
commit 9758439b82
118 files changed
+8103 -6321

No files matched your search

+61 -20
View File
@@ -11,18 +11,28 @@
| 包内安装 | 手里已有归档(离线、内网) | 解压后在包根跑 `./install.sh --component web` |
| 源码安装 | 没有对应平台资源,或要改代码 | `./install.sh --component web --from-source` |
`--component web` 装 Web 管理端,`--component cli` 装命令行客户端 `csql`;两种都会带上存储进程
`chusql-storage`,因为它是后端。
Linux / macOS 用 `install.sh`,Windows 用 `install.ps1`;一个平台的发行包里 Web 管理端和命令行
客户端 `csql` 都有。`--component web` / `cli` / `both` 直接指定装哪几个;不写就**逐个问**
(英文提示,回答 `y` / `n`,直接回车取方括号里的默认值):
Install the command line client (csql)? [Y/n]
Install the web front end (browser UI)? [y/N]
默认装 `csql`、不装 Web;可以都装、可以只装一个,也可以两个都不选(那就只装存储库
`libchusql_core_storage.so` / `chusql_core_storage.dll` 和 `chusql-server`)。**没选的组件一个文件都不会释放**。选完再提示设置管理员的初始口令
(`--password` / `-RootPassword` 给了就不问)。没有终端、又在跑脚本(比如 `curl | sh`)时问不了,
那时必须显式给 `--component`。
## 一、发行包
归档由项目在打 tag 时按平台构建上传,名字是 `<component>-<os>-<arch>`,并附 `.sha256`:
归档由项目在打 tag 时按平台构建上传,名字是 `chusql-<os>-<arch>`,并附 `.sha256`。一个归档里
Web 和 cli 两部分都有,装哪几个由包内脚本当场问:
| 平台 | 资源名 |
| ------------ | ------------------------------------------------------------------------- |
| Linux x86_64 | `chusql-web-linux-x86_64.tar.gz`、`chusql-cli-linux-x86_64.tar.gz` |
| Windows x86_64 | `chusql-web-windows-x86_64.zip`、`chusql-cli-windows-x86_64.zip` |
| macOS | `chusql-web-macos-x86_64.tar.gz`、`chusql-web-macos-arm64.tar.gz`(cli 同理) |
| 平台 | 资源名 |
| -------------- | ---------------------------------------------------------- |
| Linux x86_64 | `chusql-linux-x86_64.tar.gz` |
| Windows x86_64 | `chusql-windows-x86_64.zip` |
| macOS | `chusql-macos-x86_64.tar.gz`、`chusql-macos-arm64.tar.gz` |
### 在线安装
@@ -35,12 +45,35 @@
sh -s -- --component cli --repo OWNER/NAME --version v0.3.0
`--version` 不写就是 `latest`:脚本先问 GitHub API 要 release 列表,挑**最新的、正式版、且确实带本平台归档**
的那个;列表里一个都不合适就不猜。预发布版(prerelease)不会自动选中——要装就显式写 tag。先看有哪些版本:
sh -s -- --list-versions
自建站点(GitHub Enterprise、镜像)用环境变量换基地址,取包和查版本都跟着走:
CHUSQL_GITHUB_BASE=https://git.example.com sh -s -- --component web
查版本用的接口未认证时限制 60 次/小时,超了会自动退回 GitHub 的 `latest` 重定向(还能装,但挑不了"最新正式版")。
CI 里或装得频繁时给个 token,两个脚本都认(`GITHUB_TOKEN` 也可以):
CHUSQL_GITHUB_TOKEN=ghp_xxx sh -s -- --list-versions
Windows 是同一套玩法,`install.ps1` 自己下 zip、校验 sha256、解包:
irm https://raw.githubusercontent.com/TheBadRoger/ChuSQL/main/scripts/install.ps1 -OutFile install.ps1
.\install.ps1 -Component web
.\install.ps1 -ListVersions
.\install.ps1 -Component cli -Repo OWNER/NAME -Version v0.3.0
在线模式只在脚本旁边没有包时才走:`bin\chusql_core_storage.dll` 在脚本旁边就是包内安装,不碰网络。
### 指定归档
不碰网络下载逻辑,直接指一个归档(本地路径、`file://` 或任意 URL):
./install.sh --component web --url dist/chusql-web-linux-x86_64.tar.gz
./install.sh --component cli --url https://example.com/chusql-cli-linux-x86_64.tar.gz
./install.sh --component web --url dist/chusql-linux-x86_64.tar.gz
./install.sh --component cli --url https://example.com/chusql-linux-x86_64.tar.gz
### 包内安装
@@ -49,21 +82,28 @@
./install.sh --component web --user root --password '...' # Linux / macOS
./install.ps1 -Component web -RootUser root -RootPassword '...' # Windows
Windows 的 `install.ps1` **只支持包内安装**(没有在线 / 源码模式);要在线装就先手动下载归档。
不给 `--component` 就是交互模式,脚本一个个问:
./install.sh
.\install.ps1
Windows 的 `install.ps1` 两种模式都支持(包内 + 在线),只有源码模式没有——要改代码就在仓库里编。
## 二、安装选项
| `install.sh` | `install.ps1` | 默认 | 说明 |
| ----------------------- | ---------------- | --------------- | ---- |
| `--component web\|cli` | `-Component` | 必填 | 装哪个前端 |
| `--component web\|cli\|both` | `-Component` | 逐个问(没有终端时必填) | 装哪个前端 |
| `--interactive` | `-Interactive` | 有终端就问 | 强制从标准输入收答案(`curl \| sh`、自动化里用) |
| `--install-dir DIR` | `-InstallDir` | Linux/macOS `$HOME/.local/share/chusql`;Windows `%LOCALAPPDATA%\ChuSQL` | 程序装到哪 |
| `--data-dir DIR` | `-DataDir` | `<install-dir>/data` | 数据落哪 |
| `--user NAME` | `-RootUser` | `root` | 管理员账号名 |
| `--password PW` | `-RootPassword` | 空 | 管理员口令;留空=只允许管理员免密登录 |
| `--keep-package` | `-KeepPackage` | 否 | 装完不删安装包 |
| `--url URL\|PATH` | — | — | 从这个归档装 |
| `--repo OWNER/NAME` | — | `TheBadRoger/ChuSQL` | 从哪个仓库取发行包 |
| `--version TAG` | — | `latest` | 下载模式是 release tag,源码模式是 git ref |
| `--url URL\|PATH` | — | — | 从这个归档装(只有 `install.sh` 有;Windows 直接解压 zip 走包内安装) |
| `--repo OWNER/NAME` | `-Repo` | `TheBadRoger/ChuSQL` | 从哪个仓库取发行包 |
| `--version TAG` | `-Version` | `latest` | 下载模式是 release tag(`latest`=最新的、带本平台包的正式版),源码模式是 git ref |
| `--list-versions` | `-ListVersions` | — | 列出仓库里的发行 tag(预发布带标记),然后退出 |
| `--from-source` | — | — | 从源码编译安装 |
| `--source-dir DIR` | — | — | 用本地 checkout 编译,不克隆 |
@@ -78,13 +118,13 @@ Windows 的 `install.ps1` **只支持包内安装**(没有在线 / 源码模
## 四、装完是什么样
以 Linux、`--component web`、默认目录为例:
以 Linux、`--component web`、默认目录为例(选了 cli 就多一份 `bin/csql` 和一个 `csql` 命令入口):
| 位置 | 内容 |
| ---- | ---- |
| `~/.local/share/chusql/bin/` | `chusql-storage`、`chusql-web` |
| `~/.local/share/chusql/static/` | Web 前端静态资源 |
| `~/.local/share/chusql/csql-web`、`csql-web.sh` | 启动器与命令入口(`cli` 组件则是 `csql`) |
| `~/.local/share/chusql/bin/` | `libchusql_core_storage.so`(一定装)、`chusql-server`(一定装,TCP 数据库服务)、`chusql-web`(选了 Web 才有)、`csql`(选了 cli 才有) |
| `~/.local/share/chusql/static/` | Web 前端静态资源(选 Web 才有) |
| `~/.local/share/chusql/csql-web`、`csql-web.sh` | 启动器与命令入口(选 Web 才有;cli 则是 `csql`) |
| `~/.local/share/chusql/init.sql` | 初始化脚本 |
| `~/.local/share/chusql/logs/` | 日志 |
| `~/.local/share/chusql/data/` | 数据目录(Windows 是 `%LOCALAPPDATA%\ChuSQL\data`;可在 `[storage] data_dir` 改) |
@@ -93,8 +133,9 @@ Windows 的 `install.ps1` **只支持包内安装**(没有在线 / 源码模
装完开新终端:
csql-web # 起 Web 前端,默认 http://127.0.0.1:7777
csql-web # 起 Web 前端,默认 http://127.0.0.1:7778
csql # 进命令行
chusql-server # 起 TCP 数据库服务,默认 127.0.0.1:7777(客户端连接方式见 commands.md)
口令留空时只有管理员能进。账号与权限见 [commands.md](commands.md),配置项见 [config.md](config.md)。