在服务器上部署 Java 项目时,需要准备一系列依赖和环境组件,具体取决于你的项目类型(如 Spring Boot、普通 Java Web、微服务等)。以下是常见的依赖和步骤:
一、基础依赖(必须)
-
Java 运行环境(JRE)或 Java 开发工具包(JDK)
- 推荐使用 JDK,因为有些应用需要编译或调试。
- 版本需与项目开发时一致(如 Java 8、11、17 等)。
- 下载方式:
- OpenJDK(推荐,免费):
sudo apt install openjdk-17-jdk(Ubuntu) - Oracle JDK(需注意许可)
- OpenJDK(推荐,免费):
-
操作系统支持
- Linux(CentOS、Ubuntu、Debian 等)最常见
- Windows Server(较少用于 Java 项目部署)
二、项目运行依赖
-
构建工具(可选,用于打包)
- Maven 或 Gradle(如果要在服务器上重新编译)
- 多数情况下,项目在本地打包成
.jar或.war,无需在服务器安装构建工具。
-
打包格式
- JAR(Spring Boot 项目常用):内嵌 Tomcat,直接运行。
- WAR:需部署到外部 Web 服务器(如 Tomcat)。
三、Web 服务器 / 应用服务器(根据项目类型)
-
Tomcat(适用于 WAR 包)
- 安装 Tomcat 并配置
server.xml、web.xml等 - 启动命令:
./startup.sh
- 安装 Tomcat 并配置
-
Spring Boot 内嵌容器
- 使用 JAR 包,无需外部服务器,直接运行:
java -jar myapp.jar
- 使用 JAR 包,无需外部服务器,直接运行:
-
其他应用服务器(较少见)
- Jetty、Undertow、WebLogic、WebSphere(企业级)
四、数据库依赖(如果项目使用数据库)
-
数据库服务
- MySQL、PostgreSQL、Oracle、MongoDB 等
- 需要安装并启动数据库服务
- 配置数据库连接信息(URL、用户名、密码)
-
JDBC 驱动
- 通常已包含在项目依赖中(Maven 自动下载)
- 确保
pom.xml中有对应依赖,如:<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>
五、中间件依赖(根据项目需求)
-
Redis(缓存)
- 安装 Redis 服务
- 配置 Java 项目使用 Jedis 或 Lettuce 客户端
-
RabbitMQ / Kafka(消息队列)
- 安装并启动消息中间件
- 配置项目连接信息
-
Nginx(反向 / 负载均衡)
- 用于 Java 服务端口(如 8080 → 80)
- 提供静态资源服务、HTTPS 支持等
六、安全与运维依赖
-
防火墙配置
- 开放端口(如 8080、80、443)
- 使用
ufw、firewalld或云平台安全组
-
系统服务管理
- 将 Java 应用注册为系统服务(推荐使用
systemd) -
示例
myapp.service:[Unit] Description=My Java Application After=network.target [Service] User=tomcat ExecStart=/usr/bin/java -jar /opt/myapp/myapp.jar Restart=always [Install] WantedBy=multi-user.target
- 将 Java 应用注册为系统服务(推荐使用
-
日志管理
- 配置日志输出路径(如
/var/log/myapp/) - 使用 Logback、Log4j2 等框架
- 配置日志输出路径(如
-
环境变量 / 配置文件
application.properties或application.yml- 可通过
-Dspring.profiles.active=prod指定环境
七、可选但推荐的工具
- Docker:容器化部署,简化依赖管理
- Jenkins / GitLab CI:自动化部署
- Prometheus + Grafana:监控 Java 应用性能
- JVM 调优参数:如
-Xms512m -Xmx2g
总结:最小部署清单
| 项目 | 说明 |
|---|---|
| ✅ JDK | Java 运行环境 |
| ✅ JAR/WAR 包 | 打包好的应用 |
| ✅ 数据库 | 如 MySQL(如项目需要) |
| ✅ 应用服务器 | Tomcat(WAR)或直接 java -jar(JAR) |
| ✅ 端口开放 | 防火墙配置 |
| ✅ 启动脚本或 systemd 服务 | 保证应用常驻 |
如果你提供具体的项目类型(如 Spring Boot、传统 SSM、微服务等),我可以给出更详细的部署建议。
ECLOUD博客