部署Spring Boot项目到Linux服务器数据盘
将Spring Boot项目部署到Linux服务器数据盘是一个常见的操作。首先是如何挂载数据盘,然后是如何部署Spring Boot项目。
第一部分:挂载数据盘
假设你有一台新的Linux服务器(以CentOS 7/Alibaba Cloud Linux为例),并有一块新的数据盘(例如 /dev/vdb)需要挂载到 /data 目录。
注意: 操作磁盘有一定风险,请确保已备份重要数据并进行核对。磁盘标识(如 /dev/vdb)可能因环境而异,请使用 lsblk 或 fdisk -l 命令确认。
步骤 1: 查看磁盘状态
1、连接到你的服务器:
ssh your_username@your_server_ip
切换到root用户:
sudo -i
2、检查当前磁盘情况:
fdisk -l
或者使用更清晰的命令:
lsblk
你会看到类似这样的输出,vda 通常是系统盘,vdb 就是我们要操作的数据盘(未挂载)。
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 40G 0 disk /
vdb 253:16 0 100G 0 disk
步骤 2: 分区与格式化
1、为数据盘创建分区(如果磁盘是新盘,通常创建一个主分区即可):
fdisk /dev/vdb
在 fdisk 交互界面中,依次输入以下命令:
n:新建分区
p:选择主分区
1:分区号(默认1)
回车:选择起始扇区(默认)
回车:选择结束扇区(默认,使用整个磁盘)
w:写入分区表并退出
2、检查新分区:
再次运行 lsblk,现在你应该能看到新分区 /dev/vdb1。
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 40G 0 disk /
vdb 253:16 0 100G 0 disk
└─vdb1 253:17 0 100G 0 part
3、格式化分区(这里使用 ext4 文件系统):
mkfs.ext4 /dev/vdb1
等待格式化完成。
步骤 3: 挂载分区
1、创建挂载点目录(例如 /data):
mkdir /data
2、临时挂载分区(重启后会失效,用于测试):
mount /dev/vdb1 /data
3、验证挂载是否成功:
df -h
你应该能在输出中看到 /dev/vdb1 挂载到了 /data 目录。
步骤 4: 配置开机自动挂载
1、获取分区的UUID(推荐使用UUID,它比设备名更稳定):
blkid /dev/vdb1
输出类似:/dev/vdb1: UUID=“c6b4c7a1-7b4a-4f4a-b6a1-1234567890ab” TYPE=“ext4”
2、编辑 /etc/fstab 文件:
vi /etc/fstab
3、在文件末尾添加一行:
UUID=c6b4c7a1-7b4a-4f4a-b6a1-1234567890ab /data ext4 defaults 0 0
解释:
UUID=…:你刚才用 blkid 命令查到的实际UUID。
/data:挂载点。
ext4:文件系统类型。
defaults:挂载参数。
0:不备份。
0:不检查磁盘顺序。
4、验证 fstab 配置是否正确:
mount -a
这个命令会挂载所有在 fstab 中定义的文件系统。如果没有任何报错,说明配置正确。你可以再次运行 df -h 确认 /data 依然挂载着。
至此,数据盘已经成功挂载并配置为开机自动挂载。
第二部分:部署Spring Boot项目
我们将把项目部署到刚挂载的数据盘(/data 目录)下。
前提准备
1、安装Java环境:
你的Spring Boot项目大概率需要JRE/JDK。首先检查是否已安装:
java -version
如果未安装,请安装(例如安装OpenJDK 8):
yum install -y java-1.8.0-openjdk-devel
(请根据你的项目要求选择对应的JDK版本,如JDK 11或17)
步骤 1: 上传项目文件
1、在 /data 目录下创建项目所需目录:
mkdir -p /data/app/your-project-name
mkdir -p /data/app/your-project-name/logs
your-project-name:是你的项目名称,例如 myapp。
logs:用于存放项目日志。
2、上传你的JAR包:
使用 scp、sftp 或通过Git拉取等方式,将打包好的Spring Boot的 *.jar 文件上传到 /data/app/your-project-name/ 目录。
例如,从本地机器上传:
# 在你的本地终端执行,不是在服务器上!
scp target/your-springboot-app.jar your_username@your_server_ip:/data/app/your-project-name/
步骤 2: 编写应用启动脚本
为了管理方便,我们编写一个Shell脚本来自动启动、停止应用。
1、在项目目录创建脚本文件,例如 app.sh:
vi /data/app/your-project-name/app.sh
2、输入以下内容(请根据你的实际情况修改 JAR_NAME、APP_NAME 和 Xmx 等参数):
#!/bin/bash
# 配置项
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk # 根据你的实际路径修改
export JRE_HOME=$JAVA_HOME/jre
export PATH=$PATH:$JAVA_HOME/binAPP_HOME=/data/app/your-project-name
JAR_NAME="your-springboot-app.jar"
APP_NAME="my-springboot-app"
LOG_PATH=$APP_HOME/logs/$APP_NAME.log
PID_FILE=$APP_HOME/application.pid# JVM参数
JAVA_OPTS="-Xms512m -Xmx1024m -XX:+UseG1GC"cd $APP_HOMEfunction start() {if [ -f "$PID_FILE" ]; thenpid=$(cat $PID_FILE)if kill -0 $pid 2>/dev/null; thenecho "App $APP_NAME is already running (pid: $pid)."exit 1elserm -f $PID_FILEfifiecho "Starting $APP_NAME..."# nohup 后台运行,输出日志到指定文件nohup java $JAVA_OPTS -jar $JAR_NAME > $LOG_PATH 2>&1 &echo $! > $PID_FILEecho "Started $APP_NAME (pid: $!)"
}function stop() {if [ -f "$PID_FILE" ]; thenpid=$(cat $PID_FILE)echo "Stopping $APP_NAME (pid: $pid)..."kill $pidrm -f $PID_FILEecho "Stopped $APP_NAME."elseecho "PID file not found. Stop operation failed."fi
}function status() {if [ -f "$PID_FILE" ]; thenpid=$(cat $PID_FILE)if kill -0 $pid 2>/dev/null; thenecho "$APP_NAME is running (pid: $pid)."elseecho "$APP_NAME PID file exists but process is not running."fielseecho "$APP_NAME is not running."fi
}case "$1" instart)start;;stop)stop;;restart)stopsleep 3start;;status)status;;*)echo "Usage: $0 {start|stop|restart|status}"exit 1;;
esac
3、给脚本添加执行权限:
chmod +x /data/app/your-project-name/app.sh
步骤 3: 启动项目并测试
1、启动项目:
cd /data/app/your-project-name
./app.sh start
2、查看启动日志和状态:
./app.sh status
tail -100f logs/my-springboot-app.log
观察日志是否有错误,确认应用已正常启动。
3、测试访问:
如果你的应用有Web接口,使用 curl 或在浏览器中访问你的服务器IP和端口,看是否返回预期结果。
步骤 4: (强烈推荐)配置Systemd服务管理
使用Systemd可以更专业地管理应用,实现更完善的开机自启和监控。
1、创建service文件:
vi /etc/systemd/system/your-project-name.service
2、输入以下内容(同样,需要修改路径和参数):
[Unit]
Description=My Spring Boot Application
After=syslog.target network.target[Service]
Type=simple
User=root
Group=root# 项目根目录
WorkingDirectory=/data/app/your-project-name
# 启动命令
ExecStart=/usr/bin/java -Xms512m -Xmx1024m -jar your-springboot-app.jar
# 指定日志输出
StandardOutput=file:/data/app/your-project-name/logs/systemd-out.log
StandardError=file:/data/app/your-project-name/logs/systemd-err.log# 应用崩溃后自动重启
Restart=on-failure
RestartSec=30[Install]
WantedBy=multi-user.target
3、重新加载Systemd配置并启用服务:
systemctl daemon-reload
systemctl enable your-project-name.service # 设置开机自启
systemctl start your-project-name.service # 启动服务
systemctl status your-project-name.service # 查看状态
现在,Spring Boot项目已经部署在数据盘上,并且可以通过Systemd进行管理了。你可以使用 systemctl stop/start/restart your-project-name 来管理应用。

谢谢你看我的文章,既然看到这里了,如果觉得不错,随手点个赞、转发、在看三连吧,感谢感谢。那我们,下次再见。
您的一键三连,是我更新的最大动力,谢谢
山水有相逢,来日皆可期,谢谢阅读,我们再会
我手中的金箍棒,上能通天,下能探海
