在腾讯云轻量应用服务器(Lighthouse)上部署 Spring Boot 项目,通常采用 Java + Nginx + 反向X_X 的经典架构。这种方式既保证了安全性(不直接暴露 Java 进程端口),又提供了静态资源提速和负载均衡能力。
以下是完整的部署步骤指南:
第一步:环境准备与安装
首先登录到轻量服务器的命令行界面(SSH),执行以下操作安装基础环境。
1. 更新系统并安装 JDK
Spring Boot 依赖 Java 运行环境。推荐使用 OpenJDK 17 或 8(根据你项目的版本选择)。
# 更新软件源
sudo apt update && sudo apt upgrade -y
# 安装 OpenJDK 17 (如果项目需要 JDK 8,可改为 openjdk-8-jdk)
sudo apt install openjdk-17-jdk -y
# 验证安装
java -version
2. 安装 Maven (可选,用于编译)
如果你需要在服务器上打包项目,或者项目依赖本地构建,建议安装 Maven。如果是在本地打包好 .jar 文件上传的,此步可跳过。
sudo apt install maven -y
3. 安装 Nginx
Nginx 将作为反向X_X,将用户的 HTTP 请求转发给 Spring Boot 应用的内部端口(如 8080)。
sudo apt install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx
第二步:上传项目
将本地打包好的 Spring Boot Jar 包上传到服务器。你可以使用 scp 命令、FTP 工具(如 FileZilla)或腾讯云的“文件管理”功能。
假设你的项目文件名为 my-app.jar,上传到 /opt/springboot/ 目录:
# 创建目录
mkdir -p /opt/springboot/
# 从本地上传 (示例命令,请替换为你的实际路径)
# scp -r your-local-file.jar root@your-server-ip:/opt/springboot/
第三步:配置防火墙与安全组
这是最容易被忽略的一步。你需要确保服务器的外部端口(通常是 80)是开放的。
-
腾讯云控制台设置:
- 登录腾讯云 -> 轻量应用服务器 -> 点击实例 -> 安全组。
- 添加入站规则:允许 TCP 协议,端口 80 和 443(HTTPS)。
- 注意:不要开放 8080 等 Java 内部端口给公网,只通过 Nginx 访问即可。
-
服务器内部防火墙:
# 如果开启了 ufw,放行 80 sudo ufw allow 80/tcp
第四步:配置 Nginx 反向X_X
编辑 Nginx 配置文件,告诉它如何转发流量。
sudo nano /etc/nginx/sites-available/default
删除原有内容,填入以下配置(假设你的 Spring Boot 监听的是 8080 端口):
server {
listen 80;
server_name your-domain.com; # 如果有域名填域名,没有则填 IP 或 localhost
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
保存退出 (Ctrl+O, Enter, Ctrl+X),然后重载 Nginx:
sudo nginx -t # 检查配置语法是否正确
sudo systemctl reload nginx
第五步:启动 Spring Boot 项目
为了让项目后台常驻运行,建议使用 nohup 命令,或者更推荐的方式是使用 systemd 服务管理。这里推荐 Systemd 方式,因为它能实现开机自启、崩溃自动重启等功能。
1. 创建服务文件
sudo nano /etc/systemd/system/my-spring-boot.service
写入以下内容(请根据实际情况修改路径和端口):
[Unit]
Description=My Spring Boot Application
After=syslog.target network.target
[Service]
Type=simple
User=root
ExecStart=/usr/bin/java -jar /opt/springboot/my-app.jar --server.port=8080
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
2. 启动并启用服务
# 重新加载 systemd 配置
sudo systemctl daemon-reload
# 启动服务
sudo systemctl start my-spring-boot
# 设置开机自启
sudo systemctl enable my-spring-boot
# 查看状态
sudo systemctl status my-spring-boot
提示:如果需要修改 JVM 内存参数(例如分配 512MB 内存),可以在
ExecStart中增加-Xms512m -Xmx512m。
第六步:验证部署
-
浏览器访问:
在浏览器输入http://<你的服务器 IP>。如果能看到你 Spring Boot 返回的页面(或默认的 Welcome 页),说明部署成功。 -
查看日志:
如果遇到问题,可以实时查看日志:journalctl -u my-spring-boot -f或者直接查看 jar 包输出的日志文件(如果你在代码里配置了 logging.file.path)。
常见问题排查
- 无法连接 8080 端口:检查 Spring Boot 配置文件
application.properties或application.yml,确保没有写死server.address=127.0.0.1,应留空或改为0.0.0.0。 - Nginx 报 502 Bad Gateway:说明 Nginx 连不上后端 Java 进程。检查 Java 服务是否启动 (
systemctl status my-spring-boot) 以及端口是否监听正确 (netstat -tlnp | grep java)。 - 内存溢出:轻量服务器内存较小(如 1G/2G),务必在启动参数中限制 JVM 堆内存大小,防止 OOM 导致服务被杀。
按照以上步骤,你就可以在腾讯云轻量服务器上稳定运行 Spring Boot 项目了。
云知识CLOUD