Skip to main content

· 3 min read

本文介绍如何使用卷王问卷考试系统创建省、市、县、乡、村五级行政区划级联题。

获取数据源

首先我们需要准备行政区划字典,数据可以通过下面的公开渠道获取,也可以在卷王的 Q 群里面来获取。

添加到 Excel,格式如下

region-1

导入数据字典

系统管理 -> 字典管理 -> 新建,添加字典

region-2

然后点击字典项,并且选择导入我们的 Excel 模板数据,导入成功之后会在字典项列表里面显示所有的导入数据

region-3

编辑问卷添加

添加一道横向填空题,然后输入五个连续的填空,如 省____________市_________县______乡_______村________ ,点击每个填空,设置内容限制为 下拉单选,字典编码选择我们刚才创建的 行政区划,级联层级分为设置为 1、2、3、4、5,点击保存即可。

region-4

tip

卷王的横向填空不仅可以在题目上设置,而且可以在内容里面设置,会自动将三个以上的 ___ 识别为填空。

你甚至可以设置每个填空的数据类型,范围大小等等,并且多个相邻的并且字典编码相同的填空会自动识别为级联题。

FAQ

  1. 导入字典失败

由于字典数据有 70 多万条数据,并且差不多有 30M 大小,如 nginx 需要设置一下最大允许上传的文件大小 client_max_body_size 30m; 参数,避免文件上传失败。

· 2 min read

卷王默认将前端文件集成到了 jar 包里面,直接启动 jar 就能访问。

与此同时,卷王使用 nginx 进行部署,本方法主要使卷王与 apache 服务器所运行的项目共存。

tip

卷王的 演示环境 就是采用 nginx 前后端分离的方式部署。

本方法主要使 卷王 与 apache 服务器所运行的项目共存。

且默认您已部署 lnmpa 环境(推荐使用 lnmp.org 的脚本进行部署)

如何部署

# 1. 启动后端服务
nohup java -jar surveyking-v0.3.0.jar --server.port=1991 &

# 2. 将前端文件放入 apache 对应的目录
# 前端文件的位置在 server/api/src/main/resources/static 目录下面


# 3. 配置 nginx 并启动(配置文件如下)
nginx -s reload #lnmp nginx restart

nginx 配置

下面是应该添加到 nginx 配置文件的内容,如果添加了虚拟主机则应该填写入虚拟主机的配置文件

   server {
listen 443 ssl;
server_name www.surveyking.cn surveyking.cn;
ssl_certificate /usr/local/nginx/conf/ssl/surveyking.cn.cer; # ssl 配置
ssl_certificate_key /usr/local/nginx/conf/ssl/surveyking.cn.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;

location / {
root /usr/local/nginx/htdocs/; # 将静态文件放到 httpd.conf 的 DocumentRoot 选项的路径内
try_files $uri $uri/ /index.html;
}

location /api { # 将 api 请求代理到后端服务
proxy_pass http://localhost:1991;
set_real_ip_from 0.0.0.0/0; # 如果这里报错则重新编译 nginx,并添加--with-http_realip_module 选项
real_ip_header X-Forwarded-For;
real_ip_recursive on;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 20m;
proxy_http_version 1.1;
proxy_set_header Connection close;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_send_timeout 1800;
proxy_read_timeout 1800;
proxy_connect_timeout 1800;

}
}

· 4 min read

本文介绍小白如何部署卷王。

前期准备

在线视频教程

https://www.bilibili.com/video/BV15R4y1A7a2

如果以下图片看不清,请用鼠标右键点击图片,然后选择在新窗口打开

宝塔安装地址

https://www.bt.cn/new/download.html

软件安装

宝塔安装

  1. 首先在宝塔官网下载btWindows面板

  1. 下载完成后,打开宝塔安装文件,进行一键安装

4. 宝塔安装完成时可以看到以下的登录信息,这里需要用记事本记录,非常重要,丢失后重置比较麻烦

宝塔内部安装软件

  1. 安装mysql、nginx
  2. 进入 软件商店 在上方搜索mysql、nginx分别进行安装

上传卷王项目

  1. 选择 文件 菜单,点击新建,新建一个名为 surveyking 的目录

  1. 在QQ群将卷王最新的jar包上传到 surveyking 目录下

创建数据库

  1. 选择 数据库 菜单,点击 添加数据库 按钮,输入数据库相关信息
数据库名:surveyking
字符集:utf8mb4
用户名:surveyking
密码:surveyking123123
访问权限:所有人

  1. 上一步创建好以后,点击 导入,从QQ群下载最新的数据库脚本,导入到数据库

安装jdk

  1. 在群共享里面下载Windows版本的jdk,并进行安装,切记安装目录不能有空格,否则会出现意外情况

  1. 谈着这个框的时候就可以把安装目录全部关闭了,证明jdk已经安装完成,后续的jre不需要安装

创建网站

  1. 选择 网站 菜单,点击 Java项目 ,点击jdk管理,根据下图中的方式找到安装好的java.exe文件

  1. 选择 网站 菜单,点击 添加Java项目 按钮,输入相关信息
项目jar路径:C:/wwwroot/Java/bin/java.exe -ja
项目名称:surveyking-v0
项目端口:1991
项目执行命令:C:/wwwroot/Java/bin/java.exe -jar -Xmx1024M -Xms256M C:/wwwroot/surveyking/surveyking-v0.3.0-rc.1.jar --server.port=1991 --spring.datasource.url=jdbc:mysql://localhost:3306/surveyking --spring.datasource.username=surveyking --spring.datasource.password=surveyking123123

参数说明:

  • -Xmx1024M (可选) 设置运行最大使用内存,注意这两个参数前面只有一个 -
  • -Xms256M (可选) 设置运行最小使用内存
  • --server.port=1991 (可选) 默认端口是 1991,你可以任意指定,注意这两个参数前面有一个 --
  • --spring.datasource.url=jdbc:mysql://localhost:3306/surveyking (必须) 数据库名,选择第二步创建数据库时设置的数据库名、用户名、密码
  • --spring.datasource.username=surveyking (必须) 数据库用户名
  • --spring.datasource.password=surveyking123123 (必须) 数据库密码

配置nginx

  1. 进入到首页,点击nginx,选择 配置修改,将以下参数放到里面
server {
listen 80;
server_name 127.0.0.1;

location / {
proxy_pass http://localhost:1991;
set_real_ip_from 0.0.0.0/0;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 20m;
proxy_http_version 1.1;
proxy_set_header Connection close;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_send_timeout 1800;
proxy_read_timeout 1800;
proxy_connect_timeout 1800;

}
}

重要参数说明:

  • listen 代理监听端口
  • server_name 这里填写你的公网ip或者域名
  • proxy_pass 填写你在创建网站的http:ip+端口,默认就填写http://localhost:1991

卷王项目页

  1. 一切准备好以后在浏览器输入nginx的server_name就能出现如下图

· 4 min read

本文介绍小白如何部署卷王。

前期准备

在线视频教程

https://www.bilibili.com/video/BV1yY4y1b74N

如果以下图片看不清,请用鼠标右键点击图片,然后选择在新窗口打开

finashell下载

http://www.hostbuf.com/

宝塔安装地址

https://www.bt.cn/new/download.html

软件安装

宝塔安装

  1. 首先用finashell登录Linux服务器
  2. 输入以下命令,也可以使用宝塔官网最新的命令
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec

  1. 安装宝塔时,这里需要输入 y 来进行下一步安装

4. 宝塔安装完成时可以看到以下的登录信息,这里需要用记事本记录,非常重要,丢失后重置比较麻烦

宝塔内部安装软件

  1. 安装mysql、nginx
  2. 进入 软件商店 在上方搜索mysql、nginx分别进行安装

上传卷王项目

  1. 选择 文件 菜单,点击新建,新建一个名为 surveyking 的目录

  1. 在QQ群将卷王最新的jar包上传到 surveyking 目录下

创建数据库

  1. 选择 数据库 菜单,点击 添加数据库 按钮,输入数据库相关信息
数据库名:surveyking
字符集:utf8mb4
用户名:surveyking
密码:surveyking123123
访问权限:所有人

  1. 上一步创建好以后,点击 导入,从QQ群下载最新的数据库脚本,导入到数据库

创建网站

  1. 选择 网站 菜单,点击 添加Java项目 按钮,输入相关信息
项目jar路径:/www/wwwroot/surveyking/surveyking-v0.3.0-rc.1.jar
项目名称:surveyking-v0
项目端口:1991
项目执行命令:/usr/bin/java -jar -Xmx1024M -Xms256M /www/wwwroot/surveyking/surveyking-v0.3.0-rc.1.jar --server.port=123123 --spring.datasource.url=jdbc:mysql://localhost:3306/surveyking --spring.datasource.username=surveyking -spring.datasource.password=surveyking123123

参数说明:

  • -Xmx1024M (可选) 设置运行最大使用内存,注意这两个参数前面只有一个 -
  • -Xms256M (可选) 设置运行最小使用内存
  • --server.port=1991 (可选) 默认端口是 1991,你可以任意指定,注意这两个参数前面有一个 --
  • --spring.datasource.url=jdbc:mysql://localhost:3306/surveyking (必须) 数据库名,选择第二步创建数据库时设置的数据库名、用户名、密码
  • --spring.datasource.username=surveyking (必须) 数据库用户名
  • --spring.datasource.password=surveyking123123 (必须) 数据库密码

配置nginx

  1. 进入到首页,点击nginx,选择 配置修改,将以下参数放到里面
server {
listen 80;
server_name 192.168.198.135;

location / {
proxy_pass http://localhost:1991;
set_real_ip_from 0.0.0.0/0;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 20m;
proxy_http_version 1.1;
proxy_set_header Connection close;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_send_timeout 1800;
proxy_read_timeout 1800;
proxy_connect_timeout 1800;

}
}

重要参数说明:

  • listen 代理监听端口
  • server_name 这里填写你的公网ip或者域名
  • proxy_pass 填写你在创建网站的http:ip+端口,默认就填写http://localhost:1991

卷王项目页

  1. 一切准备好以后在浏览器输入nginx的server_name就能出现如下图

· 3 min read

准备工作

新建配置文件

在根目录新建配置文件 application.properties,内容如下。其中我们将数据库的连接配置采用从环境变量中获取。

spring.application.name=SurveyKing
server.port=1991
spring.datasource.url=jdbc:mysql://${MYSQL_ADDRESS}/${MYSQL_DATABASE}
spring.datasource.username=${MYSQL_USERNAME}
spring.datasource.password=${MYSQL_PASSWORD}

新建 Dockerfile

在根目录新建 Dockerfile 文件,内容如下:

FROM maven:3.6.0-jdk-8-slim as build

ENV WEB_PATH /home/surveyking

COPY ./server $WEB_PATH
WORKDIR $WEB_PATH

# 这步是构建镜像的时候编译代码
# 如果在构建时编译时间过长,也可以将此命令注释,在本机进行构建

RUN mvn clean package -DskipTests -Ppro

FROM alpine

RUN apk add --update --no-cache openjdk8 \
&& rm -f /var/cache/apk/*

ENV WEB_PATH /home/surveyking
WORKDIR $WEB_PATH
COPY . $WEB_PATH

# 此命令是将上一个静像编译好的目标文件复制到我们的工作目录
# 如果你编译是在本机进行,此命令也一同注释即可
COPY --from=build /home/surveyking/api/target/ $WEB_PATH/server/api/target

# 这里要注意的是,运行的 surveyking-v0.3.0-beta.7.jar 包,要根据当前编译后的版本号来修改启动命令

RUN echo '#!/bin/sh' >> start.sh \
&& echo "java -jar ./server/api/target/surveyking-v0.3.0-beta.7.jar" >> start.sh

CMD ["sh", "start.sh"]

文件准备好后,执行构建静像操作

sudo docker build -t surveyking/server .

导入数据

创建 mysql 数据库,然后执行初始化脚本,下载脚本

启动容器

命令如下,其实中 80 端口为对外暴露的端口。

MYSQL_ADDRESS、MYSQL_DATABASE、MYSQL_USERNAME、MYSQL_PASSWORD 为刚才导入数据时数据的一些权限,这里采用通过环境变量的形式注入。

其中数据库 surveyking_app_table 数据库要提前创建好,并把上面的sql数据导入

sudo docker run -it -d --name surveyking-app -p 8877:1991 -e MYSQL_PASSWORD=123456 -e MYSQL_USERNAME=root -e MYSQL_DATABASE=surveyking_app_table -e MYSQL_ADDRESS=172.16.1.13:3306 surveyking/server

执行命令后,通过 http://127.0.0.1:8877 访问。

· 2 min read

本文介绍如何使用宝塔来部署卷王。

环境要求

  • mysql 版本 >= 5.6
  • jdk 版本 >= 1.8

安装步骤

准备安装文件

本地准备好安装文件,可以通过 gitee release 页面 获取最新的安装包(下载速度慢),也可以加入 QQ 群(1074277968)在群文件里面获取最新的安装包(下载速度快)。

  1. 安装包 surveyking-v0.3.0.jar
  2. 数据库文件 init-mysql.sql

bt1

创建数据库

通过宝塔面板创建数据库,记录用户名和密码。

bt2

选择数据库文件,并导入

bt3

开始导入

bt4

上传安装包

上传安装包到指定的目录,如 /www/wwwroot/surveyking

bt5

开始安装

开始创建 java 项目,选择项目 jar 路径,在项目执行命令里面输入如下命令,注意项目用户选择 root,点击确定。

/usr/bin/java -jar -Xmx512 -Xms256M /www/wwwroot/survey/surveyking-v0.x.x.jar --server.port=1991 --spring.datasource.url=jdbc:mysql://localhost:3306/surveyking --spring.datasource.username=surveyking --spring.datasource.password=123456

参数说明:

  • -Xmx1024M (可选) 设置运行最大使用内存,注意这两个参数前面只有一个 -
  • -Xms256M (可选) 设置运行最小使用内存
  • --server.port=1991 (可选) 默认端口是 1991,你可以任意指定,注意这两个参数前面有一个 --
  • --spring.datasource.url=jdbc:mysql://localhost:3306/surveyking (必须) 数据库名,选择第二步创建数据库时设置的数据库名、用户名、密码
  • --spring.datasource.username=root (必须) 数据库用户名
  • --spring.datasource.password=123456 (必须) 数据库密码

bt6

启动成功

bt7

获取帮助

安装过程或者使用过程中有任何问题,可以加群 1074277968 寻求帮助。

· 2 min read

卷王默认将前端文件集成到了 jar 包里面,直接启动 jar 就能访问。

同时提供了 nginx 前后端分离的方式部署。

tip

卷王的 演示环境 就是采用 nginx 前后端分离的方式部署。

如何部署

# 1. 启动后端服务
nohup java -jar surveyking-v0.3.0-beta.10.jar --server.port=1991 &
# 这里的surveyking-v0.3.0-beta.10.jar是你目录里的.jar的真实名字

# 2. 将前端文件放入 nginx 对应的目录
# 前端文件的位置在 server/api/src/main/resources/static 目录下面


# 3. 配置 nginx 并启动(配置文件如下)
nginx -s reload

nginx 配置

下面是卷王线上环境 nginx 配置,如果所使用的是nginx的虚拟主机请添加到对应的虚拟主机配置文件(vhost/域名.conf)

   server {
listen 443 ssl;
server_name www.surveyking.cn surveyking.cn;
ssl_certificate /usr/local/nginx/conf/ssl/surveyking.cn.pem; # ssl 配置
ssl_certificate_key /usr/local/nginx/conf/ssl/surveyking.cn.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;

location / {
root /usr/local/nginx/html/website; # 将静态文件放到该目录下面
try_files $uri $uri/ /index.html;
}

location /api { # 将 api 请求代理到后端服务
proxy_pass http://localhost:1991;
set_real_ip_from 0.0.0.0/0;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 20m;
proxy_http_version 1.1;
proxy_set_header Connection close;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_send_timeout 1800;
proxy_read_timeout 1800;
proxy_connect_timeout 1800;

}
}

· 3 min read

SurveyKing(卷王)是一个功能强大、安装简单的调查问卷系统,卷王的愿景是降低问卷系统门槛,让人人可以快速搭建一个调查问卷系统。

竞品对比

下面列出卷王和市面常用的一些调查问卷网站对比。

功能特性卷王问卷星问卷网腾讯问卷金数据表单大师调问企业版Tduck企业版
题型数量一般一般一般
手机端创建问卷××
私有部署价格免费一般
支持投票××
支持考试×××
问题校验一般一般一般
逻辑设置一般一般一般一般
计算字段××
文本替换××

SK 编辑器结构

editor-structure

  1. 题型,可以点击或者拖拽将问题添加到编辑区域
  2. 题库,
  3. 大纲,显示当前问卷的大纲
  4. 外观,可以设置问卷的背景图,页眉图
  5. 撤销回退,编辑问卷时允许编辑、撤销
  6. JSON,显示当前问卷的 JSON schema,编辑 JSON 会实时的同步到问卷,你可以自定义问题或者选项的 id
  7. 问题,SK 的问题和选项的设置是分开的,点击问题侧边栏会弹出问题的设置
  8. 选项,点击选项,侧边栏会弹出选项的设置
  9. 预览,可以实时预览问卷,比如