Files
Home-Vue-Go/BUILD.md
T
2026-01-28 13:26:17 +08:00

418 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 构建说明
本项目支持打包为**单一可执行文件**,包含前后端,启动后同时提供:
- **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:使用提供的 make.bat 包装脚本(推荐)**
```bash
make.bat build-linux
make.bat build-windows
make.bat build
```
这个脚本会自动查找 Git 自带的 make 工具。
**方式2:将 Git 的 make 添加到 PATH**
1. 找到 Git 安装目录(通常是 `C:\Program Files\Git`
2.`C:\Program Files\Git\usr\bin` 添加到系统 PATH 环境变量
3. 重启终端后即可直接使用 `make` 命令
**方式3:使用 Chocolatey 安装 make**
```powershell
choco install make
```
**方式4:使用 WSL**
在 WSL 中运行 make 命令。
### 构建命令
#### 构建当前平台版本
```bash
make build
```
#### 构建 Linux 版本(用于服务器部署)
```bash
make build-linux
```
#### 构建 Windows 版本
```bash
make build-windows
```
#### 构建 macOS 版本
```bash
make build-darwin
```
### 其他 Makefile 命令
**只构建前端:**
```bash
make frontend
```
**只构建后端(当前平台):**
```bash
make backend
```
**只构建后端(指定平台):**
```bash
make backend-linux # Linux
make backend-windows # Windows
make backend-darwin # macOS
```
**生成Ent代码(首次构建前需要):**
```bash
make generate
```
**清理构建文件:**
```bash
make clean
```
**运行开发服务器:**
```bash
make run
```
## 构建输出
构建完成后,`dist` 目录将只包含**单一可执行文件**:
```
dist/
└── home-vue-go.exe # Windows单一可执行文件(包含前后端)
└── home-vue-go # Linux/macOS单一可执行文件(包含前后端)
```
**注意**:所有前端文件(HTML、CSS、JavaScript等)都已嵌入到二进制文件中,构建脚本会自动清理dist目录中的前端源文件。
## 运行服务器
### Windows
```bash
cd dist
home-vue-go.exe
```
### Linux/macOS
```bash
cd dist
./home-vue-go
```
## 访问地址
启动后,服务器会同时提供两个服务:
- **后端API**: http://localhost:1551
- API接口:http://localhost:1551/api
- 管理接口:http://localhost:1551/api/admin
- **前端界面**: http://localhost:1552
- 主页:http://localhost:1552
- 管理界面:http://localhost:1552/admin
- 登录页面:http://localhost:1552/login
**注意**:前端会自动将 `/api` 请求代理到 `http://localhost:1551`,无需额外配置。
## 1Panel 配置
在1Panel中配置非常简单:
1. **上传文件**:将 `home-vue-go`Linux版本)上传到服务器
2. **配置端口**
- 后端API端口:`1551`
- 前端服务端口:`1552`
3. **运行命令**
```bash
./home-vue-go
```
4. **完成**:无需其他配置,单一文件即可运行完整服务
## 配置说明
- **后端API端口**:默认 `1551`,可通过环境变量 `API_PORT` 修改
- **前端服务端口**:默认 `1552`,可通过环境变量 `FRONTEND_PORT` 修改
- **数据目录**:运行时会自动在二进制文件同目录下创建 `data` 目录
- **默认管理员账号**`admin` / `admin123`(首次启动时显示)
### 修改端口示例
**Windows:**
```bash
set API_PORT=8080
set FRONTEND_PORT=8081
home-vue-go.exe
```
**Linux/macOS:**
```bash
export API_PORT=8080
export FRONTEND_PORT=8081
./home-vue-go
```
## 注意事项
1. **CGO依赖**:本项目使用SQLite数据库,需要启用CGO(`CGO_ENABLED=1`
2. **前端构建**:构建时必须先运行 `npm run build` 生成dist目录,Go编译时会嵌入这些文件
3. **Go版本**:需要Go 1.23或更高版本(支持embed功能)
4. **端口占用**:确保1551和1552端口未被占用
5. **单一文件**:构建完成后,只需一个可执行文件即可运行,无需其他依赖
6. **Make工具**Windows用户需要安装make工具(Git for Windows自带,或使用Chocolatey安装)
7. **跨平台编译**:在Windows上交叉编译Linux版本需要gcc工具链,推荐使用WSL或在Linux系统上直接构建
## Windows 上使用 Make
### 方式1:使用提供的 make.bat 包装脚本(最简单)
项目根目录提供了 `make.bat` 脚本,它会自动查找 Git 自带的 make 工具:
```bash
# 构建 Linux 版本
make.bat build-linux
# 构建 Windows 版本
make.bat build-windows
# 构建当前平台版本
make.bat build
```
### 方式2:将 Git 的 make 添加到 PATH(推荐)
Git for Windows 自带 make 工具,通常位于:
- `C:\Program Files\Git\usr\bin\make.exe`
- `C:\Program Files (x86)\Git\usr\bin\make.exe`
**添加步骤:**
1. 右键"此电脑" → "属性" → "高级系统设置" → "环境变量"
2. 在"系统变量"中找到 `Path`,点击"编辑"
3. 添加 Git 的 bin 目录:`C:\Program Files\Git\usr\bin`
4. 点击"确定"保存
5. 重启终端后即可直接使用 `make` 命令
### 方式3:使用 Chocolatey 安装 make
```powershell
choco install make
```
### 方式4:使用 WSL
在 WSL 中运行 make 命令。
### 方式5:手动下载 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(如果未安装):**
```bash
# 在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(如果未安装):**
```bash
# 使用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
```
**构建步骤:**
```bash
# 在WSL中运行(不需要再运行wsl命令,如果已经在WSL中)
cd /mnt/d/Desktop/Home-Vue-go
make build-linux
# 构建完成后,dist/home-vue-go 就是Linux可执行文件
```
**方式2:直接在Windows上构建(需要gcc工具链)**
```bash
# 如果遇到交叉编译错误,需要安装gcc工具链
# 使用MSYS2安装:
# pacman -S mingw-w64-x86_64-gcc
# 然后运行
make build-linux
```
**方式3:在Linux服务器上直接构建(最简单,推荐)**
这是最推荐的方式,无需交叉编译工具链,构建速度快且稳定。
**前提条件:**
- Linux服务器已安装 Go 1.23+ 和 Node.js 16.16.0+
- 已安装 make 工具(通常已预装)
**构建步骤:**
```bash
# 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(需要CGO),在Windows上交叉编译Linux版本需要额外的工具链。推荐使用WSL或在Linux系统上直接构建。
### 在 Linux 上构建 Windows 版本
```bash
make build-windows
# 输出: dist/home-vue-go.exe
```
### 在 macOS 上构建 Linux 版本
```bash
make build-linux
# 输出: dist/home-vue-go
```
## 清理构建文件
```bash
make clean
```
这会删除:
- `dist/` 目录
- `node_modules/` 目录
- 可执行文件
## 开发模式
开发时,可以分别运行前后端:
**终端1 - 后端:**
```bash
make run
# 或
go run main.go
# 后端运行在 http://localhost:1551
```
**终端2 - 前端:**
```bash
npm run dev
# 前端运行在 http://localhost:1552,自动代理API到1551
```
## 部署优势
**单一可执行文件**:前后端一体化,所有文件嵌入在二进制中
**无需依赖**:不需要Node.js、npm或其他运行时
**端口分离**:API和前端服务分离,便于管理和扩展
**自动代理**:前端自动代理API请求,无需额外配置
**1Panel友好**:只需配置两个端口,运行一个命令即可
**部署简单**:上传一个文件,配置端口,即可运行
**跨平台构建**:使用make统一构建流程,支持多平台