在腾讯云轻量应用服务器(Lighthouse)上部署 Java 项目,最佳实践需要兼顾安全性、可维护性、性能优化和云原生特性。以下是经过验证的完整流程:
一、前期准备
1. 系统初始化
# 更新系统包
sudo apt update && sudo apt upgrade -y # Ubuntu/Debian
# 或
sudo yum update -y # CentOS/RHEL
# 安装必要工具
sudo apt install curl wget vim net-tools -y
2. 安全加固(关键!)
- 仅开放必要端口:通过腾讯云控制台防火墙只放行:
80(HTTP)443(HTTPS,如需)自定义端口(如 Tomcat 的 8080,不推荐直接暴露公网)
- 禁用 root 远程登录:编辑
/etc/ssh/sshd_config,设置PermitRootLogin no - 配置 SSH 密钥登录:生成密钥对后上传至腾讯云控制台,关闭密码登录
✅ 建议:Tomcat 服务监听
127.0.0.1:8080,通过 Nginx 反向X_X对外提供服务。
二、安装 JDK & Tomcat
方案 A:使用官方安装包(推荐生产环境)
1. 安装 OpenJDK 17(示例)
# Ubuntu/Debian
sudo apt install openjdk-17-jdk -y
java -version
# CentOS/RHEL
sudo yum install java-17-openjdk-devel -y
2. 下载并解压 Tomcat
cd /opt
wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.86/bin/apache-tomcat-9.0.86.tar.gz
tar -xzf apache-tomcat-9.0.86.tar.gz
sudo mv apache-tomcat-9.0.86 tomcat
sudo chown -R $USER:$USER /opt/tomcat
3. 配置环境变量(可选但推荐)
echo 'export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64' >> ~/.bashrc
echo 'export CATALINA_HOME=/opt/tomcat' >> ~/.bashrc
source ~/.bashrc
三、部署 Java 项目
方式 1:WAR 包部署(传统方式)
# 将你的 .war 文件上传到 /opt/tomcat/webapps/
cp your-app.war /opt/tomcat/webapps/
# Tomcat 会自动解压并启动(需确保 tomcat 正在运行)
sudo systemctl start tomcat # 若已配置 systemd 服务
方式 2:JAR 包直接运行(Spring Boot 推荐)
# 创建独立目录
mkdir -p /opt/myapp
cp myapp.jar /opt/myapp/
# 启动脚本(建议用 systemd 管理)
sudo nano /etc/systemd/system/myapp.service
/etc/systemd/system/myapp.service 内容示例:
[Unit]
Description=My Spring Boot App
After=network.target
[Service]
User=ubuntu
WorkingDirectory=/opt/myapp
ExecStart=/usr/bin/java -jar -Xms512m -Xmx1g myapp.jar
Restart=always
Environment="JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64"
[Install]
WantedBy=multi-user.target
启用服务:
sudo systemctl daemon-reload
sudo systemctl enable myapp
sudo systemctl start myapp
sudo systemctl status myapp
💡 参数说明:
-Xms512m -Xmx1g根据服务器内存调整;轻量服务器通常有 1~4GB 内存,避免 OOM。
四、Nginx 反向X_X(必须!)
1. 安装 Nginx
sudo apt install nginx -y # 或 yum install nginx
2. 配置反向X_X
sudo nano /etc/nginx/sites-available/default
配置示例:
server {
listen 80;
server_name your-domain.com; # 替换为你的域名或 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;
# 支持 WebSocket(如需要)
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
启用并重启:
sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
🔐 如需 HTTPS,可使用 Let’s Encrypt(Certbot)免费申请证书。
五、日志与监控
1. 日志管理
- Tomcat 日志:
/opt/tomcat/logs/ - Nginx 日志:
/var/log/nginx/ - 应用日志:Spring Boot 默认输出到
logs/application.log
建议配置 logrotate 自动轮转:
sudo nano /etc/logrotate.d/myapp
2. 监控建议
- 使用腾讯云 云监控(Cloud Monitor) 设置 CPU/内存/磁盘告警
- 安装
htop实时查看资源:sudo apt install htop - 定期清理旧日志:
find /opt/tomcat/logs -name "*.log.*" -mtime +7 -delete
六、进阶优化(可选)
| 优化项 | 操作 |
|---|---|
| JVM 调优 | 根据内存大小调整 -Xms/-Xmx,启用 G1GC:-XX:+UseG1GC |
| 静态资源缓存 | Nginx 中配置 expires 30d; 对 CSS/JS 等静态资源 |
| 数据库连接池 | 在 application.properties 中配置 HikariCP 参数 |
| 备份策略 | 使用 rsync 或腾讯云快照功能定期备份数据目录 |
| 容器化部署 | 考虑将应用打包为 Docker,使用 docker-compose 管理(更灵活) |
七、常见问题排查
- 端口被占用:
lsof -i :8080→kill -9 <PID> - 权限错误:
sudo chown -R tomcat_user:tomcat_group /opt/tomcat - Nginx 无法访问:检查防火墙规则 +
systemctl status nginx - Java 内存溢出:增加
-Xmx或升级服务器配置
✅ 最佳实践总结
- 安全优先:不直接暴露 Tomcat 端口,使用 Nginx 反向X_X
- 进程管理:用
systemd替代手动catalina.sh启动 - 资源合理分配:根据实例规格调整 JVM 参数
- 日志集中:结合云监控 + 本地日志轮转
- 自动化部署:后续可集成 CI/CD(如 GitHub Actions + SCP)
通过以上步骤,你可以在腾讯云轻量服务器上构建一个稳定、安全、易维护的 Java 应用运行环境。如有特定框架(如 Spring Cloud)或高可用需求,可进一步扩展架构设计。
云小栈