【问题标题】:How to start grail application in production mode without terminate session when close command windows?关闭命令窗口时如何在生产模式下启动 Grail 应用程序而不终止会话?
【发布时间】:2019-03-27 06:29:41
【问题描述】:

我有一个在 centos 7 上运行的 grails 2.4.3 应用程序。我的问题是我无法通过终端启动应用程序,因为当我关闭终端时,会话终止。

我启动程序的命令是:

export PATH=$PATH:/opt/setup/grails-2.4.4/bin
export JAVA_HOME=/usr/java/jdk1.7.0_80/
grails prod run-app

我已经尝试了很多方法: 即:nohup grails prod run-app(运行命令后没有任何变化), setsid prod run-app(程序在运行一段时间后意外终止)。 两种方式都行不通。 请帮助我找到一种在生产中精确启动 Grails 应用程序的方法。 谢谢。

【问题讨论】:

    标签: java linux grails groovy centos


    【解决方案1】:

    不要在生产中使用grails run-app。来自Grails 2.4.4 documentation

    切勿使用 run-app 命令部署 Grails,因为此命令会将 Grails 设置为在运行时自动重新加载,这会对性能和可伸缩性产生严重影响

    在 Grails 2.x(用于生产)中,您需要将应用程序部署到受支持的 Java EE 容器(Tomcat、Jetty 等),这些容器在文档的同一页上列出。

    在 Grails 3.x 中,您可以将 Web 应用程序打包为 jar 并像任何其他 jar 一样运行它,因为它构建在 Spring Boot 之上,并且容器被打包到 jar 中。

    【讨论】:

    • 感谢@dspie:我将通过在 Web 服务器容器上运行此应用来尝试您的建议。即:Tomcat 8。
    【解决方案2】:

    在linux上,可以使用nohup(no hang-up)命令确保关闭终端时该命令不会被杀死。

    创建一个包含您的启动语句的 sh (startup.sh) 文件:

    echo "export PATH=$PATH:/opt/setup/grails-2.4.4/bin
    export JAVA_HOME=/usr/java/jdk1.7.0_80/
    grails prod run-app" > startup.sh
    

    确保脚本可执行

    chmod +x startup.sh 
    

    然后

    nohup ./startup.sh
    

    【讨论】:

    • 谢谢@Luis,我可以从 nohup 开始。现在我需要继续观察它是否被杀死。如果他们仍然有问题,我会选择在 Web 服务器容器中运行应用程序,即:Tomcat。
    • 我很高兴它有帮助
    猜你喜欢
    • 2016-03-30
    • 1970-01-01
    • 2019-01-04
    • 1970-01-01
    • 2014-11-20
    • 2012-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多