在服务器上运行Java项目需要根据项目类型(如Spring Boot、传统WAR包、独立JAR等)进行配置,以下是详细的步骤和注意事项:
1. 基础环境配置
1.1 安装Java Runtime (JRE) 或 JDK
- 推荐JDK:即使项目不需要编译,JDK包含监控工具(如
jvisualvm)。 - 版本选择:
- 生产环境建议使用LTS版本(如Java 11、17、21)。
- 通过命令检查版本:
java -version
- 安装方式:
- Linux(Debian/Ubuntu):
sudo apt update sudo apt install openjdk-17-jdk - Linux(CentOS/RHEL):
sudo yum install java-17-openjdk-devel - 手动安装(通用):
- 下载JDK压缩包(如从Oracle或Adoptium)。
- 解压并设置环境变量:
export JAVA_HOME=/path/to/jdk export PATH=$JAVA_HOME/bin:$PATH
- Linux(Debian/Ubuntu):
1.2 设置环境变量
- 编辑
~/.bashrc或/etc/profile,添加:export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 # 根据实际路径修改 export PATH=$JAVA_HOME/bin:$PATH - 生效配置:
source ~/.bashrc
2. 项目部署方式
2.1 独立可执行JAR(Spring Boot等)
- 启动命令:
java -jar your-app.jar - 后台运行(避免SSH断开后进程终止):
nohup java -jar your-app.jar > app.log 2>&1 & - 内存配置:
java -Xms512m -Xmx2G -jar your-app.jar # 设置堆内存初始值和最大值
2.2 WAR包部署(传统Servlet容器)
- 安装Tomcat/Jetty:
sudo apt install tomcat9 # Ubuntu示例 - 部署步骤:
- 将WAR包放入
/var/lib/tomcat9/webapps/。 - 重启Tomcat:
sudo systemctl restart tomcat9
- 将WAR包放入
2.3 容器化部署(Docker)
- 示例Dockerfile:
FROM eclipse-temurin:17-jre COPY target/your-app.jar /app.jar CMD ["java", "-jar", "/app.jar"] - 构建并运行:
docker build -t your-app . docker run -d -p 8080:8080 --name java-app your-app
3. 生产环境关键配置
3.1 安全配置
- 禁用敏感端点(Spring Boot Actuator):
management.endpoints.web.exposure.include=health,info management.endpoint.shutdown.enabled=false - 使用非root用户运行:
sudo useradd -m javauser sudo chown -R javauser:javauser /path/to/app sudo -u javauser java -jar app.jar
3.2 日志管理
- 日志轮转(使用
logrotate):# /etc/logrotate.d/java-app /var/log/app.log { daily rotate 7 compress missingok notifempty }
3.3 监控与维护
- JVM监控:
jstat -gc <pid>:查看GC状态。jcmd <pid> VM.uptime:检查JVM运行时间。
-
进程管理:
- 使用
systemd托管服务(示例/etc/systemd/system/java-app.service):[Unit] Description=Java Application After=network.target
[Service]
User=javauser
ExecStart=/usr/bin/java -jar /path/to/app.jar
Restart=always[Install]
WantedBy=multi-user.target- 启用服务: ```bash sudo systemctl daemon-reload sudo systemctl start java-app - 使用
4. 网络与防火墙
- 开放端口:
sudo ufw allow 8080/tcp # Ubuntu示例 - 反向X_X(Nginx/Apache):
# Nginx配置示例 server { listen 80; server_name example.com; location / { proxy_pass http://localhost:8080; } }
5. 依赖服务配置
- 数据库连接:
- 在
application.properties中配置:spring.datasource.url=jdbc:mysql://localhost:3306/db spring.datasource.username=user spring.datasource.password=pass
- 在
- Redis/MQ等:
- 确保服务器已安装相关服务,并在项目中配置连接信息。
常见问题排查
- 端口冲突:
netstat -tulnp | grep 8080 - 内存不足:
- 调整JVM参数(如
-Xmx)。 - 检查系统内存:
free -h
- 调整JVM参数(如
- 日志检查:
- 查看应用日志:
tail -f /var/log/app.log
- 查看应用日志:
通过以上步骤,可以确保Java项目在服务器上稳定运行。根据项目需求,可能还需配置HTTPS、集群部署等高级功能。
云服务器