在腾讯云轻量应用服务器(Lighthouse)上部署 Java Web 应用,通常分为以下关键步骤。下面以 Spring Boot 打包的 JAR 包为例(最常见场景),假设你已购买轻量应用服务器并拥有 SSH 登录权限。
✅ 一、前期准备
-
确认环境
- 操作系统:推荐 Ubuntu 20.04/22.04 或 CentOS 7/8(本文以 Ubuntu 为例)
- JDK 版本:建议 JDK 11 或 17(与开发环境一致)
- Maven/Gradle:用于本地打包(可选,也可用云 IDE 直接构建)
- 应用代码已打包为
app.jar(如java -jar app.jar可运行)
-
安全组配置
- 登录 腾讯云控制台
- 进入你的轻量应用服务器 →「网络」→「安全组」
- 添加入站规则,开放所需端口(如
8080或自定义端口)协议:TCP | 端口:8080 | 来源:0.0.0.0/0(生产环境建议限制 IP)
✅ 二、上传应用 & 安装基础环境
1. 通过 SFTP/SCP 上传 JAR 包
# 本地执行(替换实际路径和服务器信息)
scp /path/to/app.jar root@<你的公网IP>:/opt/java-app/
或使用轻量应用服务器的「文件管理」功能(Web 界面上传)。
2. 安装 JDK(若未预装)
# Ubuntu 示例
sudo apt update
sudo apt install openjdk-17-jdk -y
# 验证
java -version
💡 轻量应用服务器镜像可能已含 JDK,先检查:
java -version
✅ 三、启动 Java 应用(推荐方式对比)
| 方式 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
nohup java -jar |
简单快速 | 退出终端即停止(需配合 nohup);无日志轮转、重启机制 | 测试/临时部署 |
| Systemd 服务 | 自动开机自启、崩溃重启、日志集中管理 | 需编写 .service 文件 |
✅ 生产环境首选 |
| Docker 容器化 | 环境隔离、易迁移 | 需安装 Docker | 复杂依赖/多服务场景 |
🔧 推荐:使用 Systemd 管理服务(生产标准做法)
1. 创建目录与脚本
sudo mkdir -p /opt/java-app/logs
sudo chmod 755 /opt/java-app/logs
2. 创建 systemd 服务文件
sudo nano /etc/systemd/system/my-java-app.service
填入以下内容(按需修改):
[Unit]
Description=My Spring Boot Application
After=syslog.target network.target
[Service]
User=root
WorkingDirectory=/opt/java-app
ExecStart=/usr/bin/java -Xms512m -Xmx1024m -jar /opt/java-app/app.jar --spring.profiles.active=prod
Restart=on-failure
RestartSec=10s
StandardOutput=journal
StandardError=journal
Environment="JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64"
[Install]
WantedBy=multi-user.target
⚠️ 注意:
-Xms/-Xmx根据内存调整(轻量服务器默认 1~2GB,避免 OOM)--spring.profiles.active=prod指定配置文件(如application-prod.yml)JAVA_HOME路径请用update-alternatives --config java查看实际路径
3. 启用并启动服务
sudo systemctl daemon-reload
sudo systemctl enable my-java-app.service
sudo systemctl start my-java-app.service
4. 检查状态与日志
sudo systemctl status my-java-app.service # 查看运行状态
sudo journalctl -u my-java-app.service -f # 实时查看日志
✅ 成功标志:Active: active (running)
✅ 四、反向X_X(Nginx)—— 对外暴露 80/443 端口
Java 应用通常监听非标准端口(如 8080),需通过 Nginx 转发到公网 80。
1. 安装 Nginx
sudo apt install nginx -y
2. 配置虚拟主机
sudo nano /etc/nginx/sites-available/my-app
内容示例:
server {
listen 80;
server_name your-domain.com; # 替换为你的域名(需 DNS 解析到服务器 IP)
location / {
proxy_pass http://127.0.0.1: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;
}
}
3. 启用配置并重启 Nginx
sudo ln -s /etc/nginx/sites-available/my-app /etc/nginx/sites-enabled/
sudo nginx -t # 测试配置
sudo systemctl reload nginx
🌐 若使用 HTTPS,可结合 Let’s Encrypt(certbot)一键申请证书。
✅ 五、验证部署
- 浏览器访问:
http://<服务器公网IP>或http://your-domain.com - 检查防火墙是否放行 80 端口(已在安全组设置)
- 查看日志确认无异常:
sudo tail -f /var/log/syslog | grep my-java-app # 或直接看 systemd 日志 sudo journalctl -u my-java-app.service -n 50
🔒 安全加固建议(生产必备)
- ✅ 禁止 root 远程登录:编辑
/etc/ssh/sshd_config,设PermitRootLogin no - ✅ 使用密钥登录,禁用密码认证
- ✅ 定期更新系统:
sudo apt upgrade -y - ✅ 监控资源:安装
htop、glances或接入腾讯云监控 - ✅ 备份数据:定时备份数据库、配置文件到对象存储(COS)
🆘 常见问题排查
| 问题 | 可能原因 | 解决方案 |
|---|---|---|
| 启动后立即退出 | 内存不足 / 配置错误 | 检查 dmesg | grep -i oom;调整 JVM 参数 |
| 端口被占用 | 其他进程占用了 8080 | lsof -i :8080 查进程并 kill |
| Nginx 无法连接后端 | 防火墙 / 应用未监听 127.0.0.1 | 确保应用绑定 0.0.0.0 或 127.0.0.1;检查安全组内网规则 |
| 中文乱码 | 缺少字体 / 编码未指定 | 启动时加 -Dfile.encoding=UTF-8 |
需要我提供:
- 📦 完整的 Dockerfile + docker-compose 部署方案?
- 🔄 CI/CD 自动化部署流程(GitHub Actions + 轻量服务器)?
- 🛡️ 基于宝塔面板的一键部署教程?
欢迎告诉我你的具体需求,我可以进一步定制方案!
云小栈