Sfoglia il codice sorgente

docs(deploy): 添加宝塔Linux服务器部署指南

- 新增 README.md 文件,提供详细的部署步骤- 更新 Dockerfile,使用 Go1.24 镜像
- 解决 Go 版本不匹配问题
- 添加故障排除指南
fusu 3 mesi fa
parent
commit
9bb8594374
2 ha cambiato i file con 162 aggiunte e 1 eliminazioni
  1. 161 0
      README.md
  2. 1 1
      deploy/build/Dockerfile

+ 161 - 0
README.md

@@ -0,0 +1,161 @@
+# Nunu 高级布局项目部署指南
+
+本文档提供在宝塔Linux服务器上部署此Go项目的详细步骤。
+
+## 方法一:使用Docker部署(推荐)
+
+从项目结构和Dockerfile看,项目已经准备好了Docker化部署,这是最简单的方式:
+
+### 1. 在宝塔面板安装Docker管理器
+- 登录宝塔面板
+- 在软件商店中搜索并安装"Docker管理器"插件
+
+### 2. 上传项目到服务器
+- 通过SFTP或Git将项目上传到服务器
+- 例如:`git clone 您的仓库地址 /www/wwwroot/go_project`
+
+### 3. 构建Docker镜像
+- 通过SSH连接到服务器
+- 进入项目目录:`cd /www/wwwroot/go_project`
+- 执行构建命令:
+  ```bash
+  docker build -t go-app:v1 --build-arg APP_RELATIVE_PATH=./cmd/server/... -f deploy/build/Dockerfile .
+  ```
+
+### 4. 运行Docker容器
+```bash
+docker run -d --restart=always --name go-app -p 8000:8000 go-app:v1
+```
+
+### 5. Docker容器管理命令
+
+```bash
+# 停止容器
+docker stop go-app
+
+# 启动已停止的容器
+docker start go-app
+
+# 重启容器
+docker restart go-app
+
+# 查看容器日志
+docker logs go-app
+
+# 查看正在运行的容器
+docker ps
+
+# 查看所有容器(包括已停止的)
+docker ps -a
+
+# 删除容器(需要先停止)
+docker rm go-app
+```
+
+### 6. 配置反向代理(可选)
+- 在宝塔面板中添加站点
+- 设置反向代理到 `http://127.0.0.1:8000`
+
+## 方法二:直接部署Go应用
+
+如果不想使用Docker,也可以直接在服务器上编译运行:
+
+### 1. 安装Go环境
+- 在宝塔面板中通过"软件管理"安装"Go语言"
+- 或通过SSH手动安装:
+  ```bash
+  wget https://golang.org/dl/go1.19.linux-amd64.tar.gz
+  tar -C /usr/local -xzf go1.19.linux-amd64.tar.gz
+  echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.profile
+  source ~/.profile
+  ```
+
+### 2. 上传并编译项目
+```bash
+mkdir -p /www/wwwroot/go_project
+cd /www/wwwroot/go_project
+# 上传您的代码到这个目录
+export GOPROXY=https://goproxy.cn,direct
+go mod tidy
+go build -o bin/server ./cmd/server/...
+cp -r config bin/
+```
+
+### 3. 创建服务
+创建systemd服务文件以便管理应用:
+```bash
+cat > /etc/systemd/system/go-app.service << EOF
+[Unit]
+Description=Go Application Service
+After=network.target
+
+[Service]
+Type=simple
+User=root
+WorkingDirectory=/www/wwwroot/go_project/bin
+ExecStart=/www/wwwroot/go_project/bin/server
+Restart=on-failure
+
+[Install]
+WantedBy=multi-user.target
+EOF
+
+systemctl daemon-reload
+systemctl enable go-app
+systemctl start go-app
+```
+
+### 4. 配置反向代理
+- 在宝塔面板中添加站点
+- 设置反向代理到 `http://127.0.0.1:8000`
+
+## 重要提示
+
+1. 确保服务器防火墙开放了8000端口,或者您配置的其他端口
+2. 如果使用Docker部署,请确保配置文件路径正确
+3. 生产环境中,建议配置SSL证书以启用HTTPS
+4. 您可能需要调整配置文件中的数据库连接信息等配置
+
+## Go版本问题解决
+
+如果在构建Docker镜像时遇到如下错误:
+
+```
+invalid go version '1.23.0': must match format 1.23
+unknown directive: toolchain
+```
+
+这是因为Dockerfile使用的Go版本与go.mod中声明的版本不匹配。有两种解决方案:
+
+### 方案一:更新Dockerfile中的Go版本
+
+修改`deploy/build/Dockerfile`文件,将:
+```dockerfile
+FROM ${REGISTRY}/golang:1.19-alpine AS builder
+```
+更改为:
+```dockerfile
+FROM ${REGISTRY}/golang:1.24-alpine AS builder
+```
+
+### 方案二:修改go.mod文件
+
+如果无法更新Docker环境中的Go版本,可以修改go.mod文件:
+
+1. 将`go 1.23.0`更改为`go 1.19`
+2. 删除`toolchain go1.24.1`行
+
+## 验证部署
+部署完成后,您可以通过以下方式验证服务是否正常运行:
+
+1. 访问 `http://您的服务器IP:8000` 检查API是否正常响应
+2. 访问 `http://您的服务器IP:8000/swagger/index.html` 查看API文档
+
+## 故障排除
+
+如遇到问题,请检查:
+
+1. 日志信息:`docker logs go-app` 或 `journalctl -u go-app`
+2. 配置文件是否正确
+3. 数据库连接是否正常
+4. 防火墙规则是否允许访问相关端口

+ 1 - 1
deploy/build/Dockerfile

@@ -1,5 +1,5 @@
 ARG REGISTRY=docker.io
-FROM ${REGISTRY}/golang:1.22-alpine AS builder
+FROM ${REGISTRY}/golang:1.24-alpine AS builder
 RUN set -eux && sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
 
 ARG APP_RELATIVE_PATH