努力
奋斗

Windows Server 2019服务器部署java项目?

服务器价格表

直接上干货。在 Windows Server 2019 上部署 Java 项目,核心就三步:环境准备、应用打包、服务化运行。

很多人喜欢用 Tomcat GUI 界面去启动,那是开发调试用的。生产环境必须做成 Windows Service(系统服务),这样服务器重启后应用能自动拉起,不用人盯着。

第一步:基础环境搭建

别去官网下最新版 JDK,除非你有特殊需求。稳定起见,推荐 JDK 11 或 JDK 8 (LTS)。

  1. 下载 JDK:
    • 去 Adoptium (Eclipse Temurin) 或者 Oracle 官网下载 Windows x64 Installer (.msi)。
    • 关键点:安装时勾选 "Add to PATH",虽然手动配环境变量也行,但让安装程序自己搞定更省事,不容易出错。
  2. 验证安装:
    • 打开 CMD,输入 java -version 和 javac -version。
    • 如果能看到版本号,说明环境没问题。如果有报错,检查你的环境变量 JAVA_HOME 和 Path 是否配置正确,特别是路径里不要有中文或空格。

第二步:准备你的 Java 项目

假设你用的是 Maven 或 Gradle 构建的项目。

  1. 打成 Jar 包:
    • 确保你的 pom.xml (Maven) 或 build.gradle (Gradle) 配置了正确的打包插件。
    • Spring Boot 项目通常使用 spring-boot-maven-plugin。
    • 执行 mvn clean package -DskipTests。
    • 生成的 .jar 文件通常在 target 目录下。
  2. 测试运行:
    • 在服务器上创建一个目录,比如 C:appmyproject。
    • 把 jar 包放进去。
    • 命令行运行:java -jar myproject.jar。
    • 看控制台日志,确认端口(默认 8080)没被占用,且应用启动成功。这一步是为了排除代码本身的问题。

第三步:将应用注册为 Windows 服务(核心步骤)

Windows 自带的服务管理功能对纯 Java 进程支持不好,我们需要借助第三方工具 WinSW (Windows Service Wrapper)。这是目前最轻量、最标准的做法。

  1. 下载 WinSW:
    • 去 GitHub 搜索 winsw,下载最新版的 WinSW-x64.exe。
    • 把它放到你的项目目录下,重命名为 myproject.exe(名字要和后面的 xml 配置文件对应)。
  2. 创建配置文件:
    • 在同级目录下,新建一个 XML 文件,命名为 myproject.xml。
    • 内容如下(根据实际修改):
<service>
  <id>MyJavaProject</id> <!-- 服务名称 -->
  <name>My Java Project Service</name> <!-- 显示名称 -->
  <description>Spring Boot Application deployed on WinSW</description>

  <!-- 可执行文件路径,指向刚才下载的 exe -->
  <executable>%BASE%myproject.exe</executable>

  <!-- 启动参数 -->
  <arguments>-Xms512m -Xmx1024m -jar myproject.jar</arguments>

  <!-- 工作目录 -->
  <workingdirectory>%BASE%</workingdirectory>

  <!-- 日志配置 -->
  <log mode="roll"></log>

  <!-- 依赖项(可选) -->
  <!-- <depend>Tcpip</depend> -->
</service>

注意:%BASE% 是 WinSW 的环境变量,代表当前 exe 所在的文件夹。

  1. 注册并启动服务:
    • 以管理员身份打开 CMD 或 PowerShell。
    • 进入项目目录:cd C:appmyproject
    • 安装服务:.myproject.exe install
    • 启动服务:.myproject.exe start
    • 或者直接用 Windows 服务管理器 (services.msc) 找到 "My Java Project Service",设置为“自动”启动类型。

第四步:常见坑与优化

  1. 端口冲突:

    • 如果 8080 被占,改 application.yml 里的 server.port。
    • 别忘了在 Windows 防火墙里开新端口:控制面板 -> Windows Defender 防火墙 -> 高级设置 -> 入站规则 -> 新建规则 -> 端口 -> TCP -> 特定本地端口 -> 允许连接。
  2. 内存溢出 (OOM):

    • 在 XML 的 <arguments> 里调整 JVM 参数。
    • -Xms 是初始堆大小,-Xmx 是最大堆大小。建议设为物理内存的 1/4 到 1/2,具体看你的应用体量。
    • 例如:-Xms1g -Xmx2g
  3. 日志查看:

    • WinSW 默认会把标准输出和错误输出重定向到日志文件。
    • 在项目目录下找 .log 后缀的文件,用 Notepad++ 或 VS Code 打开,实时跟踪异常。
  4. 性能调优(进阶):

    • 如果是高并发场景,考虑开启 G1GC:添加参数 -XX:+UseG1GC。
    • 关闭不必要的监控:-XX:-PrintGCDetails 等,减少 I/O 开销。

总结流程

  1. 装 JDK。
  2. 打 Jar 包。
  3. 下 WinSW,写 XML 配置。
  4. 管理员 CMD 执行 install 和 start。
  5. 浏览器访问测试,看日志排查问题。

这套方案比 Tomcat 容器更轻量,资源占用更低,适合中小规模部署。如果遇到复杂集群或微服务,再考虑 Docker + Kubernetes,但在单机 Windows Server 上,WinSW 是最稳妥的选择。