在腾讯云轻量应用服务器(Lighthouse)上部署 Java Web 应用,通常包括以下核心步骤。以下以最常见的 Spring Boot + Nginx 方案为例(适用于 WAR 包或可执行 JAR),你可根据实际项目调整:
✅ 一、前期准备
1. 购买并初始化轻量应用服务器
- 登录 腾讯云控制台
- 选择「轻量应用服务器」→ 创建实例:
- 操作系统:Ubuntu 20.04/22.04 或 CentOS 7/8(推荐 Ubuntu)
- 配置:建议 ≥2 核 2G(生产环境建议 4G+)
- 安全组规则:开放
80(HTTP)、443(HTTPS)、22(SSH)端口
⚠️ 注意:默认只开放 80/22,需手动添加 Java 应用端口(如 8080)或让 Nginx X_X后仅暴露 80/443
2. 本地打包应用
- Maven 项目:
mvn clean package -DskipTests # 生成 target/*.jar 或 *.war - Spring Boot 可执行 JAR:直接运行
java -jar app.jar - WAR 包:需搭配 Tomcat(见后文备选方案)
✅ 二、上传与部署(以 JAR 为例)
方式 A:通过 SSH 上传(推荐)
# 本地终端
scp your-app.jar root@<服务器IP>:/root/
方式 B:使用轻量应用服务器的「文件管理」功能
- 控制台 → 轻量应用服务器 → 对应实例 → 「文件管理」→ 上传
your-app.jar
✅ 三、安装必要依赖
Ubuntu 示例:
sudo apt update
sudo apt install -y openjdk-17-jdk nginx curl git unzip
CentOS 示例:
sudo yum install -y java-17-openjdk-devel nginx curl git unzip
💡 验证 Java 版本:
java -version # 应显示 17.x 或 8.x(根据项目要求)
✅ 四、启动 Java 应用(后台运行)
方案 1:简单后台运行(适合测试)
cd /root
nohup java -jar your-app.jar --server.port=8080 > app.log 2>&1 &
echo $! > app.pid # 保存进程 ID
✅ 检查状态:
ps aux | grep your-app.jar
tail -f app.log
方案 2:使用 systemd 管理(推荐生产环境)
创建服务文件 /etc/systemd/system/myapp.service:
[Unit]
Description=My Spring Boot App
After=network.target
[Service]
User=root
WorkingDirectory=/root
ExecStart=/usr/bin/java -jar /root/your-app.jar --server.port=8080
Restart=always
Environment="JAVA_OPTS=-Xms512m -Xmx1024m"
[Install]
WantedBy=multi-user.target
启用并启动:
sudo systemctl daemon-reload
sudo systemctl enable myapp
sudo systemctl start myapp
sudo systemctl status myapp
🔐 若使用 WAR + Tomcat,需先安装 Tomcat,将 WAR 放入
webapps/,再配置systemd启动 Tomcat。
✅ 五、配置 Nginx 反向X_X(关键!)
1. 安装 Nginx(已装则跳过)
sudo apt install nginx # Ubuntu
2. 编辑 Nginx 配置文件
sudo nano /etc/nginx/sites-available/default
替换为以下内容(假设 Java 应用监听 8080):
server {
listen 80;
server_name your-domain.com; # 替换为你的域名(可选)
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;
# 支持 WebSocket(如需)
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
# 静态资源优化(可选)
location /static/ {
alias /var/www/static/;
expires 30d;
}
}
3. 测试并重载 Nginx
sudo nginx -t
sudo systemctl reload nginx
✅ 访问 http://<服务器IP> 或绑定域名后,应看到你的 Java Web 应用。
✅ 六、进阶优化(可选但推荐)
| 项目 | 操作 |
|---|---|
| HTTPS 证书 | 使用 Let’s Encrypt(Certbot)免费申请:sudo certbot --nginx -d your-domain.com |
| 日志轮转 | 配置 logrotate 避免 app.log 无限增长 |
| 监控告警 | 接入腾讯云云监控(CloudMonitor),设置 CPU/内存/端口告警 |
| 自动备份 | 开启轻量应用服务器的「快照」功能(每周自动备份) |
| 多实例部署 | 结合负载均衡(CLB)+ 多台轻量服务器实现高可用 |
🚫 常见问题排查
| 问题 | 解决方案 |
|---|---|
| 无法连接应用 | 检查安全组是否放行 8080(若直连);确认 Nginx 是否监听 80 |
| 中文乱码 | 确保 JVM 参数加 -Dfile.encoding=UTF-8 |
| OOM 崩溃 | 调整 -Xmx 内存大小(如 -Xmx2g) |
| 启动即退出 | 查看 app.log 或 journalctl -u myapp 详细错误 |
需要我提供:
- 完整的
systemd+Nginx一键部署脚本? - WAR 包 + Tomcat 的部署教程?
- Docker 容器化部署方案?
欢迎告诉我你的具体技术栈(Spring Boot 版本?是否用 Vue/React 前端?是否需要数据库?),我可以定制更精准的步骤!
CLOUD技术笔记