跳到主要内容

Linux 手动部署

本文介绍下载 SurveyKing v1.13.0 单体 JAR,并通过 systemd 在 Linux 上运行。单体 JAR 已包含前端页面,无需单独启动 Node.js 服务。

如果不需要定制代码,优先使用 Docker Compose 部署,安装和升级更简单。

环境要求

  • 64 位 Linux,建议至少 2 核 CPU、4 GB 内存;
  • JDK 8 或更高版本,最低使用 JDK 8 即可启动;
  • 可选的 MySQL 8;使用 H2 时不需要 MySQL。

确认 Java 版本:

java -version

输出为 Java 8(通常显示为 1.8)或更高版本即可。

1. 下载 JAR

从官方下载站获取 v1.13.0

下载 surveyking-v1.13.0.jar

也可以在服务器上使用 wget 下载:

wget -O surveyking-v1.13.0.jar http://download.surveyking.cn/files/surveyking-v1.13.0.jar

需要修改源码或自行编译时,参阅如何从源码构建 JAR

2. 准备运行目录

把 JAR 上传到服务器,并创建专用系统用户和目录:

sudo useradd --system --home /opt/surveyking --shell /usr/sbin/nologin surveyking
sudo mkdir -p /opt/surveyking/{config,db,files,logs}
sudo cp surveyking-v1.13.0.jar /opt/surveyking/
sudo chown -R surveyking:surveyking /opt/surveyking

应用默认使用相对路径存储配置、H2 数据库和附件,因此必须固定工作目录。

3. 创建 systemd 服务

创建 /etc/systemd/system/surveyking.service

[Unit]
Description=SurveyKing
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=surveyking
Group=surveyking
WorkingDirectory=/opt/surveyking
ExecStart=/usr/bin/java -jar /opt/surveyking/surveyking-v1.13.0.jar --spring.profiles.active=h2 --server.port=1991
Restart=on-failure
RestartSec=5
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target

确认 /usr/bin/java -version 显示 Java 8(1.8)或更高版本;如果 Java 安装在其他位置,修改 ExecStart

启动服务:

sudo systemctl daemon-reload
sudo systemctl enable --now surveyking
sudo systemctl status surveyking
sudo journalctl -u surveyking -f

4. 初始化

临时放行 TCP 1991,访问:

http://服务器 IP:1991/setup
  • 选择 H2 时,数据保存在 /opt/surveyking/db
  • 选择 MySQL 时,先创建一个空数据库和最小权限账号,再在向导中测试连接;
  • v1.13.0 会自动创建表,无需手工导入初始化 SQL。

初始化写入的配置位于 /opt/surveyking/config/application.properties

5. 配置 Nginx 和 HTTPS

正式公网部署建议让应用只通过 Nginx 暴露。将域名反向代理到 http://127.0.0.1:1991,申请 TLS 证书,然后关闭公网 1991 端口。

Nginx 示例见反向代理与前后端分离

6. 运维和升级

常用命令:

sudo systemctl restart surveyking
sudo systemctl stop surveyking
sudo systemctl start surveyking
sudo journalctl -u surveyking --since today

升级步骤:

  1. 从系统中导出应用备份;
  2. 停止服务,备份 /opt/surveyking/configdbfiles
  3. 从官方下载站获取新版 JAR,并替换旧文件;
  4. 如果版本文件名变化,同步修改 systemd 的 ExecStart
  5. 执行 systemctl daemon-reload 并启动服务;
  6. 检查日志、登录、项目和附件。

使用外部 MySQL 时还要单独备份数据库。复制 H2 数据库文件前必须停止服务。