跳到主要内容

Linux 手动部署开源版

Linux 手动部署适合有技术人员维护服务器的场景,需要自己安装 Java,并在 /setup 页面完成数据库初始化。

使用场景

  • 你不想用 Docker,也不想用宝塔。
  • 服务器环境需要自己控制,比如已有 MySQL 或已有运维规范。
  • 你能通过 SSH 连接服务器,并能复制命令执行。
注意

如果你没有技术基础,不建议从本文开始。优先使用 宝塔一键部署Docker Compose 部署

准备文件

只需要准备一个文件:

文件下载地址用途
surveyking.jarhttps://download.surveyking.cn/files/surveyking.jar卷王应用程序

获取方式:

curl -L -o surveyking.jar https://download.surveyking.cn/files/surveyking.jar
提示

v1.12.0 不需要手动导入 init-mysql.sql。选择 MySQL 时,系统会在 /setup 页面自动初始化数据库。

操作步骤

1. 安装 Java

卷王需要 Java 8 或 Java 11。

Ubuntu / Debian:

sudo apt update
sudo apt install -y openjdk-8-jdk

CentOS / RHEL:

sudo yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel

检查 Java 是否安装成功:

java -version

能看到 Java 版本号即可。

2. 如果要用 MySQL,先创建空数据库

如果你只是试用,可以跳过这一步,后面在 /setup 选择 H2 内置数据库

正式使用建议安装 MySQL。MySQL 建议使用 5.78.0

Ubuntu / Debian:

sudo apt install -y mysql-server
sudo systemctl enable --now mysql

CentOS / RHEL:

sudo yum install -y mysql-server
sudo systemctl enable --now mysqld

登录 MySQL:

mysql -u root -p

如果 Ubuntu 提示 root 不能直接登录,可以用:

sudo mysql

执行下面的 SQL。把 你的MySQL密码 改成一个更复杂的密码,并保存好。

CREATE DATABASE surveyking DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'surveyking'@'localhost' IDENTIFIED BY '你的MySQL密码';
GRANT ALL PRIVILEGES ON surveyking.* TO 'surveyking'@'localhost';
FLUSH PRIVILEGES;
EXIT;

这里只创建空数据库,不要手动导入 SQL。

3. 下载 jar 并启动卷王

创建应用目录:

sudo mkdir -p /opt/surveyking/files /opt/surveyking/logs
sudo chown -R $USER:$USER /opt/surveyking

下载后端 jar:

cd /opt/surveyking
curl -L -o surveyking.jar https://download.surveyking.cn/files/surveyking.jar

启动卷王:

nohup java -Xms512m -Xmx1024m -jar /opt/surveyking/surveyking.jar \
--spring.profiles.active=h2 \
--server.port=1991 \
--file-storage.local.root-path=/opt/surveyking/files \
> /opt/surveyking/logs/surveyking.log 2>&1 &

查看启动日志:

tail -f /opt/surveyking/logs/surveyking.log

看到 Started SurveyServerApplication 后,说明启动成功。

4. 打开 /setup 完成初始化

浏览器访问:

http://服务器公网IP:1991

第一次打开会进入 /setup 页面。

  • 试用:选择 H2 内置数据库
  • 使用 MySQL:选择 MySQL 数据库,部署方式选择 其他 MySQL 服务

MySQL 信息按下面填写:

配置项填写内容
数据库地址localhost
端口号3306
数据库名称surveyking
用户名surveyking
密码第 2 步设置的密码

然后按 初始化、备份和升级 填写系统信息并完成初始化。如果选择 MySQL,系统会写入 /opt/surveyking/application.properties 并自动重启。

5. 登录并修改密码

初始化完成后,按 初始化、备份和升级 里的默认账号登录,并马上修改密码。

设置开机自启

如果希望服务器重启后自动启动卷王,可以创建 systemd 服务。

1. 创建服务文件

sudo vim /etc/systemd/system/surveyking.service

写入下面内容:

[Unit]
Description=SurveyKing
After=network.target mysql.service mysqld.service

[Service]
Type=simple
WorkingDirectory=/opt/surveyking
ExecStart=/usr/bin/java -Xms512m -Xmx1024m -jar /opt/surveyking/surveyking.jar --spring.profiles.active=h2 --server.port=1991 --file-storage.local.root-path=/opt/surveyking/files
Restart=always
RestartSec=10
StandardOutput=append:/opt/surveyking/logs/surveyking.log
StandardError=append:/opt/surveyking/logs/surveyking.log

[Install]
WantedBy=multi-user.target
提示

如果你在 /setup 里选择 MySQL,系统会自动生成 /opt/surveyking/application.properties。后续 systemd 启动时会读取这个文件,不需要手动把数据库密码写进服务文件。

2. 启动服务

sudo systemctl daemon-reload
sudo systemctl enable surveyking
sudo systemctl start surveyking
sudo systemctl status surveyking

以后常用命令:

想做什么命令
启动sudo systemctl start surveyking
停止sudo systemctl stop surveyking
重启sudo systemctl restart surveyking
查看状态sudo systemctl status surveyking
查看日志tail -f /opt/surveyking/logs/surveyking.log

放行端口

如果浏览器打不开,先确认服务器系统防火墙和云服务商安全组都放行 1991 端口。

Ubuntu / Debian:

sudo ufw allow 1991/tcp
sudo ufw status

CentOS / RHEL:

sudo firewall-cmd --permanent --add-port=1991/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --list-ports
注意

云服务器还要去云服务商控制台放行安全组。只在系统里放行端口,不代表公网一定能访问。

备份和升级

日常备份、导入恢复和升级步骤统一见:初始化、备份和升级

如果你熟悉 Linux 服务,也可以在导出备份后原地替换 jar:

sudo systemctl stop surveyking
cd /opt/surveyking
cp surveyking.jar surveyking.jar.bak
curl -L -o surveyking.jar.new https://download.surveyking.cn/files/surveyking.jar
mv surveyking.jar.new surveyking.jar
sudo systemctl start surveyking

常见问题

为什么打开后进入 /setup,不是登录页?

这是 v1.12.0 的首次初始化页面。系统需要先确认你使用 H2 还是 MySQL。

初始化、备份和升级 完成初始化后,再访问系统就会进入登录页。

手机为什么不能访问 localhost:1991

localhost 只代表当前设备。手机上的 localhost 是手机自己,不是服务器。

手机访问 Linux 服务器时,输入:

http://服务器公网IP:1991

如果服务器在局域网里,输入服务器的局域网 IP,比如:

http://192.168.1.23:1991
MySQL 测试连接失败怎么办?

按顺序检查:

  • MySQL 是否正在运行:sudo systemctl status mysqlsudo systemctl status mysqld
  • 数据库名是否是 surveyking
  • /setup 里的数据库地址是否填写 localhost
  • 用户名和密码是否正确。
  • MySQL 用户是否允许从 localhost 登录。

不要手动导入 init-mysql.sql/setup 会自动初始化表结构和默认数据。

端口 1991 被占用了怎么办?

查看端口占用:

sudo lsof -i :1991

如果想换成 8080,把启动命令或 systemd 文件里的:

--server.port=1991

改成:

--server.port=8080

然后重启服务,访问 http://服务器公网IP:8080

怎么确认卷王还在运行?

如果用 systemd 启动:

sudo systemctl status surveyking

如果用 nohup 启动:

ps aux | grep surveyking.jar

查看日志:

tail -f /opt/surveyking/logs/surveyking.log