在腾讯云轻量应用服务器(Lighthouse)上部署 Spring Boot 项目,通常采用 JDK + Maven/Gradle + Nginx (可选) + Systemd 的标准流程。以下是基于 Ubuntu 系统的详细操作步骤:
1. 环境准备与安装
首先通过 SSH 登录到你的服务器(推荐使用 root 或具有 sudo 权限的用户)。
1.1 更新系统并安装基础工具
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl git wget unzip
1.2 安装 Java (JDK)
Spring Boot 依赖 Java 运行环境。建议安装 JDK 17 或 JDK 8(根据你的项目版本选择)。这里以 JDK 17 为例:
# 安装 OpenJDK 17
sudo apt install -y openjdk-17-jdk
# 验证安装
java -version
如果提示找不到命令,可能需要配置环境变量:
echo 'export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64' | sudo tee -a ~/.bashrc
echo 'export PATH=$JAVA_HOME/bin:$PATH' | sudo tee -a ~/.bashrc
source ~/.bashrc
1.3 安装 Maven (可选,用于本地打包)
如果你打算在本地 IDE 打包好 jar 包上传到服务器,可以跳过此步。如果需要直接在服务器构建,则安装 Maven:
sudo apt install -y maven
mvn -v
2. 上传项目代码
将你的 Spring Boot 项目打包成 .jar 文件(确保执行了 mvn clean package 或 gradle bootJar),然后上传到服务器。
方法 A:使用 SCP 命令(推荐)
在本地电脑终端执行:
# 语法:scp -P <端口> <本地jar路径> root@<服务器IP>:<目标目录>
scp -P 22 target/your-app.jar root@<你的公网IP>:/opt/spring-boot-app/
注意:如果使用了非标准 SSH 端口,请修改 -P 参数。
方法 B:使用 SFTP 客户端
使用 FileZilla、Xftp 等工具连接服务器,将 jar 包拖入 /opt/spring-boot-app/ 目录。
3. 创建运行脚本与启动服务
为了方便管理和自动重启,我们创建一个简单的 Shell 脚本并使用 systemd 管理进程。
3.1 创建项目目录
sudo mkdir -p /opt/spring-boot-app/logs
cd /opt/spring-boot-app
3.2 编写启动脚本 (start.sh)
sudo nano start.sh
粘贴以下内容(根据实际情况修改 Jar 包名称和端口):
#!/bin/bash
APP_NAME="your-app.jar"
LOG_FILE="/opt/spring-boot-app/logs/app.log"
PID_FILE="/opt/spring-boot-app/logs/app.pid"
# 检查是否已运行
if [ -f "$PID_FILE" ]; then
PID=$(cat $PID_FILE)
if ps -p $PID > /dev/null; then
echo "Application is already running with PID: $PID"
exit 0
fi
fi
# 启动应用
nohup java -jar $APP_NAME --server.port=8080 > $LOG_FILE 2>&1 &
echo $! > $PID_FILE
echo "Application started with PID: $(cat $PID_FILE)"
保存退出(按 Ctrl+O, Enter, Ctrl+X)。
赋予执行权限:
sudo chmod +x start.sh
3.3 配置 Systemd 服务(推荐方式)
虽然可以用脚本直接跑,但使用 systemd 可以让服务随系统启动并方便管理。
sudo nano /etc/systemd/system/my-springboot.service
粘贴以下内容:
[Unit]
Description=My Spring Boot Application
After=syslog.target network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/spring-boot-app
ExecStart=/usr/bin/java -jar /opt/spring-boot-app/your-app.jar --server.port=8080
SuccessExitStatus=143
Restart=on-failure
RestartSec=10s
[Install]
WantedBy=multi-user.target
注意:将 your-app.jar 替换为你实际的 jar 包文件名。
保存后,重新加载配置并启动服务:
sudo systemctl daemon-reload
sudo systemctl enable my-springboot
sudo systemctl start my-springboot
3.4 验证状态
# 查看服务状态
sudo systemctl status my-springboot
# 查看日志(实时)
sudo journalctl -u my-springboot -f
4. 配置防火墙与安全组
这是最关键的一步,否则外部无法访问。
4.1 服务器内部防火墙 (UFW)
如果开启了 UFW,放行 8080 端口:
sudo ufw allow 8080/tcp
sudo ufw enable # 如果尚未开启
4.2 腾讯云控制台安全组(必须操作)
- 登录 腾讯云控制台。
- 进入 轻量应用服务器 -> 点击你的实例 -> 安全组。
- 点击 规则列表 -> 添加规则。
- 配置如下:
- 类型:自定义
- 协议端口:TCP 8080 (或者你指定的端口)
- 来源地址:0.0.0.0/0 (允许所有 IP,生产环境建议限制为特定 IP)
- 策略:允许
- 保存规则。
5. 访问测试
现在你可以在本地浏览器访问:
http://<你的服务器公网IP>:8080
如果看到 Spring Boot 的欢迎页或 API 响应,说明部署成功。
💡 进阶优化建议
-
反向X_X (Nginx):
如果你的项目是 Web 前端 + 后端,或者希望隐藏端口号(直接使用 80/443),建议安装 Nginx 做反向X_X。sudo apt install nginx配置
/etc/nginx/sites-available/default将请求转发到localhost:8080。 -
数据库连接:
如果 Spring Boot 连接的是云数据库(如 MySQL),请确保:- 数据库的安全组也放行了服务器的内网 IP。
- Spring Boot 配置文件 (
application.yml) 中的 URL 使用内网地址(例如jdbc:mysql://mysql-xxxx.cjxxxxxxxx.r...:3306/dbname),这样速度更快且更安全。
-
日志轮转:
生产环境中建议使用logback或log4j2配置日志切割,避免日志文件无限增长占满磁盘。
通过以上步骤,你的 Spring Boot 项目就已经稳定地运行在腾讯云轻量服务器上了。
CLOUD技术博