关闭命令窗口时,如何在不终止会话的情况下以生产模式启动grail应用程序?

时间:2019-03-26 02:37:05

标签: java linux grails groovy centos

我有一个在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应用程序的方法。 谢谢。

2 个答案:

答案 0 :(得分: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中。

答案 1 :(得分:0)

在Linux上,您可以使用nohup(不挂机)命令来确保关闭终端时该命令不会被杀死。

创建一个包含启动语句的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