【问题标题】:How to install Spring boot app on Ubuntu server?如何在 Ubuntu 服务器上安装 Spring Boot 应用程序?
【发布时间】:2017-03-23 08:17:33
【问题描述】:

我在 Digital Ocean 上有 Ubuntu 服务器,我编写了 Spring Web 应用程序,现在我想将它投入生产。

我通过 FTP 将其上传到服务器,然后通过 Putty 打开控制台并使用以下命令:

java -jar name.jar

Spring 在那之后启动,当我打开我的 Web 应用程序时一切正常,但是当我关闭我的 Putty 会话时,我的 Spring Web 应用程序不再工作。似乎当我关闭我的 Putty 会话时,Spring Web 应用程序也已关闭。

如何解决?

【问题讨论】:

    标签: spring ubuntu spring-boot digital-ocean


    【解决方案1】:

    虽然KLHauser 的建议会起作用,但如果虚拟机在云中重新启动(发生这种情况),您的应用程序将不会自动重新启动。使用kill -9 停止您的应用程序也容易出错且很危险,因为您可能不小心杀死了错误的进程。

    请参阅Spring Boot 文档的作为 Linux 服务运行部分,了解如何执行此操作。

    如果你已经配置了 Spring Boot 的 Maven 或 Gradle 插件来生成 一个完全可执行的 jar,并且您没有使用自定义 embeddedLaunchScript,那么您的应用程序可以用作init.d 服务。只需将 jar 符号链接到 init.d 即可支持标准 启动、停止、重启和状态命令。

    该脚本支持以下功能:

    • 以拥有 jar 文件的用户身份启动服务
    • 曲目 应用程序的 PID 使用 /var/run//.pid
    • 写入 控制台日志到 /var/log/.log

    假设你有一个 Spring Boot 应用程序安装在 /var/myapp,将 Spring Boot 应用程序安装为 init.d 服务 只需创建一个符号链接:

    $ sudo ln -s /var/myapp/myapp.jar /etc/init.d/myapp 安装后, 您可以以通常的方式启动和停止服务。例如,在一个 基于Debian的系统:

    $ service myapp start

    【讨论】:

    • 所以我可以将我的 jar 上传到某个文件夹,然后使用 /etc/init.d/myapp 安装它,然后我可以轻松地启动它并稍后停止它,对吗?
    • 是的,根据文档,myapp 是您的应用程序的名称
    • 在我的情况下,我收到了这条消息 Failed to start autobio.service: Unit autobio.service failed to load: No such file or directory.。运行 update-rc.d myapp defaults 后它正在工作。 (系统:SMP Debian 3.16.39-1+deb8u2 (2017-03-07) x86_64 GNU/Linux)
    • 嗨,我知道这是一个旧线程,但我已将应用程序的 jar 文件放在 var/myapp 中并且可以运行它。但是,当我导航到服务器的 IP 时,我只显示了空的 var/www/hmtl 目录。任何人都可以帮忙吗? @jny
    【解决方案2】:

    只需使用java -jar name.jar &,应用程序就会在新的进程线程中启动。

    通过在末尾直接添加> log.txt,您还将拥有一个日志。

    【讨论】:

    • 我会试试的。如果我想停止 Spring Web 应用程序,我该怎么做?
    • ps aux | grep java 将显示 java 进程列表。
    • 使用kill -9 PID,您将能够杀死正在运行的进程
    • -9 用铁腕杀死进程。 PID需要替换为进程ID。
    猜你喜欢
    • 2017-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-20
    • 2019-08-06
    • 1970-01-01
    • 1970-01-01
    • 2015-12-03
    相关资源
    最近更新 更多