在新服务器上部署 Java 项目,通常需要完成一系列配置和安装步骤。以下是一个完整的部署流程和所需配置的清单,适用于大多数 Java Web 应用(如 Spring Boot、Tomcat 部署等)。
✅ 一、基础环境准备
1. 操作系统
- 推荐使用 Linux 系统(如 CentOS、Ubuntu、Debian)
- 可选:Windows Server(较少用于生产)
2. 安装 Java 运行环境(JRE / JDK)
根据你的项目需求选择合适的版本(如 JDK 8、JDK 11、JDK 17 等):
# Ubuntu/Debian 安装示例
sudo apt update
sudo apt install openjdk-11-jdk -y
# 查看Java版本
java -version
javac -version
如果是构建项目(如 Maven 编译),则需要安装 JDK;如果是运行 jar 包,可只安装 JRE。
✅ 二、部署方式相关配置
3. Tomcat(如果是 WAR 包部署)
下载并安装 Apache Tomcat(推荐 9.x 或 10.x):
wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.85/bin/apache-tomcat-9.0.85.tar.gz
tar -xvf apache-tomcat-9.0.85.tar.gz
mv apache-tomcat-9.0.85 tomcat
- 启动:
tomcat/bin/startup.sh - 停止:
tomcat/bin/shutdown.sh - 配置文件:
tomcat/conf/server.xml、web.xml、tomcat-users.xml(用于管理页面)
4. MySQL / PostgreSQL / Oracle 数据库(根据项目需求)
安装数据库并配置远程访问权限(如果数据库不在本机):
# Ubuntu 安装 MySQL 示例
sudo apt install mysql-server -y
sudo mysql_secure_installation
- 修改
my.cnf允许远程连接 - 创建数据库和用户
- 导入初始 SQL 脚本(如有)
5. Redis(可选)
如果项目中使用了缓存功能:
sudo apt install redis -y
redis-server
6. Nginx / Apache(反向X_X)
用于处理静态资源、负载均衡、HTTPS 等:
sudo apt install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx
- 配置反向X_X到 Tomcat 或后端服务
- 配置 HTTPS(可使用 Let’s Encrypt)
7. 防火墙设置
确保开放必要的端口(如 80、443、8080、3306、22):
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 8080/tcp
sudo ufw enable
✅ 三、Java 项目部署方式
8. 打包方式:JAR or WAR
-
JAR 包(Spring Boot 推荐):
- 使用命令运行:
java -jar yourapp.jar - 可以后台运行:
nohup java -jar yourapp.jar > app.log & - 推荐配合 systemd 管理服务(见下文)
- 使用命令运行:
-
WAR 包:
- 放入 Tomcat 的
webapps目录下自动部署
- 放入 Tomcat 的
9. 设置 JVM 参数(可选)
优化性能或内存管理:
JAVA_OPTS="-Xms512m -Xmx2g -Duser.timezone=GMT+8"
java $JAVA_OPTS -jar yourapp.jar
10. 日志与监控
- 将日志输出到指定路径,方便排查问题
- 可集成 Prometheus + Grafana 做监控
- 使用 ELK(Elasticsearch, Logstash, Kibana)做日志分析
✅ 四、自动化部署工具(可选)
11. Jenkins / GitLab CI / GitHub Actions
实现持续集成/持续部署(CI/CD)。
12. Docker / Kubernetes(高级部署)
- 使用 Docker 容器化部署 Java 项目
- 使用 Kubernetes 实现集群管理和服务编排
✅ 五、安全加固建议
13. 安全措施
- 不使用 root 用户启动应用
- 使用 HTTPS 加密通信(Let’s Encrypt)
- 定期备份数据库
- 限制数据库访问权限
- 使用 Fail2ban 防止暴力破解 SSH
✅ 六、常用命令总结
| 功能 | 命令 |
|---|---|
| 查看 Java 版本 | java -version |
| 查看进程 | ps aux | grep java |
| 杀死进程 | kill -9 PID |
| 查看端口占用 | netstat -tuln | grep 8080 |
| 查看防火墙状态 | ufw status |
✅ 示例:Spring Boot 项目部署完整流程
- 安装 JDK 11
- 上传
yourapp.jar到服务器 - 安装并启动 MySQL
- 配置 application.properties 中的数据库连接信息
- 后台运行项目:
nohup java -jar yourapp.jar > app.log & - 配置 Nginx 反向X_X(80 -> 8080)
- 开放防火墙端口
- 配置域名绑定和 HTTPS(可选)
如果你提供具体的项目类型(如是否为 Spring Boot、Maven、Gradle、是否打包成 WAR/JAR、是否使用数据库等),我可以给出更详细的部署方案。
ECLOUD博客