feat: 初始化 meshgo MQTT 服务
- 支持 TCP / WebSocket 监听,配置热重载,systemd 集成 - meshAuthHook 实现用户名/密码认证与 ACL - meshLogHook 打印所有 MQTT 事件(CONNECT/PUBLISH/SUBSCRIBE 等) - meshDBHook 将 msh/# 主题 payload 异步写入数据库 - 数据库支持 SQLite(默认)和 MySQL,自动初始化并补充缺失配置 - payload_log 表字段:ID、client、topic、qos、payload、created_at、sender_ip - 自动补充 config.yaml 缺失字段(文件存在时写回) - .gitignore 屏蔽 data/ 和 .workbuddy/
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
BINARY := meshgo
|
||||
GOOS := linux
|
||||
GOARCH := amd64
|
||||
OUT := ./build/$(BINARY)
|
||||
|
||||
.PHONY: all build build-linux build-win install clean
|
||||
|
||||
all: build
|
||||
|
||||
## 本机编译(Windows CGO)
|
||||
build:
|
||||
@mkdir -p build
|
||||
CGO_ENABLED=1 go build -trimpath -ldflags="-s -w" -o $(OUT) .
|
||||
@echo ">>> 已生成: $(OUT)"
|
||||
|
||||
## Linux 交叉编译(需要目标机器有 gcc,可选)
|
||||
## 若遇 sqlite3 链接错误,请在 Linux 服务器上直接编译:
|
||||
## make build-linux-native
|
||||
build-linux:
|
||||
@mkdir -p build
|
||||
CGO_ENABLED=1 GOOS=$(GOOS) GOARCH=$(GOARCH) CC=x86_64-linux-gnu-gcc \
|
||||
go build -trimpath -ldflags="-s -w" -o $(OUT) .
|
||||
@echo ">>> 已生成 Linux $(GOARCH) 二进制: $(OUT)"
|
||||
|
||||
## Linux 服务器上原生编译(推荐生产环境使用)
|
||||
build-linux-native:
|
||||
@mkdir -p build
|
||||
CGO_ENABLED=1 go build -trimpath -ldflags="-s -w" -o $(OUT) .
|
||||
@echo ">>> 已生成: $(OUT)"
|
||||
|
||||
## 部署到目标机器(需要 SSH_HOST 环境变量,如 make install SSH_HOST=root@192.168.1.10)
|
||||
install: build
|
||||
@test -n "$(SSH_HOST)" || (echo "请设置 SSH_HOST,例如: make install SSH_HOST=root@192.168.1.10" && exit 1)
|
||||
scp $(OUT) $(SSH_HOST):/usr/local/bin/$(BINARY)
|
||||
scp meshgo.service $(SSH_HOST):/etc/systemd/system/$(BINARY).service
|
||||
ssh $(SSH_HOST) "systemctl daemon-reload && systemctl enable $(BINARY) && systemctl restart $(BINARY)"
|
||||
@echo ">>> 部署完成"
|
||||
|
||||
clean:
|
||||
rm -rf build/
|
||||
Reference in New Issue
Block a user