Linux 部署开源版
本文介绍如何在 Linux 系统上手动部署卷王问卷考试系统开源版,包括环境安装、数据库配置和应用启动等完整流程。
前提条件
- Linux 系统(CentOS 7+、Ubuntu 18+、Debian 9+ 等)
- 服务器具备公网访问能力
- 具备 root 或 sudo 权限
获取部署文件
只需要两个文件:
- surveyking-v1.6.0.jar - 应用程序文件
- init-mysql.sql - 数据库初始化脚本
下载方式
-
通过 QQ 群获取(推荐)
加入 QQ 群(1074277968),在群文件 -> 正式版,获取最新版本的 jar 包和数据库脚本
-
官方百度网盘
链接: https://pan.baidu.com/s/1hUIFIS9BdoTQnqvLzTceAw?pwd=1234 提取码: 1234
环境安装
1. 安装 JDK 8+
方式一:使用包管理器安装 OpenJDK(推荐)
CentOS/RHEL:
# 安装 OpenJDK 8
sudo yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel -y
# 或者安装 OpenJDK 11
sudo yum install java-11-openjdk java-11-openjdk-devel -y
Ubuntu/Debian:
# 更新包列表
sudo apt update
# 安装 OpenJDK 8
sudo apt install openjdk-8-jdk -y
# 或者安装 OpenJDK 11
sudo apt install openjdk-11-jdk -y
方式二:手动安装 Oracle JDK
# 创建 java 目录
sudo mkdir -p /usr/local/java
# 下载并解压 JDK(以 JDK 8 为例)
cd /tmp
wget https://download.oracle.com/otn/java/jdk/8u391-b13/4f24afd9-49c6-475a-8e49-f4c8e633e8d8/jdk-8u391-linux-x64.tar.gz
sudo tar -zxvf jdk-8u391-linux-x64.tar.gz -C /usr/local/java/
# 设置环境变量
sudo vim /etc/profile
在 /etc/profile
文件末尾添加:
export JAVA_HOME=/usr/local/java/jdk1.8.0_391
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
生效环境变量:
source /etc/profile
验证 JDK 安装
java -version
javac -version
2. 安装 MySQL
CentOS/RHEL 系统
# 安装 MySQL 8.0 官方仓库
sudo yum install https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm -y
# 安装 MySQL 服务器
sudo yum install mysql-community-server -y
# 启动 MySQL 服务
sudo systemctl start mysqld
sudo systemctl enable mysqld
# 获取初始密码
sudo grep 'temporary password' /var/log/mysqld.log
# 安全配置(设置 root 密码等)
sudo mysql_secure_installation
Ubuntu/Debian 系统
# 更新包列表
sudo apt update
# 安装 MySQL 服务器
sudo apt install mysql-server -y
# 启动 MySQL 服务
sudo systemctl start mysql
sudo systemctl enable mysql
# 安全配置
sudo mysql_secure_installation
配置 MySQL
# 登录 MySQL
mysql -u root -p
# 创建数据库
CREATE DATABASE surveyking DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# 创建用户(可选,也可以使用 root)
CREATE USER 'surveyking'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON surveyking.* TO 'surveyking'@'localhost';
FLUSH PRIVILEGES;
# 导入数据库脚本
USE surveyking;
SOURCE /path/to/init-mysql.sql;
# 退出
EXIT;
应用部署
1. 创建应用目录
# 创建应用目录
sudo mkdir -p /opt/surveyking
sudo mkdir -p /opt/surveyking/logs
sudo mkdir -p /opt/surveyking/files
# 上传 JAR 文件到服务器
# 可以使用 scp、sftp 或其他方式上传
# scp surveyking-v1.6.0.jar user@server:/opt/surveyking/
2. 创建启动脚本
创建启动脚本 /opt/surveyking/start.sh
:
sudo vim /opt/surveyking/start.sh
内容如下:
#!/bin/bash
# 应用目录
APP_DIR="/opt/surveyking"
APP_NAME="surveyking-v1.6.0.jar"
PID_FILE="$APP_DIR/surveyking.pid"
# JVM 参数
JVM_OPTS="-Xms512m -Xmx1024m -XX:+UseG1GC"
# 应用参数
APP_OPTS="--spring.datasource.url=jdbc:mysql://localhost:3306/surveyking --spring.datasource.username=root --spring.datasource.password=surveyking --file-storage.local.root-path=$APP_DIR/files"
# 检查 Java 环境
if [ -z "$JAVA_HOME" ]; then
JAVA_CMD="java"
else
JAVA_CMD="$JAVA_HOME/bin/java"
fi
# 启动函数
start() {
if [ -f "$PID_FILE" ] && ps -p $(cat "$PID_FILE") > /dev/null 2>&1; then
echo "SurveyKing is already running (PID: $(cat $PID_FILE))"
return 1
fi
echo "Starting SurveyKing..."
cd "$APP_DIR"
nohup $JAVA_CMD $JVM_OPTS -jar "$APP_NAME" $APP_OPTS > logs/surveyking.log 2>&1 &
echo $! > "$PID_FILE"
echo "SurveyKing started (PID: $(cat $PID_FILE))"
}
# 停止函数
stop() {
if [ ! -f "$PID_FILE" ]; then
echo "SurveyKing is not running"
return 1
fi
PID=$(cat "$PID_FILE")
if ps -p $PID > /dev/null 2>&1; then
echo "Stopping SurveyKing (PID: $PID)..."
kill $PID
sleep 5
if ps -p $PID > /dev/null 2>&1; then
echo "Force killing SurveyKing..."
kill -9 $PID
fi
rm -f "$PID_FILE"
echo "SurveyKing stopped"
else
echo "SurveyKing process not found"
rm -f "$PID_FILE"
fi
}
# 重启函数
restart() {
stop
sleep 2
start
}
# 状态检查
status() {
if [ -f "$PID_FILE" ] && ps -p $(cat "$PID_FILE") > /dev/null 2>&1; then
echo "SurveyKing is running (PID: $(cat $PID_FILE))"
else
echo "SurveyKing is not running"
fi
}
# 主要逻辑
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
status
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
;;
esac
exit $?
设置执行权限:
sudo chmod +x /opt/surveyking/start.sh
3. 启动方式选择
方式一:使用启动脚本(推荐)
# 启动应用
sudo /opt/surveyking/start.sh start
# 停止应用
sudo /opt/surveyking/start.sh stop
# 重启应用
sudo /opt/surveyking/start.sh restart
# 查看状态
sudo /opt/surveyking/start.sh status
方式二:直接使用 nohup 启动
cd /opt/surveyking
# 后台启动
nohup java -Xms512m -Xmx1024m -jar surveyking-v1.6.0.jar \
--spring.datasource.url=jdbc:mysql://localhost:3306/surveyking \
--spring.datasource.username=root \
--spring.datasource.password=surveyking \
--file-storage.local.root-path=/opt/surveyking/files \
> logs/surveyking.log 2>&1 &
# 查看进程
ps aux | grep surveyking
# 停止应用
kill -9 $(ps aux | grep 'surveyking.*jar' | grep -v grep | awk '{print $2}')
方式三:使用 systemd 服务(推荐生产环境)
创建 systemd 服务文件:
sudo vim /etc/systemd/system/surveyking.service
内容如下:
[Unit]
Description=SurveyKing Application
After=network.target mysql.service
Wants=mysql.service
[Service]
Type=simple
User=root
Group=root
WorkingDirectory=/opt/surveyking
Environment="JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk"
ExecStart=/usr/bin/java -Xms512m -Xmx1024m -jar /opt/surveyking/surveyking-v1.6.0.jar --spring.datasource.url=jdbc:mysql://localhost:3306/surveyking --spring.datasource.username=root --spring.datasource.password=surveyking --file-storage.local.root-path=/opt/surveyking/files
ExecStop=/bin/kill -TERM $MAINPID
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
SyslogIdentifier=surveyking
[Install]
WantedBy=multi-user.target
启用和管理服务:
# 重新加载 systemd 配置
sudo systemctl daemon-reload
# 启用服务(开机自启)
sudo systemctl enable surveyking
# 启动服务
sudo systemctl start surveyking
# 查看服务状态
sudo systemctl status surveyking
# 查看日志
sudo journalctl -u surveyking -f
# 停止服务
sudo systemctl stop surveyking
# 重启服务
sudo systemctl restart surveyking
访问应用
启动成功后,通过浏览器访问:
http://your-server-ip:1991
默认登录信息:
- 用户名: admin
- 密码: 123456
重要提示
首次登录后,请立即修改默认密码!在「系统管理 >> 个人设置 >> 安全设置」中修改。