在部署一个 Java 后台应用服务器时,通常需要安装和配置一系列软件组件。以下是常见的必备和可选组件,适用于大多数 Java Web 应用(如 Spring Boot、Spring MVC、Java EE 等)的生产环境部署。
一、核心必备组件
1. Java 运行环境(JRE / JDK)
-
作用:运行 Java 程序的基础。
-
推荐版本:
- 生产环境:JRE 或 JDK 8、11、17(LTS 版本更稳定)
- 推荐使用 OpenJDK 或 Oracle JDK
-
安装方式:
# Ubuntu/Debian sudo apt install openjdk-17-jdk # CentOS/RHEL sudo yum install java-17-openjdk-devel
2. 应用服务器(Application Server)
根据项目类型选择:
| 类型 | 常见产品 | 说明 |
|---|---|---|
| 轻量级嵌入式服务器 | Tomcat、Jetty、Undertow | 适合 Spring Boot 内嵌或 WAR 部署 |
| 全功能 Java EE 服务器 | WildFly(原 JBoss)、GlassFish、WebLogic、WebSphere | 支持 EJB、JMS 等高级特性 |
✅ 大多数现代项目使用 Spring Boot + 内嵌 Tomcat/Jetty,无需单独安装外部服务器。
示例:安装 Apache Tomcat(独立部署)
# 下载并解压
wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.85/bin/apache-tomcat-9.0.85.tar.gz
tar -xzf apache-tomcat-9.0.85.tar.gz
二、数据库系统(根据需求)
| 数据库 | 安装命令(Ubuntu) |
|---|---|
| MySQL | sudo apt install mysql-server |
| PostgreSQL | sudo apt install postgresql |
| Oracle DB | 手动安装(需授权) |
| MongoDB(NoSQL) | sudo apt install mongodb |
应用通过 JDBC 或 JPA 连接数据库。
三、反向X_X与 Web 服务器(推荐)
1. Nginx
-
用途:反向X_X、负载均衡、静态资源服务、SSL 终端
-
安装:
sudo apt install nginx -
配置示例(X_X到本地 8080 端口的 Java 应用):
server { listen 80; server_name your-domain.com; location / { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
2. Apache HTTP Server
- 替代 Nginx,也可做反向X_X
- 安装:
sudo apt install apache2 sudo a2enmod proxy proxy_http
四、安全与加密(重要)
1. SSL/TLS 证书
- 使用 Let’s Encrypt 免费证书(配合 Nginx/Apache):
sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d your-domain.com
五、监控与日志管理(可选但推荐)
1. 日志轮转(logrotate)
- 防止日志文件过大
- 配置
/etc/logrotate.d/myapp
2. 监控工具
- Prometheus + Grafana:监控 JVM 性能、请求指标
- ELK Stack(Elasticsearch, Logstash, Kibana):集中日志分析
- Zabbix / Nagios:服务器健康监控
六、部署与运维支持
1. 进程管理工具
Java 应用建议用以下工具管理后台运行:
-
systemd(Linux 推荐)
# /etc/systemd/system/myapp.service [Unit] Description=My Java Application After=network.target [Service] Type=simple User=myuser ExecStart=/usr/bin/java -jar /opt/myapp/app.jar Restart=always [Install] WantedBy=multi-user.target -
Supervisor(Python 工具,也常用)
[program:myapp] command=java -jar /opt/myapp/app.jar autostart=true autorestart=true user=myuser
2. 构建与部署工具
- Maven / Gradle:构建项目
- Jenkins / GitLab CI / GitHub Actions:自动化部署
七、缓存与消息队列(按需)
| 组件 | 用途 | 安装命令 |
|---|---|---|
| Redis | 缓存、Session 存储 | sudo apt install redis-server |
| RabbitMQ / Kafka | 消息队列 | sudo apt install rabbitmq-server |
典型部署架构示例
用户浏览器
↓ HTTPS
Nginx(反向X_X + SSL)
↓ HTTP
Spring Boot 应用(内嵌 Tomcat,运行在 8080)
↓ JDBC
MySQL / PostgreSQL
↓
Redis(缓存可选)
总结:最小化安装清单
| 组件 | 是否必须 | 说明 |
|---|---|---|
| JDK 8/11/17 | ✅ 必须 | 运行 Java 程序 |
| 应用 Jar/WAR 包 | ✅ 必须 | 你的代码 |
| Tomcat(如非内嵌) | ⚠️ 按需 | 外部部署 WAR 时需要 |
| Nginx | ✅ 推荐 | 反向X_X和安全 |
| MySQL/PostgreSQL | ✅ 按需 | 数据存储 |
| systemd / Supervisor | ✅ 推荐 | 进程守护 |
| SSL 证书 | ✅ 推荐 | 生产环境必须加密 |
如果你提供具体的技术栈(如 Spring Boot、传统 Java EE、微服务等),我可以给出更精确的安装建议。
ECLOUD博客