Linux 手动部署开源版
Linux 手动部署适合有技术人员维护服务器的场景,需要自己安装 Java,并在 /setup 页面完成数据库初始化。
使用场景
- 你不想用 Docker,也不想用宝塔。
- 服务器环境需要自己控制,比如已有 MySQL 或已有运维规范。
- 你能通过 SSH 连接服务器,并能复制命令执行。
如果你没有技术基础,不建议从本文开始。优先使用 宝塔一键部署 或 Docker Compose 部署。
准备文件
只需要准备一个文件:
| 文件 | 下载地址 | 用途 |
|---|---|---|
surveyking.jar | https://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.7 或 8.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 mysql或sudo 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