Skip to main content

· 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 群(338461197)在群文件里面获取最新的安装包(下载速度快)。

  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

获取帮助

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

· 2 min read

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

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

tip

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

如何部署

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

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


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

nginx 配置

下面是卷王线上环境 nginx 配置

   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. 预览,可以实时预览问卷,比如