10 KiB
构建说明
本项目支持打包为单一可执行文件,包含前后端,启动后同时提供:
- 1551端口:后端API服务
- 1552端口:前端界面服务(自动代理API请求到1551)
所有前端文件已嵌入到二进制文件中,无需额外文件。
构建方式
使用 Makefile(推荐)
本项目使用 Makefile 进行跨平台构建,支持 Windows、Linux 和 macOS。
前置要求:
- 安装 Node.js 和 npm
- 安装 Go 1.23+
- 安装 make 工具
- Windows: 可通过 Git for Windows、Chocolatey 或 WSL 安装
- Linux/macOS: 通常已预装
Windows 上使用 Make
如果你安装了 Git for Windows,make 工具通常已经包含在内,但可能不在 PATH 中。
方式1:将 Git 的 make 添加到 PATH
- 找到 Git 安装目录(通常是
C:\Program Files\Git) - 将
C:\Program Files\Git\usr\bin添加到系统 PATH 环境变量 - 重启终端后即可直接使用
make命令
方式2:使用 Chocolatey 安装 make
choco install make
方式3:使用 WSL 在 WSL 中运行 make 命令。
构建命令
构建全部平台版本(默认)
make build
该命令会生成 Windows、Linux 和 macOS 的 amd64 可执行文件。
构建 Linux 版本(用于服务器部署)
make build-linux
构建 Windows 版本
make build-windows
构建 macOS 版本
make build-darwin
其他 Makefile 命令
只构建前端:
make frontend
只构建后端(当前平台):
make backend
只构建后端(指定平台):
make backend-linux # Linux
make backend-windows # Windows
make backend-darwin # macOS
生成 Ent 代码(仅修改 Schema 后需要):
make generate
清理构建文件:
make clean
运行开发服务器:
make run
构建输出
执行 make build 后,dist 目录将包含三个平台包:
dist/
├── home-vue-go-windows-amd64.exe
├── home-vue-go-linux-amd64
└── home-vue-go-darwin-amd64
所有前端文件(HTML、CSS、JavaScript等)都会分别嵌入三个二进制文件中,构建脚本会自动清理 dist 中的前端源文件。
运行服务器
Windows
cd dist
home-vue-go.exe
Linux/macOS
cd dist
./home-vue-go
访问地址
启动后,服务器会同时提供两个服务:
-
后端API: http://localhost:1551
-
前端界面: http://localhost:1552
注意:前端会自动将 /api 请求代理到 http://localhost:1551,无需额外配置。
1Panel 配置
在1Panel中配置非常简单:
-
上传文件:将
home-vue-go(Linux版本)上传到服务器 -
配置端口:
- 后端API端口:
1551 - 前端服务端口:
1552
- 后端API端口:
-
运行命令:
./home-vue-go -
完成:无需其他配置,单一文件即可运行完整服务
配置说明
- 后端API端口:默认
1551,可通过环境变量API_PORT修改 - 前端服务端口:默认
1552,可通过环境变量FRONTEND_PORT修改 - 数据目录:运行时会自动在二进制文件同目录下创建
data目录 - 默认管理员账号:
admin/admin123(首次启动时显示)
修改端口示例
Windows:
set API_PORT=8080
set FRONTEND_PORT=8081
home-vue-go.exe
Linux/macOS:
export API_PORT=8080
export FRONTEND_PORT=8081
./home-vue-go
注意事项
- SQLite驱动:使用纯 Go SQLite 驱动,构建无需 CGO 或 GCC
- 前端构建:构建时必须先运行
npm run build生成dist目录,Go编译时会嵌入这些文件 - Go版本:需要Go 1.23或更高版本(支持embed功能)
- 端口占用:确保1551和1552端口未被占用
- 单一文件:构建完成后,只需一个可执行文件即可运行,无需其他依赖
- Make工具:Windows用户需要安装make工具(Git for Windows自带,或使用Chocolatey安装)
- 跨平台编译:Windows、Linux 和 macOS amd64 目标均可直接交叉编译
Windows 上使用 Make
方式1:将 Git 的 make 添加到 PATH(推荐)
Git for Windows 自带 make 工具,通常位于:
C:\Program Files\Git\usr\bin\make.exeC:\Program Files (x86)\Git\usr\bin\make.exe
添加步骤:
- 右键"此电脑" → "属性" → "高级系统设置" → "环境变量"
- 在"系统变量"中找到
Path,点击"编辑" - 添加 Git 的 bin 目录:
C:\Program Files\Git\usr\bin - 点击"确定"保存
- 重启终端后即可直接使用
make命令
方式2:使用 Chocolatey 安装 make
choco install make
方式3:使用 WSL
在 WSL 中运行 make 命令。
方式4:手动下载 make for Windows
从 https://sourceforge.net/projects/gnuwin32/files/make/ 下载并安装
架构说明
单一可执行文件架构
┌─────────────────────────────────┐
│ home-vue-go (单一可执行文件) │
│ 包含: 后端代码 + 前端文件(嵌入) │
├─────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌──────────┐ │
│ │ 后端API服务 │ │ 前端服务 │ │
│ │ 端口: 1551 │ │ 端口:1552│ │
│ └──────┬───────┘ └────┬─────┘ │
│ │ │ │
│ │ │ │
│ └───────┬───────┘ │
│ │ │
│ API代理 │
│ (前端/api/* → 后端1551) │
└─────────────────────────────────┘
- 后端服务(1551):提供所有API接口
- 前端服务(1552):
- 从嵌入的文件系统提供前端静态文件(HTML、CSS、JS)
- 自动代理
/api/*请求到后端1551端口 - 支持SPA路由
完整构建流程示例
在 Windows 上构建 Linux 版本(用于1Panel)
方式1:使用WSL(推荐)
前提条件: 确保WSL中已安装Go和Node.js
安装Go(如果未安装):
# 在WSL中运行
# 下载Go(替换版本号为最新版本,当前需要Go 1.23+)
wget https://go.dev/dl/go1.23.0.linux-amd64.tar.gz
# 删除旧版本(如果存在)
sudo rm -rf /usr/local/go
# 解压到/usr/local
sudo tar -C /usr/local -xzf go1.23.0.linux-amd64.tar.gz
# 添加到PATH(添加到~/.bashrc或~/.zshrc)
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
source ~/.bashrc
# 验证安装
go version
安装Node.js(如果未安装):
# 使用nvm安装(推荐)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
source ~/.bashrc
nvm install 18
nvm use 18
# 或使用apt安装
sudo apt update
sudo apt install nodejs npm
构建步骤:
# 在WSL中运行(不需要再运行wsl命令,如果已经在WSL中)
cd /mnt/d/Desktop/Home-Vue-go
make build-linux
# 构建完成后,dist/home-vue-go 就是Linux可执行文件
方式2:直接在 Windows 上交叉构建
make build-linux
方式3:在Linux服务器上直接构建(最简单,推荐)
这是最推荐的方式,无需交叉编译工具链,构建速度快且稳定。
前提条件:
- Linux服务器已安装 Go 1.23+ 和 Node.js 16.16.0+
- 已安装 make 工具(通常已预装)
构建步骤:
# 1. 克隆项目到服务器
git clone <your-repo>
cd Home-Vue-go
# 2. 确保环境已安装(如果未安装)
# 安装Go(示例,根据你的发行版调整)
# wget https://go.dev/dl/go1.23.0.linux-amd64.tar.gz
# sudo tar -C /usr/local -xzf go1.23.0.linux-amd64.tar.gz
# echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
# source ~/.bashrc
# 安装Node.js(示例,使用nvm)
# curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
# source ~/.bashrc
# nvm install 18
# 3. 构建Linux版本
make build-linux
# 4. 构建完成后,可执行文件位于 dist/home-vue-go
# 可以直接运行,或配置到1Panel
./dist/home-vue-go
1Panel配置:
- 运行命令:
./home-vue-go(或完整路径) - 端口映射:1551(后端API)、1552(前端界面)
- 工作目录:可执行文件所在目录
注意:SQLite 使用纯 Go 驱动,因此从 Windows 交叉构建 Linux 版本不需要额外的 C 工具链。
在 Linux 上构建 Windows 版本
make build-windows
# 输出: dist/home-vue-go.exe
在 macOS 上构建 Linux 版本
make build-linux
# 输出: dist/home-vue-go
清理构建文件
make clean
这会删除:
dist/目录node_modules/目录- 可执行文件
开发模式
开发时,可以分别运行前后端:
终端1 - 后端:
make run
# 或
go run main.go
# 后端运行在 http://localhost:1551
终端2 - 前端:
npm run dev
# 前端运行在 http://localhost:1552,自动代理API到1551
部署优势
✅ 单一可执行文件:前后端一体化,所有文件嵌入在二进制中
✅ 无需依赖:不需要Node.js、npm或其他运行时
✅ 端口分离:API和前端服务分离,便于管理和扩展
✅ 自动代理:前端自动代理API请求,无需额外配置
✅ 1Panel友好:只需配置两个端口,运行一个命令即可
✅ 部署简单:上传一个文件,配置端口,即可运行
✅ 跨平台构建:使用make统一构建流程,支持多平台