在Windows Server上配置Java运行环境并部署Java应用的完整指南:
1. 安装Java运行环境
下载JDK
# 访问Oracle官网或OpenJDK下载页面
# 推荐使用LTS版本(如Java 11, 17, 21)
安装JDK
- 下载对应Windows版本的JDK安装包
- 运行安装程序,建议安装到标准路径:
C:Program FilesJavajdk-17
2. 配置环境变量
设置系统环境变量
# 打开命令提示符(管理员权限)
setx JAVA_HOME "C:Program FilesJavajdk-17" /M
setx PATH "%PATH%;%JAVA_HOME%bin" /M
验证安装
java -version
javac -version
echo %JAVA_HOME%
3. 应用部署方式
方式一:直接运行JAR文件
# 后台运行
java -jar myapp.jar > app.log 2>&1 &
# 带参数运行
java -Xms512m -Xmx2048m -jar myapp.jar --spring.profiles.active=prod
# 使用nohup保持运行
start /B java -jar myapp.jar > app.log 2>&1
方式二:创建Windows服务
使用NSSM工具
# 下载NSSM (Non-Sucking Service Manager)
# 创建服务
nssm install MyJavaApp
nssm set MyJavaApp Application java
nssm set MyJavaApp AppParameters -jar C:appsmyapp.jar
nssm set MyJavaApp AppDirectory C:apps
nssm set MyJavaApp Start SERVICE_AUTO_START
nssm start MyJavaApp
使用Java Service Wrapper
<!-- wrapper.conf 配置示例 -->
wrapper.java.command=%JAVA_HOME%/bin/java
wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp
wrapper.app.parameter.1=com.example.Application
wrapper.java.classpath.1=lib/wrapper.jar
wrapper.java.classpath.2=myapp.jar
wrapper.java.additional.1=-Xms512m
wrapper.java.additional.2=-Xmx2048m
4. 配置优化
JVM参数优化
# 生产环境常用参数
java -server
-Xms2g
-Xmx2g
-XX:+UseG1GC
-XX:MaxGCPauseMillis=200
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=C:logsheapdump.hprof
-Dfile.encoding=UTF-8
-Duser.timezone=Asia/Shanghai
-jar myapp.jar
系统性能调优
# 调整文件句柄限制
# 在注册表中修改 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management
# 增加 PagedPoolSize 和 NonPagedPoolSize
5. 安全配置
防火墙设置
# 允许Java应用端口
New-NetFirewallRule -DisplayName "Java App Port 8080" -Direction Inbound -Protocol TCP -LocalPort 8080 -Action Allow
# 允许Java执行
New-NetFirewallRule -DisplayName "Java Executable" -Program "C:Program FilesJavajdk-17binjava.exe" -Action Allow
用户权限管理
# 创建专用服务账户
net user javaapp password /add
net localgroup "Administrators" javaapp /delete
6. 监控和日志
日志配置
# logback-spring.xml 或 log4j2.xml
<configuration>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>C:/logs/myapp.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>C:/logs/myapp.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
</appender>
</configuration>
性能监控脚本
@echo off
:loop
tasklist | findstr "java.exe"
wmic process where "name='java.exe'" get WorkingSetSize,VirtualSize,CPUTime
timeout /t 60
goto loop
7. 自动化部署脚本
@echo off
:: deploy.bat
set APP_NAME=myapp
set APP_PATH=C:apps%APP_NAME%
set JAR_FILE=%APP_PATH%%APP_NAME%.jar
set LOG_PATH=%APP_PATH%logs
:: 创建目录
if not exist "%APP_PATH%" mkdir "%APP_PATH%"
if not exist "%LOG_PATH%" mkdir "%LOG_PATH%"
:: 停止现有进程
for /f "tokens=5" %%P in ('netstat -ano ^| findstr :8080') do (
taskkill /PID %%P /F 2>nul
)
:: 复制新版本
copy /Y "D:deploy%APP_NAME%.jar" "%JAR_FILE%"
:: 启动应用
cd /d "%APP_PATH%"
start /B java -Xms512m -Xmx2g -jar "%JAR_FILE%" > "%LOG_PATH%app.log" 2>&1
echo Deployment completed!
8. 故障排查
常见问题解决
# 检查端口占用
netstat -ano | findstr :8080
# 查看Java进程
jps -l
tasklist | findstr java
# 内存分析
jmap -heap <pid>
jstack <pid>
9. 最佳实践
- 版本管理:使用固定版本号,避免自动更新
- 备份策略:定期备份JAR文件和配置
- 监控告警:设置应用健康检查
- 安全更新:定期更新JDK补丁
- 文档记录:维护详细的部署文档
通过以上步骤,可以在Windows Server上稳定地部署和运行Java应用。建议根据具体应用需求调整配置参数。
云小栈