在腾讯云服务器(CVM)上部署 Java 应用前,需根据应用类型(如 Spring Boot、传统 WAR 包、微服务等)和运行环境(Linux 发行版,通常推荐 CentOS Stream 8/9 或 Ubuntu 20.04/22.04)安装必要依赖。以下是通用、关键且推荐的依赖清单及说明:
✅ 一、核心必备依赖
| 依赖 | 说明 | 安装建议 |
|---|---|---|
| Java 运行时环境(JRE)或 JDK | Java 应用运行基础。生产环境推荐 JDK 11 或 JDK 17(LTS 版本,兼容性好、安全更新持续) ⚠️ 避免使用 JDK 8(已停止公共更新,存在安全风险) |
• Ubuntu:sudo apt update && sudo apt install openjdk-17-jdk• CentOS/RHEL(使用 dnf): sudo dnf install java-17-openjdk-devel• 强烈建议通过官方渠道安装(如 Adoptium/Temurin 或 Amazon Corretto),避免 OpenJDK 二进制包版本不一致问题 |
| 系统基础工具 | curl, wget, unzip, tar, vim/nano, ps, netstat/ss, lsof 等 |
Ubuntu:sudo apt install curl wget unzip vim net-tools lsofCentOS: sudo dnf install curl wget unzip vim-enhanced net-tools lsof |
✅ 二、可选但强烈推荐的依赖(提升稳定性与可观测性)
| 依赖 | 作用 | 说明 |
|---|---|---|
| systemd(Linux 默认) | 用于管理 Java 进程为系统服务(如 spring-boot.jar 启动为 service) |
✅ 默认已安装(现代 Linux 发行版均启用 systemd),无需额外安装;需编写 .service 文件实现开机自启、日志集成、自动重启等 |
| nginx(反向X_X & HTTPS) | 对外提供 HTTP/HTTPS 访问,隐藏端口(如 8080),支持负载均衡、静态资源托管、SSL 终止 | sudo apt install nginx(Ubuntu) / sudo dnf install nginx(CentOS)✅ 生产环境必须配置 HTTPS(可用腾讯云 SSL 证书 + nginx 部署) |
| certbot(配合 Let’s Encrypt) | 自动申请和续期免费 HTTPS 证书 | sudo apt install certbot python3-certbot-nginx(Ubuntu) |
| logrotate | 自动轮转 Java 应用日志(如 app.log),防止磁盘爆满 |
sudo apt install logrotate(Ubuntu) / sudo dnf install logrotate(CentOS)✅ 配合应用日志框架(Logback/Log4j2)配置滚动策略 |
| JDK 监控工具(可选) | jstat, jstack, jmap, jcmd(JDK 自带)✅ 已随 JDK 安装,无需额外操作;建议熟悉基本用法用于故障排查 |
✅ 三、按部署方式补充依赖
| 部署方式 | 额外依赖 | 说明 |
|---|---|---|
| Docker 部署 | docker, docker-compose |
若容器化部署:curl -fsSL https://get.docker.com | sudo shsudo systemctl enable docker && sudo systemctl start docker✅ 推荐使用 openjdk:17-jre-slim 等官方镜像构建 |
| WAR 包 + Tomcat | tomcat9(或手动解压 Apache Tomcat) |
Ubuntu:sudo apt install tomcat9 tomcat9-admin⚠️ 注意权限配置(避免 root 启动)、 server.xml 端口/上下文配置、webapps/ROOT 部署路径 |
| 数据库连接 | 对应 JDBC 驱动(不装在系统,而应打包进应用) | ✅ JDBC 驱动(如 mysql-connector-java-8.0.x.jar)应作为应用依赖引入(Maven/Gradle),不要手动拷贝到 $JAVA_HOME/jre/lib/ext(已废弃且不安全) |
| Redis / MQ 等中间件 | 客户端库(同上)→ 应用内依赖 | ❌ 不需要在系统安装 Redis 服务端(除非自建),若用腾讯云 CRS(Redis)或 TDMQ,则只需应用配置连接地址+密码 |
⚠️ 四、重要注意事项(避坑指南)
-
不要安装多个 JDK 混乱管理
→ 使用update-alternatives --config java(Ubuntu/Debian)或alternatives --config java(CentOS)统一管理 JAVA_HOME。 -
设置
JAVA_HOME环境变量(关键!)# 查看 JDK 路径(例如) sudo update-java-alternatives -l # Ubuntu # 或 sudo find /usr/lib/jvm -name "jdk-17*" # 手动查找编辑
/etc/environment或~/.bashrc:export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 # Ubuntu 示例 export PATH=$JAVA_HOME/bin:$PATH source ~/.bashrc -
防火墙配置(腾讯云安全组 ≠ 系统防火墙)
✅ 必须在 腾讯云控制台 > CVM 实例 > 安全组 中放行端口(如 80、443、8080);
❌ 系统自带 firewalld/ufw 一般建议关闭(由云平台安全组统一管控),避免双重策略冲突:sudo ufw disable # Ubuntu sudo systemctl stop firewalld && sudo systemctl disable firewalld # CentOS -
应用启动脚本建议
✅ 使用nohup java -jar app.jar --spring.profiles.active=prod > app.log 2>&1 &
✅ 更佳实践:用systemd管理(支持优雅停机、重启策略、日志journalctl -u myapp) -
内存调优(必做)
java -Xms512m -Xmx1024m -XX:+UseG1GC -jar app.jar根据 CVM 规格合理设置
-Xmx(建议不超过总内存的 75%),避免 OOM。
✅ 五、一键检查清单(部署前执行)
# 1. 检查 JDK
java -version
echo $JAVA_HOME
# 2. 检查端口是否空闲(如 8080)
ss -tuln | grep :8080
# 3. 检查时间同步(Java 应用对时间敏感)
timedatectl status
# 4. 检查 ulimit(高并发需调大)
ulimit -n # 建议 ≥ 65535
📌 总结:最小可行依赖组合(推荐新手起步)
| 环境 | 必装项 |
|---|---|
| Ubuntu 22.04 | openjdk-17-jdk, nginx, curl, unzip, vim, net-tools, logrotate |
| CentOS Stream 9 | java-17-openjdk-devel, nginx, curl, unzip, vim-enhanced, net-tools, logrotate |
✅ 完成后即可上传 JAR/WAR,配置 nginx 反代 + HTTPS,用 systemd 托管进程 —— 一套标准、安全、可运维的 Java 生产环境即搭建完成。
如需我为你生成:
- ✅
systemd服务文件模板 - ✅ nginx 反向X_X HTTPS 配置(含腾讯云 SSL 证书路径)
- ✅ Logback 日志滚动配置示例
- ✅ Dockerfile 示例(多阶段构建)
欢迎随时告诉我你的具体场景(如 Spring Boot 版本、是否用 Nacos/Redis、是否容器化),我可以为你定制方案 👇
CLOUD云枢