【问题标题】:Correct way to deploy .jar file in production在生产中部署 .jar 文件的正确方法
【发布时间】:2020-07-03 02:58:21
【问题描述】:

我是部署新手,我已经将 jar 文件作为一个包进行了部署,我应该如何继续在我的产品服务器中进行部署?

我的产品服务器基本上是在 AWS 上运行的 EC2 机器

  1. 我应该只运行 java - jar “jar 文件”吗?这是生产服务器的实践方式吗?
  2. 要不要打包 .jar 文件到 ear/war 并部署到 tomcat/jboss 服务器中?

帮助表示赞赏!

【问题讨论】:

  • 你还没有告诉我们你的程序做了什么。如果它是一个应该始终运行的服务器,那么它的部署方式与应该作为日常批处理作业或交互式工具运行的东西不同
  • 是的,它是一个必须始终运行的服务器端代码 API
  • 数据太少,无法回答您的问题。您没有指定您可以使用的基础设施。例如,当您部署到 k8s、Elastic beanstalk、prem 服务器等时,您选择不同的选项并有不同的约束。

标签: java spring maven


【解决方案1】:

你描述的两种方法都是有效的。

对于在 Linux 服务器上包含自己的应用程序服务器(例如 Spark、Javalin、Spring Boot)的小型 Web API,我启动了一个 screen 会话并运行 java -jar。这允许我在不终止程序的情况下退出 SSH 会话(与服务器断开连接)。

对于其他不包含应用服务器的 Spring 应用,我将代码打包成 WAR 并复制到应用服务器的部署目录中。对于 Tomcat,那是 webapps。然后应用服务器可以读取 WAR 并启动一个正在运行的实例(假设启用了热部署)。

尤其是 Tomcat 还有一个网页,您可以在其中上传 WAR 文件以进行部署。

【讨论】:

    【解决方案2】:

    这基本上取决于您的偏好和您所在位置的通常标准。我们在 Docker 中有服务,基本上在 entry-point.sh 脚本的末尾有 exec java -jar param param...。您可以运行整个 Tomcat 等。

    【讨论】:

    • 不,我不想使用docker,我只是想知道将jar嵌入war/ear并部署在jboss中是否是行业惯例
    【解决方案3】:

    如果您使用的是 Spring Boot(这是一个好主意),那么 java -jar 非常好 - 您可以使用嵌入式 Tomcat 并跳过安装专用应用程序服务器(或者准确地说是 servlet 容器)。

    【讨论】:

      【解决方案4】:

      在 Jboss 服务器中,第二种方法优于第一种方法,因为可以通过控制台轻松完成操作。 您可以控制应用程序在服务器上的部署。 如果说您不想在集群的所有服务器部分上部署 jar,则可以小心。

      【讨论】:

        【解决方案5】:

        如果您希望程序在与 SSH 断开连接或在 Linux 中关闭终端后仍保持运行。你可以使用这个命令:

        nohup java -jar file.jar &
        

        【讨论】:

          猜你喜欢
          • 2019-04-15
          • 1970-01-01
          • 1970-01-01
          • 2018-12-05
          • 1970-01-01
          • 1970-01-01
          • 2015-11-13
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多