Files
2026-06-25 08:39:47 +08:00

253 lines
5.7 KiB
Markdown
Raw Permalink 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.
# 寸进后端 — 宝塔面板部署指南
> 部署包位置:`deploy/`Linux amd64 二进制)
---
## 目录结构
```
deploy/
├── inchstep-api # Linux 可执行程序 (10.5 MB)
├── .env # 生产环境配置(请修改)
├── start.sh # 启动脚本(宝塔 Go 项目使用)
└── 本文件 # 部署说明
```
---
## 第一步:上传到服务器
`deploy/` 目录整体上传到服务器,例如放到 `/www/wwwroot/inchstep/`
```bash
# 解压(如果是 zip 压缩包)
unzip inchstep-deploy.zip -d /www/wwwroot/inchstep
# 给二进制加执行权限
chmod +x /www/wwwroot/inchstep/inchstep-api
chmod +x /www/wwwroot/inchstep/start.sh
```
---
## 第二步:配置环境变量
编辑 `.env` 文件,修改以下关键配置:
```ini
# 数据库密码(必改)
DB_PASS=你的MySQL密码
# JWT 密钥(必改,建议生成 64 位随机字符)
JWT_SECRET=your-strong-random-secret-string
# Redis 地址(如果 Redis 不在本机)
REDIS_URL=redis://你的Redis地址:6379/0
```
> 生产环境 **必须** 修改 `DB_PASS` 和 `JWT_SECRET`,否则存在安全风险。
---
## 第三步:宝塔面板配置
### 3.1 安装 Go 项目插件
宝塔面板 → 软件商店 → 搜索 "Go项目" → 安装
### 3.2 添加 Go 项目
宝塔面板 → Go项目 → 添加Go项目:
| 配置项 | 值 |
|--------|-----|
| 项目名称 | `inchstep` |
| 项目路径 | `/www/wwwroot/inchstep` |
| 可执行文件 | `/www/wwwroot/inchstep/inchstep-api` |
| 项目端口 | `8080` |
| 运行用户 | `www` |
| 开机启动 | ✅ 勾选 |
### 3.3 方法 A:使用 .env 文件
二进制会自动读取同目录下的 `.env` 文件。上传后无需额外操作。
### 3.4 方法 B:在宝塔面板设置环境变量(可选)
如果不想用 `.env` 文件,可以在宝塔 Go 项目配置的"环境变量"中逐条添加:
```
PORT=8080
DB_HOST=127.0.0.1
DB_PORT=3306
DB_USER=root
DB_PASS=你的MySQL密码
DB_NAME=inchstep
JWT_SECRET=你的JWT密钥
REDIS_URL=redis://127.0.0.1:6379/0
```
> 方法 B 优先级高于 `.env` 文件。两种方式二选一即可。
---
## 第四步:准备数据库
宝塔面板 → 数据库 → 添加数据库:
| 配置项 | 值 |
|--------|-----|
| 数据库名 | `inchstep` |
| 用户名 | `inchstep`(或 root |
| 密码 | 与 `.env` 中的 `DB_PASS` 一致 |
| 字符集 | `utf8mb4` |
> 数据库 **无需手动建表**。首次启动时会自动通过 GORM AutoMigrate 创建全部表结构,并初始化 10 个成就徽章和超级管理员账号。
---
## 第五步:启动
在宝塔 Go 项目页面点击"启动"。
首次日志示例:
```
启动成功
表结构自动创建完成
成就数据初始化完成
默认管理员账号: admin / admin123456
寸进 API 服务启动于 :8080
```
### 验证是否启动成功
```bash
curl http://localhost:8080/health
# → {"status":"ok"}
```
---
## 第六步:设置反向代理(可选)
如果需要通过域名访问(例如 `https://api.inchstep.com`):
宝塔面板 → 网站 → 添加站点 → 设置 → 反向代理:
| 配置项 | 值 |
|--------|-----|
| 目标 URL | `http://localhost:8080` |
| 发送域名 | `api.inchstep.com`(你的域名) |
---
## 常见问题
### Q: 启动后提示端口被占用
```bash
# 查看端口占用
lsof -i:8080
# 或修改 .env 中的 PORT 为其他端口(如 8081)
```
### Q: 连接数据库失败
1. 检查 `.env` 中的 DB_HOST 是否为 `127.0.0.1`
2. 确认 MySQL 已启动:`systemctl status mysqld`
3. 确认数据库 `inchstep` 已创建
### Q: 启动后访问 /health 无响应
```bash
# 检查项目是否在运行
ps aux | grep inchstep-api
# 查看启动日志
cat /www/wwwroot/inchstep/logs/*.log 2>/dev/null
# 或在宝塔 Go 项目页面查看运行状态
```
### Q: 如何更新版本?
```bash
# 1. 在宝塔停止项目
# 2. 上传新二进制覆盖
chmod +x /www/wwwroot/inchstep/inchstep-api
# 3. 在宝塔启动项目
```
---
## 默认管理员账号
首次启动会自动创建:
| 用户名 | 密码 | 角色 |
|--------|------|------|
| `admin` | `admin123456` | 超级管理员 |
> **生产环境请及时修改默认密码**:登录管理后台后 → 管理员管理 → 新增其他管理员后禁用默认账号。
---
## 数据库连接失败?请按以下步骤排查
### 1. 确认 MySQL 密码
`ash
# 用你的密码直接连接 MySQL
mysql -uroot -p你的密码 -e "SELECT 1;"
`
如果上面的命令返回 1,说明密码正确。否则密码不对。
### 2. 宝塔中查看/重置密码
宝塔面板 → 数据库 → root 密码 → 查看或重置
> 重置密码后请同步更新 .env 中的 DB_PASS
### 3. 确认数据库已创建
`ash
mysql -uroot -p -e "CREATE DATABASE IF NOT EXISTS inchstep CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
`
### 4. 确认 MySQL 端口
`ash
mysql -uroot -p -e "SHOW VARIABLES LIKE 'port';"
# 宝塔默认是 3306
`
### 5. 确认 MySQL 正在运行
`ash
systemctl status mysqld
# 或
/etc/init.d/mysqld status
`
### 6. 常见错误对照
| 错误信息 | 原因 | 解决 |
|---------|------|------|
| Access denied for user 'root'@'localhost' | 密码错误 | 检查 .env 中的 DB_PASS |
| Can't connect to MySQL server | MySQL 未运行或地址/端口不对 | systemctl start mysqld,检查 DB_HOST/DB_PORT |
| Unknown database 'inchstep' | 数据库未创建 | 执行 CREATE DATABASE inchstep ... |
| connection refused | 端口不对或 MySQL 未监听 | 检查 DB_PORT 和
etstat -tlnp \| grep 3306 |
### 7. .env 文件路径说明
程序会按以下顺序查找 .env
1. 当前工作目录(宝塔运行 Go 项目时的工作目录)
2. 可执行文件所在的目录
确保 .env 与 inchstep-api 放在**同一个目录**下。