12MB的完整收银系统:从编译到部署的全链路
12MB的完整收银系统:从编译到部署的全链路
老张买了一台Windows电脑,想装收银系统。
技术员说:“你需要先装MySQL,再装Nginx,再配SSL证书……”
老张打断:“能不能就复制个文件,双击运行?”
01 从Mac到Windows:一条命令
./scripts/start.sh build-win
产物:longxunpos-server.exe(12MB)+ LongxunPOS.Client.exe(155MB)。目标电脑零依赖。
02 三个关键技术
go:embed 嵌入Web前端
React管理后台编译时嵌入服务端exe,浏览器访问 http://127.0.0.1:8080/admin/ 即可使用。
纯Go SQLite
glebarez/sqlite 零CGO依赖,交叉编译一条命令。WAL模式支持读写并发。
自包含发布
C#客户端打包.NET运行时,目标机器不需要安装任何运行时。
03 部署就是复制文件
C:\LongxunPOS\
├── Server\
│ ├── longxunpos-server.exe ← 双击启动
│ └── data\longxunpos.db ← 自动创建
└── Client\
└── LongxunPOS.Client.exe ← 双击启动
首次启动自动创建数据库、迁移表结构、初始化种子数据(默认账号admin/admin123)。
04 配置:三层优先级
.env > 配置文件 > 代码默认值。默认配置就能跑,支付密钥按需填入 .env。
05 数据备份
SQLite数据库就是一个文件,备份就是复制文件。设置Windows任务计划每天自动备份。
06 开机自启
用NSSM注册为Windows服务,开机自动启动。
07 内网部署
所有支付和核销采用主动轮询模式,不需要回调URL、不需要公网IP、不需要端口映射。
08 总结
| 技术决策 | 效果 |
|---|---|
| go:embed | 单exe包含Web前端 |
| 纯Go SQLite | 零CGO,交叉编译一条命令 |
| 自包含发布 | 目标机器零依赖 |
| WAL模式 | 读写并发 |
| 种子数据 | 启动即用 |
| .env优先级 | 默认能跑,密钥按需填 |
| 主动轮询 | 不需要公网IP |
12MB的exe,从Mac一条命令编译,到Windows双击运行,3秒启动。
这就是"开箱即用"的工程实现。
系列完结。感谢阅读!