部署一个小企业级的 Java 应用(比如 Spring Boot 后端服务),至少需要以下最低配置的服务和资源,确保应用可以正常运行、访问,并具备基本的稳定性和安全性。
🧰 一、服务器硬件/云主机配置(最低要求)
| 组件 | 推荐最低配置 | 说明 |
|---|---|---|
| CPU | 1 核 / 2 线程 | 对于低并发的小型应用够用 |
| 内存 | 2GB RAM | Java 应用对内存需求较高,尤其是 JVM |
| 存储 | 50GB SSD | 安装系统、JVM、应用和日志等 |
| 操作系统 | Linux(推荐 Ubuntu 20.04+ 或 CentOS 8) | 免费、稳定、社区支持好 |
💡 如果使用云服务商(如阿里云、腾讯云、AWS EC2),可以选择类似“1核2G”或“2核4G”的轻量级实例。
⚙️ 二、软件环境配置
1. Java 运行环境
- 至少安装:OpenJDK 11 或 17
- 推荐使用:
openjdk-17-jdk(Spring Boot 2.5+ 起推荐) - 可通过
apt或yum安装,或手动下载 JDK
sudo apt install openjdk-17-jdk
2. Java 应用打包方式
- 推荐使用:可执行 jar 包(如
spring-boot:run或mvn package构建) - 示例启动命令:
java -jar your-app.jar
3. 数据库(如果需要)
- 如果应用涉及数据持久化,建议至少部署一个数据库
- 推荐选择:
- MySQL 8.x / PostgreSQL 14+
- 最低配置:1核1G内存即可运行
- 可与 Java 应用部署在同一台服务器上(初期)
4. 反向X_X(可选但推荐)
- 使用 Nginx 或 Apache 做反向X_X,提供 HTTP 访问入口
- 示例 Nginx 配置:
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
5. 防火墙设置
- 开放必要的端口:
80(HTTP)443(HTTPS)22(SSH)8080(默认 Spring Boot 端口,如果不用 Nginx)
🔐 三、安全与运维基础
1. 用户权限管理
- 不要用 root 用户运行 Java 应用
- 创建专用用户并限制权限
2. 守护进程
- 推荐使用
systemd来管理 Java 应用为后台服务,避免前台运行退出就挂掉
示例 /etc/systemd/system/myapp.service:
[Unit]
Description=My Java Application
After=syslog.target
[Service]
User=myuser
ExecStart=/usr/bin/java -jar /opt/myapp/myapp.jar
SuccessExitStatus=143
StandardOutput=file:/var/log/myapp.log
StandardError=file:/var/log/myapp.err
Restart=always
[Install]
WantedBy=multi-user.target
然后启用服务:
sudo systemctl enable myapp
sudo systemctl start myapp
3. 日志监控
- 查看日志:
tail -f /var/log/myapp.log
🌐 四、域名与 HTTPS(对外访问时推荐)
1. 域名解析
- 注册一个域名,绑定到服务器公网 IP
2. SSL 证书(HTTPS)
- 可以使用 Let’s Encrypt 免费证书 + Certbot 自动续签
- 示例命令(配合 Nginx):
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx
📦 五、可选增强功能(随业务增长逐步添加)
| 功能 | 说明 |
|---|---|
| 数据库主从复制 | 提高可用性 |
| Redis 缓存 | 提升性能 |
| Docker 容器部署 | 更方便维护和迁移 |
| Jenkins/GitLab CI | 实现自动化构建部署 |
| 监控工具 | 如 Prometheus + Grafana,监控 JVM 和服务器状态 |
| 备份策略 | 定期备份数据库和代码 |
✅ 总结:最简部署清单
| 类别 | 最低要求 |
|---|---|
| 服务器 | 1核2G,50G SSD |
| OS | Ubuntu/CentOS |
| Java 版本 | OpenJDK 11/17 |
| 数据库 | MySQL/PostgreSQL(可选) |
| 运行方式 | systemd 托管 jar 包 |
| 安全 | 防火墙 + 非 root 用户 |
| 访问入口 | Nginx 反向X_X(可选) |
| 日志 | 输出日志文件便于排查问题 |
如果你有具体的项目结构(比如是否带前端、是否需要数据库等),我可以给出更定制化的建议。欢迎补充!
ECLOUD博客