跳到主要内容

宝塔部署 SurveyKing Pro

宝塔部署适合希望通过图形界面管理数据库、Java 服务和 Nginx 的团队。面板版本不同会导致按钮名称略有差异,但部署目录、端口和验证方法保持一致。

准备文件

  • surveyking-server.jar:后端程序。
  • surveyking-pro.sql:数据库初始化脚本。
  • 前端压缩包:解压后应包含 dist/publicdist/admin
  • 版本随附的配置说明和 License。

建议将文件放到 /www/wwwroot/surveyking/

/www/wwwroot/surveyking/
├── server/surveyking-server.jar
├── dist/public/
├── dist/admin/
├── config/application.yml
├── files/
└── logs/

1. 安装运行环境

按照宝塔官方说明安装面板,然后从软件商店安装:

  • Nginx stable 版本。
  • MySQL 5.7 或 8.0。
  • Redis 6 或 7。
  • Java 项目管理器和 Java 8 运行环境。
不要通过安装 Tomcat 获取 JDK

SurveyKing 后端是可独立运行的 Spring Boot JAR,不需要 Tomcat。使用宝塔的 JDK 管理功能或操作系统包管理器安装 Java 8。

MySQL、Redis 和后端端口不应暴露到公网。防火墙只开放站点使用的 HTTP/HTTPS 端口和必要的运维入口。

2. 创建并初始化数据库

数据库 页面创建:

  • 数据库名:survey
  • 字符集:utf8mb4
  • 用户:使用独立账号,不要让应用使用 root
  • 访问权限:后端与数据库在同一服务器时选择本地访问。

在宝塔面板中创建 survey 数据库和独立用户

进入数据库管理页面,导入 surveyking-pro.sql

在宝塔数据库管理页面选择 SQL 文件

确认导入 SurveyKing 数据库初始化脚本

完成标志: 数据库中已经生成 SurveyKing 业务表,导入过程没有报错。

3. 配置后端

创建 /www/wwwroot/surveyking/config/application.yml,只保存当前环境需要覆盖的配置:

server:
port: 48080

spring:
datasource:
dynamic:
datasource:
master:
name: survey
url: jdbc:mysql://127.0.0.1:3306/survey?allowMultiQueries=true&useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
username: surveyking
password: '请替换为数据库密码'
redis:
host: 127.0.0.1
port: 6379
database: 0
# Redis 未设置密码时删除下一行。
password: '请替换为 Redis 密码'

Java 项目 中添加 Spring Boot 项目:

配置项建议值
JAR/www/wwwroot/surveyking/server/surveyking-server.jar
JavaJava 8
端口48080
运行用户使用专用低权限用户,不使用 root
启动参数见下方
--spring.profiles.active=prod --spring.config.additional-location=optional:file:/www/wwwroot/surveyking/config/

不要把数据库或 Redis 密码写进启动命令;命令可能显示在进程列表和面板日志中。

启动后查看项目日志,确认不存在数据库、Redis、端口占用或 License 错误。

4. 创建前端站点

网站 页面创建站点:

  • 域名:填写实际域名,不使用示例域名。
  • 根目录:可先选择 /www/wwwroot/surveyking/dist/admin
  • PHP:选择纯静态。
  • 数据库和 FTP:不需要创建。

在宝塔面板中创建 SurveyKing 纯静态站点

打开站点的 Nginx 配置:

  1. 参考标准 Nginx 配置复制 server 中的路由和代理规则。
  2. /opt/surveyking/client/dist 替换为 /www/wwwroot/surveyking/dist
  3. 保持后端地址为 127.0.0.1:48080
  4. map $http_upgrade ... 放入 Nginx 主配置的 http {},不要放入站点的 server {}
  5. 使用 nginx -t 检查后再重载配置。
不要使用“反向代理”界面覆盖整个站点

只需要代理 /admin-api/captcha。如果把 / 整体代理到 Java 后端,前端静态资源和浏览器路由将无法正常工作。

HTTP 验证通过后,再通过宝塔为站点配置 HTTPS。HTTP 和 HTTPS 必须使用同一组前端路由与接口代理规则。

5. 验证部署

依次检查:

# 后端端口
ss -lntp | grep 48080

# Nginx 语法
nginx -t

# 两个前端入口
curl -I http://127.0.0.1/pub/index.html
curl -I http://127.0.0.1/adm/index.html

# Nginx 健康检查
curl http://127.0.0.1/health

然后使用普通账号完成登录、创建测试项目、提交答卷和上传文件。

6. 上线后配置

文件服务

进入 基础设置 → 文件管理 → 文件配置,设置附件存储目录和对外访问域名。本地存储目录应使用 /www/wwwroot/surveyking/files,并授予 Java 项目运行用户读写权限。

配置 SurveyKing 本地文件存储目录和访问域名

文件访问域名

文件配置中的域名必须能被实际用户访问。内网部署不要填写 127.0.0.1 或只在服务器本机可用的地址。

可选集成

按业务需要配置微信公众号、企业微信、钉钉、邮件、短信和 OCR。每项集成都应使用普通用户完成一次授权或调用测试,再投入正式使用。

常见问题

Java 项目启动后立即停止

先查看 Java 项目日志,重点检查 Java 版本、数据库连接、Redis 密码、配置目录和 48080 端口占用。

管理后台可以打开,答题链接空白

检查 dist/public 是否完整,以及 /pub//e//s//t//q//share//redeem//user/login 是否按标准配置返回 public 入口。

上传文件提示成功,但无法预览

检查文件目录权限、文件配置中的域名,以及 HTTPS 页面是否引用了 HTTP 文件地址。