最近在负责团队内部培训考核时我遇到了一个很尴尬的境地用在线表单工具收集问卷很方便但一旦要做考试、错题统计、题库维护免费版功能就卡住了找付费系统费用不高不低最麻烦的是数据全部存在别人平台上导出一次还要申请。后来在 GitHub 上逛开源项目时发现了 SurveyKing中文名叫“卷王”把问卷收集、在线考试、题库刷题、AI 智能试卷全部串在了一起。这篇文章就围绕 SurveyKing 的安装、配置和使用展开把整个系统从零到可用的过程讲清楚。先说一个明确判断SurveyKing 不是那种“看起来很唬人实际部署很折腾”的开源项目。它的核心价值在于把高频使用、但过去需要多个工具组合才能完成的工作收拢到一个本地化系统里。如果你正在找一套能自己掌控数据、支持问卷和考试双场景、还能通过 AI 辅助组卷的开源系统SurveyKing 是当前比较务实的选择。这篇文章主要面向三类读者一是想用开源系统替代付费问卷平台的运维或后端开发二是需要搭建在线考试环境的教育行业技术人员三是希望在内部知识管理和培训考核上自建工具的企业 IT 人员。接下来我会从核心概念、部署方式、功能实操、常见问题和生产环境建议几个角度展开。整个阅读过程大概需要 15 分钟建议收藏后照着操作先把最小闭环跑通再逐步扩展到正式环境。1. 这篇文章真正要解决的问题先聊一个实际问题为什么很多人明明需要问卷和考试系统却迟迟没有自建过去我见过不少团队的做法是这样的问卷用表单工具、考试找考试平台、刷题用微信群发 Excel。工具之间数据不互通每次考核结束负责统计的人要手动整理 Excel从一个系统导出来再导进另一个系统。如果是几十人的小团队还好一旦人数上百这种手动流程的维护成本就非常明显。另一种做法是自研。从用户管理、题库设计、组卷逻辑、考试计时、自动阅卷、成绩统计再到前端问卷页面一套完整功能开发下来至少是几周的工作量。更麻烦的是很多团队其实并不需要特别复杂的业务逻辑只是要一个“够用、稳定、能私有部署”的系统。SurveyKing 解决的问题就在这个位置它用开源的方式提供了一个本地部署的问卷考试一体化平台。你不必从零开发也不用把数据托管在第三方平台。系统本身支持问卷收集、在线考试、题库刷题和 AI 智能试卷生成覆盖了日常培训和考核的大部分场景。文章会讲清楚四个关键点如何用 Docker 快速安装 SurveyKing如何完成系统初始化和基础配置如何创建问卷、考试和题库刷题任务如何排查常见部署问题并在生产环境安全使用。读完这篇文章你应该有能力自己把系统跑起来并完成一个包含“创建题库 - 组卷 - 发布考试 - 查看成绩”的完整流程。2. SurveyKing 的核心概念与适用场景2.1 SurveyKing卷王是什么SurveyKing 是一个开源的问卷与考试系统。从功能定位上看它并不只是一个问卷工具而是把“数据收集”和“考试考核”两条线合并到了一起。在实际使用中你可以把它理解成三个系统合体问卷系统用来做投票、报名、满意度调查、信息收集考试系统用来做正式考核、答题计时、自动阅卷、成绩统计刷题系统用来建立题库让学员反复练习巩固知识点。标题中提到的“AI 智能试卷”是这个项目的亮点之一。它借助 AI 能力辅助出题和组卷减少人工编写题目的工作量。不过这里要特别说明一点AI 生成内容后建议仍然通过人工审核再发布尤其是正式考试场景不能完全依赖机器出题。2.2 核心功能模块从系统结构上看SurveyKing 主要包含以下模块模块功能说明典型使用场景问卷管理创建问卷、设计题目、发布链接、回收数据满意度调查、报名表、需求收集考试管理组织试卷、发布考试、自动阅卷、成绩统计员工考核、学校测验、资格认证题库管理维护题目、分类、导入导出、复用题目建立企业题库、学科题库刷题练习将题库内容组织成刷题任务供用户反复练习考前准备、日常训练数据统计回收数据可视化、导出 Excel报表分析、决策支持AI 智能试卷根据主题或知识点自动生成试题快速生成一套练习题2.3 与其他方案的对比很多开发者会好奇SurveyKing 和问卷星、腾讯问卷这种在线工具或者和蓝墨云班课、超星学习通这类在线教育平台比差异在哪对比维度SurveyKing在线问卷工具在线教育平台部署方式私有化部署数据在本地SaaS 平台数据托管在服务商SaaS 平台通常不开放部署功能边界问卷 考试 题库以问卷为主以课程与考试为主二次开发开源可改代码受平台限制一般不开放源码成本服务器成本 维护成本按年订阅或高级版收费按用户数或班级收费AI 出题支持部分平台支持部分平台支持如果把这套系统放在一个公司内部使用它最大的价值是数据可控。问卷回收的答案、考试的成绩、题库的题目都保存在自己的服务器上这对一些对数据敏感的场景非常重要。2.4 适用与不适用场景从我的判断来说SurveyKing 更适合以下情况企业内部培训考核系统学校或培训机构的小型在线考试团队内部问卷、投票、信息收集作为二次开发的基础项目扩展成更复杂的考试平台。不太适合的场景包括超大规模并发考试例如几十万人同时在线的全国性考试对防作弊有极强要求的严肃考试这需要专业的监考插件和人工监考配合需要强互动直播教学的一体化平台。做一个不严谨但容易理解的类比SurveyKing 更像一个“工具箱”而不是“自动化工厂”。它帮你把问卷、考试、刷题这些高频动作整理到位但它不会替你解决组织流程、监考制度和业务治理问题。3. 安装前的环境准备与部署方式选择3.1 三种部署方式对比SurveyKing 作为一套前后端分离的开源系统提供了常见的几种部署方式。不同技术背景的人可以选择不同路径部署方式适用人群难度说明Docker 方式运维、后端开发低依赖最少一条命令拉起服务Jar 包方式有 Java 环境的开发者中需要手动准备数据库和运行环境源码构建需要二次开发的开发者中高克隆代码、构建前端、修改后端配置对于大多数使用者推荐先使用 Docker 部署。它的好处是不关心 Java 版本怎么配、前端怎么打包只要 Docker 环境正常就能在几分钟内把服务跑起来。3.2 环境要求实际部署前先确认机器的基本情况。这里不确定的项目以官方文档为准我列出的是通用建议操作系统Linux / Windows / macOS 均可服务器推荐 LinuxDocker建议安装 Docker 20.10 以上版本并开启 Docker Compose 插件内存至少 2GB推荐 4GB 以上。因为要同时运行应用服务和数据库数据库MySQL 5.7 或 8.0具体以项目文档说明为准端口默认使用 8080 端口需要确保防火墙放行域名如果需要公网访问建议提前准备域名并配置好解析。如果你是在自己的电脑上用 Docker Desktop 测试Windows 和 macOS 都没有问题。部署到云服务器时注意安全组要放行对应端口。3.3 数据库准备Docker 部署方式下MySQL 可以和应用一起通过 docker-compose 启动但还是建议提前手动创建一个数据库避免容器启动时因为初始化问题报错。以 MySQL 为例创建数据库的 SQL 如下CREATE DATABASE IF NOT EXISTS surveyking DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci;这里统一使用 utf8mb4 字符集可以保证中文和特殊字符正常存储。注意SurveyKing 在首次启动时会自动初始化表结构不需要手动执行建表脚本。4. 基于 Docker 的快速安装4.1 编写 docker-compose 配置为了演示通用逻辑下面给出一个包含 MySQL 和 SurveyKing 应用的 compose 文件。不同版本的镜像路径和环境变量会有所差异实际部署时请替换为项目官方文档中的镜像地址和配置项。version: 3.8 services: mysql: image: mysql:8.0 container_name: surveyking-mysql restart: unless-stopped environment: TZ: Asia/Shanghai MYSQL_ROOT_PASSWORD: your_root_password MYSQL_DATABASE: surveyking MYSQL_USER: surveyking MYSQL_PASSWORD: your_surveyking_password command: - --default-authentication-pluginmysql_native_password - --character-set-serverutf8mb4 - --collation-serverutf8mb4_general_ci ports: - 3306:3306 volumes: - ./mysql-data:/var/lib/mysql surveyking: image: surveyking/surveyking:latest container_name: surveyking-app restart: unless-stopped depends_on: - mysql environment: TZ: Asia/Shanghai SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/surveyking?useUnicodetruecharacterEncodingutf8serverTimezoneAsia/ShanghaiuseSSLfalse SPRING_DATASOURCE_USERNAME: surveyking SPRING_DATASOURCE_PASSWORD: your_surveyking_password SERVER_PORT: 8080 ports: - 8080:8080这个配置做了几件关键事情创建独立的 MySQL 容器并指定数据库名、用户名和密码将 MySQL 数据目录挂载到宿主机的./mysql-data目录防止容器删除后数据丢失将 SurveyKing 应用的数据库连接指向mysql容器将宿主机的 8080 端口映射到容器内端口。4.2 启动服务在保存好docker-compose.yml的目录下执行docker compose up -d如果 Docker 环境中没有docker compose插件也可以使用旧版命令docker-compose up -d首次执行会从镜像仓库拉取镜像速度取决于网络环境。启动完成后通过下面的命令查看容器状态docker ps正常情况下可以看到surveyking-mysql和surveyking-app两个容器状态为Up。4.3 验证服务是否启动成功查看应用日志docker logs -f surveyking-app当日志中出现类似“Started Application”或“Tomcat started on port 8080”的信息时说明服务已经启动。接着在浏览器中访问http://localhost:8080如果看到系统管理后台的登录页面说明基础安装已经成功。如果页面无法访问先检查几个地方容器是否正常运行、8080 端口是否被占用、防火墙或安全组是否放行。更详细的排查思路会在后面单独小节说明。5. 基础配置与初始化5.1 登录管理后台系统安装完成后第一个要解决的问题是如何登录。不同的部署版本默认管理员账号可能不同最稳妥的方式是查阅项目官方文档中关于初始账号的说明或者在登录页查看提示。登录后有三件事建议第一时间完成修改默认管理员密码在系统设置中检查站点名称、域名等基础信息创建几个测试账号或者直接开始创建第一个问卷。这里特别提醒无论部署环境是测试还是生产默认密码都必须修改。这是最容易忽略但最重要的一步尤其是部署在公网服务器上的系统。5.2 系统设置的常用项进入后台后可以在“系统设置”或“基础配置”中找到以下配置配置项推荐值说明站点名称自定义会显示在问卷页面或用户端首页公告自定义可用来发布考试通知文件存储路径默认涉及导出文件、图片上传邮件通知按需配置用于发送问卷回执或考试成绩通知用户注册按需开启内部系统建议关闭开放注册内部使用时建议关闭“开放注册”改为由管理员统一创建账号这样便于管理考试和问卷的参与人范围。5.3 创建第一个问卷SurveyKing 的问卷创建流程非常常规大体分为三步新建问卷填标题和说明添加题目选择题型保存并发布获得问卷链接。在题目类型方面通常支持单选、多选、填空、评分、排序等常见题型。发布后系统会生成一个专属访问地址发送给参与者即可填写。5.4 模板与复用如果团队需要频繁创建同一类问卷建议先把常用结构保存为模板。比如新员工入职回访问卷、课程满意度问卷这类问卷结构变化不大保存模板后下次新建问卷只需要修改部分题目即可效率会高很多。6. 问卷收集与数据统计实操6.1 设计一份问卷问卷调查是 SurveyKing 最基础的能力。下面用一个“员工培训满意度调查”来演示。新建问卷后依次添加题目。题目设置中有几个值得关注的选项是否必答是否匿名是否允许多选题是否开启逻辑跳转。逻辑跳转是一个非常实用的功能。举个例子如果用户选择“不满意”下一题自动跳出“请描述不满意的地方”如果选择“满意”则下一题是“您认为哪些方面还可以提升”。这种动态问卷体验明显优于普通的静态表单。6.2 发布与回收数据问卷保存后点击发布系统会生成链接和二维码。你可以把链接发到微信群、钉钉群或者嵌入到内部门户网站。数据回收时后台会实时展示填写进度。回收结束后可以使用系统的导出功能将数据导出为 Excel 文件或者查看系统内置的统计图表。导出数据的频率建议按项目节点执行。比如调查持续一周建议每天导出一次增量数据避免最后一天忘记保存。6.3 一个容易被忽略的点问卷在收集过程中尽量不要再修改题目结构。如果删掉一道题会直接影响已回收数据的统计一致性。如果确实需要修改建议复制原问卷保留数据然后在新问卷中修改题目并重新发布这样既能保证数据完整又能灵活调整内容。7. 在线考试与题库刷题完整流程7.1 题库管理题库是考试系统的核心。没有题库组卷就成了无源之水。管理员需要先建立题库然后按科目或分类维护题目。支持的题型通常包括单选题、多选题、判断题、填空题和简答题。关于题目录入有两个推荐方式小批量题目可以直接在系统后台手动添加大批量题目建议使用 Excel 导入功能。以 Windows 或 macOS 环境为例先从系统中下载官方提供的 Excel 模板接着按模板填写题目信息。下面是一个示意结构最终格式请以下载到的模板为准题型,题干,选项A,选项B,选项C,选项D,答案,解析 单选题,下列哪个不是编程语言?,Python,Java,HTML,Golang,C,HTML 是标记语言 判断题,Java 是一种编译型语言,对,错,对,,A,Java 先编译为字节码再解释执行导入前系统通常会做格式校验。如果出现“导入失败”优先检查有没有多余表头、题目类型是否在系统支持范围内、答案列是否正确。7.2 组合试卷组卷时有两种常见策略从题库中手动选题适合需要精准控制的正式考试按规则自动抽题适合随机组卷和练习题。正式考试建议采用“手动组卷 随机排序”的方式管理员先人工挑选题目然后设置题目顺序随机或选项顺序随机降低考生之间互相传答案的风险。7.3 发布考试考试发布时需要设置以下参数考试名称开始时间和结束时间考试时长是否允许查看成绩或答案是否允许多次参加是否开启防切屏或摄像头监考根据系统版本而定。发布后系统会生成考试链接或二维码。参与人登录后进入考试页面系统会基于服务器时间自动判断考试是否在有效期内。7.4 自动阅卷与成绩统计对于客观题系统可以自动判断正确与错误并计算得分。管理员发布成绩后考生可以在个人中心查看成绩。如果包含简答题这类主观题需要管理员手动阅卷评分。这里有一个工作流建议先让系统自动批改客观题再集中处理主观题避免频繁切换页面。7.5 题库刷题“题库刷题”功能面向的是备考或日常练习场景。管理员可以将一部分题库内容发布为“刷题任务”参与者反复练习。刷题与正式考试的区别在于刷题更强调即时反馈答完一题能立刻看到答案和解析考试则更强调规范流程通常会限制次数、限制时长。在这个功能上SurveyKing 的价值在于它把“正式考试”和“日常练习”放进了同一套系统。管理员不用为每个场景各搭一套平台参与者也不需要记住多个不同系统的账号。7.6 AI 智能试卷的使用建议标题中的“AI 智能试卷”是这个项目比较有吸引力的功能。它的基本逻辑是管理员给出主题或知识点范围AI 辅助生成一批试题或组织成一套试卷。这里要明确两点AI 出题适合用来生成练习卷、模拟卷、知识自测卷正式考核建议人工复核后再发布尤其是涉及专业领域时AI 可能生成答案有误或表述不严谨的题目。实际操作中可以把 AI 当作“出题灵感工具”或“初稿生成器”生成后由管理员审核、修改再放入正式题库。这样既能提高效率又能保证命题质量。8. 常见问题与排查思路在实际部署和使用过程中有一些非常典型的问题下面整理成表格方便快速定位。问题现象可能原因排查方式解决方案容器启动后立即退出数据库配置错误或连接不上数据库查看应用容器日志检查数据库容器是否正常、账号密码是否正确页面访问报 404前端页面未正确加载或映射路径错误检查容器日志和网络配置确认端口映射正确访问的是 http://localhost:8080 而非 /index数据库中文乱码数据库字符集设置错误查看数据库字符集建库时使用 utf8mb4并确认连接参数包含 characterEncodingutf8800 端口被占用宿主机已有其他程序使用该端口执行 netstat 或 lsof 查看端口修改 compose 文件中的端口映射例如改为 8081:8080Excel 导入失败模板格式不对或数据类型不规范查看系统提示信息重新下载官方模板严格按模板格式填写上传文件后无法访问存储路径权限错误查看容器内存储目录权限检查挂载目录是否存在并有读写权限收到密码找回邮件失败SMTP 邮件配置错误测试 SMTP 连通性检查邮箱授权码和端口配置AI 智能试卷生成失败API Key 未配置或接口异常查看系统日志中的 AI 调用记录确认按官方文档正确配置 AI 服务参数如果还遇到其他问题先养成一个习惯第一时间看日志。docker logs -f surveyking-app日志中会输出异常堆栈和错误码。拿到错误信息后再去搜索或查阅文档效率远高于盲目猜测。9. 最佳实践与工程建议9.1 数据安全方面使用 SurveyKing 构建问卷和考试系统时最容易忽略的是数据安全。下面几条建议是底线修改默认管理员密码并启用强密码策略数据库不要使用 root 账户连接应用而是新建最小权限账号如果部署在公网建议统一通过 HTTPS 访问关闭不必要的开放注册内部系统尽量由管理员创建用户定期备份数据库和上传文件目录。数据库备份是一个容易被忽视的动作。下面是一个基于 Docker 的备份命令示例docker exec surveyking-mysql mysqldump -usurveyking -p your_surveyking_password surveyking surveyking_backup_$(date %Y%m%d).sql备份文件保存后建议再复制一份到其他机器或对象存储避免单点故障。9.2 版本升级与维护开源项目都会持续迭代。升级前先做好三件事在测试环境完整回归一遍关键流程备份数据库和配置文件确认版本之间的差异尤其是数据库表结构变化。升级时不要直接删掉旧容器重新拉镜像。建议按“备份 - 停旧容器 - 拉新镜像 - 启动新容器 - 验证功能”的顺序执行。9.3 合规与边界意识问卷系统会收集大量用户数据。在开展满意度调查、考试考核时需要遵守相关法律法规和公司内部数据管理制度。尽量做到只收集完成业务所必需的数据问卷页面上注明收集目的和数据用途不使用系统采集身份证号、银行卡号等敏感信息数据存储和导出权限最小化只开放给必要人员。9.4 二次开发建议如果你准备基于 SurveyKing 做二次开发建议先熟悉项目的前后端工程结构。一般来说后端修改主要在业务模块扩展和数据库表新增前端修改主要在设计器组件和页面样式。从工程角度看推荐一开始就引入代码规范工具并保证基础分支的提交粒度清晰。这样后续从上游同步更新代码时冲突范围会更小。10. 总结与后续学习方向SurveyKing 是一个功能覆盖很完整、安装门槛不高的开源问卷考试系统。通过 Docker 部署可以在十几分钟内跑起一套包含问卷收集、在线考试、题库刷题和 AI 智能试卷的系统。这篇文章的核心脉络可以简化为三句话先用 Docker 把系统跑起来再用问卷和考试两个场景验证核心流程最后把安全配置和数据备份补齐。如果你想继续深入可以从三个方向推进第一把系统投入到实际业务中用一次员工培训考核或客户满意度调查验证功能完整性顺便发现团队使用习惯上的问题。第二阅读 SurveyKing 官方文档和源码搞清楚题库表结构、试卷生成逻辑和权限模型。当你需要增加新的题型或者对接企业内部单点登录时这些知识会变得非常关键。第三关注项目的版本迭代和社区动态。开源项目的变化节奏往往很快新版本可能带来新的题型、更完善的 AI 功能或更好的性能优化。及时更新并保持测试环境验证的习惯能让系统长期稳定运行。最后提醒一句无论工具多么顺手问卷设计、考试命题和数据分析本身仍然需要人的专业判断。AI 智能试卷可以帮你快速生成草稿但正式发布前人工复核永远是值得保留的步骤。先把最小闭环跑通再逐步完善这个过程比收藏一堆教程有用得多。