在服务器上运行Java项目需要提前准备什么?

在服务器上运行Java项目需要做好以下准备,按步骤进行:

一、基础环境准备

1. 操作系统配置

  • 系统更新sudo apt update && sudo apt upgrade (Ubuntu/Debian)
  • 时区设置sudo timedatectl set-timezone Asia/Shanghai
  • 防火墙配置:开放必要端口(如8080, 443, 22)
  • Swap分区:确保有足够交换空间(特别是内存较小的服务器)

2. Java环境安装

# 安装OpenJDK(推荐JDK 11或17)
sudo apt install openjdk-17-jdk

# 验证安装
java -version
javac -version

# 设置JAVA_HOME
echo 'export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64' >> ~/.bashrc
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

3. 构建工具(根据项目选择)

  • Mavensudo apt install maven
  • Gradle:使用官方脚本安装
  • 直接使用JAR:如果已有可执行JAR

二、项目部署准备

1. 项目打包

# Maven项目
mvn clean package -DskipTests

# Gradle项目
./gradlew build -x test

2. 依赖检查

  • 确认pom.xmlbuild.gradle中的依赖版本
  • 检查配置文件(如application.properties/application.yml
  • 数据库驱动和连接池配置

3. 配置文件调整

# 生产环境配置示例
server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/db_prod
spring.profiles.active=prod
logging.file.path=/var/log/myapp

三、服务器优化配置

1. JVM参数调优

# 启动脚本示例
java -Xms512m -Xmx2048m 
     -XX:+UseG1GC 
     -XX:MaxGCPauseMillis=200 
     -jar your-app.jar

2. 进程管理

  • Systemd服务(推荐):
    
    # /etc/systemd/system/myapp.service
    [Unit]
    Description=My Java Application
    After=network.target

[Service]
User=appuser
WorkingDirectory=/opt/myapp
ExecStart=/usr/bin/java -jar /opt/myapp/app.jar
SuccessExitStatus=143
Restart=always

[Install]
WantedBy=multi-user.target


- **Supervisor**:适合非systemd系统
- **Docker容器化**:提供环境一致性

### 3. **日志管理**
```bash
# 创建日志目录
sudo mkdir -p /var/log/myapp
sudo chown -R appuser:appuser /var/log/myapp

# 日志轮转配置(logrotate)

四、监控与维护

1. 监控工具

  • JVM监控:JConsole, VisualVM, Arthas
  • 应用监控:Spring Boot Actuator, Micrometer + Prometheus
  • 系统监控:top, htop, nmon

2. 健康检查

# 应用健康端点
curl http://localhost:8080/actuator/health

# 端口检查
netstat -tlnp | grep :8080

3. 备份策略

  • 应用日志定期归档
  • 数据库备份
  • 配置文件版本控制

五、安全加固

1. 权限控制

# 创建专用用户
sudo useradd -r -s /bin/false appuser
sudo chown -R appuser:appuser /opt/myapp

2. 网络安全

  • 使用HTTPS(Let’s Encrypt免费证书)
  • 限制管理端口访问IP
  • 定期更新依赖(检查安全漏洞)

3. 数据安全

  • 敏感信息使用环境变量或配置中心
  • 数据库连接加密
  • 禁用不必要的Actuator端点

六、快速部署检查清单

  1. [ ] Java环境安装并验证
  2. [ ] 项目打包(JAR/WAR)
  3. [ ] 生产配置文件准备
  4. [ ] 数据库/中间件就绪
  5. [ ] 服务器端口开放
  6. [ ] 进程管理配置
  7. [ ] 日志目录创建
  8. [ ] 监控配置
  9. [ ] 备份方案制定
  10. [ ] 安全加固措施

七、常见问题排查

# 查看应用日志
tail -f /var/log/myapp/application.log

# 检查端口占用
sudo lsof -i :8080

# JVM内存状态
jstat -gc <pid>

# 线程转储(分析死锁)
jstack <pid> > thread_dump.txt

根据项目类型额外准备:

Spring Boot项目

  • Actuator端点管理
  • Profile切换机制
  • 外部化配置

微服务项目

  • 服务注册中心(Eureka/Nacos)
  • 配置中心
  • API网关

传统Web项目(WAR)

  • Tomcat/Jetty安装
  • 应用服务器配置
  • 会话管理

建议先在测试环境完整演练部署流程,再操作生产服务器。使用Docker可以简化环境一致性,但需要学习容器管理。

云服务器