【问题标题】:Running a grails app on Amazon EC2 using set使用 set 在 Amazon EC2 上运行 grails 应用程序
【发布时间】:2015-12-22 23:17:09
【问题描述】:

我正在使用以下命令在 Amazon Linux EC2 实例上运行 grails 应用程序:

setsid grails run-war

我使用了这个命令,这样我就不必让我的终端窗口保持打开状态,即使我用来登录亚马逊机器的 Windows 计算机关闭,它也可以继续运行并可用。唯一的问题是它运行了一天,然后似乎关闭了。我发现每隔一天左右我就必须重新发出命令。是什么导致应用退出并因此需要重新启动?

【问题讨论】:

  • 为什么不构建一个 .war 文件并部署它而不是使用 run-warrun-war 不应该用于生产部署。
  • @Donal 现在我只是运行它来测试尚未完全生产。
  • 所以使用它进行测试的方式与在 prod 中使用它的方式相同。这就是测试的目标,不是吗?

标签: grails amazon-web-services amazon-ec2


【解决方案1】:

正如 cmets 中指出的那样,在任何类型的部署环境中使用 run-app 都不会按照您希望的方式工作。

run-app 的 Grails 文档甚至包括以下语句(重点是我的):

此目标不打算用于应用程序部署。 生成 WAR 文件时实现了许多优化 对于 run-app 无法使用的部署,因为 run-app 是 针对开发人员的生产力而非性能进行了优化。

注意它说的是“部署”而不是“生产”。简而言之,您正在尝试使用螺丝刀敲入钉子(不适合该工作的工具)。解决方案是在该环境中部署您的应用程序,而不是使用run-app

【讨论】:

    【解决方案2】:

    如果您想要在 EC2 上运行 Grails 应用程序,Boxfuse 为 deploying Grails 3.x apps on EC2 提供了非常简单的原生支持。

    你需要做的只是字面意思

    boxfuse run my-grails3-app-1.0.jar
    

    Boxfuse 会自动

    • 融合为您的应用量身定制的最小操作系统映像(需要 包括JVM 和您的应用)
    • 将其推送到安全的在线图像存储库
    • 在大约 30 秒内将其转换为 AMI
    • 创建弹性 IP 并为其分配新域
    • 创建一个打开正确端口的安全组
    • 启动您的 AMI 实例并确保运行状况检查通过
    • 将弹性 IP(和新域)映射到您的新实例

    所有更新都作为零停机蓝/绿部署执行。如果您需要多个实例,Boxfuse 还支持 ELB、Auto-scaling 等。

    Boxfuse 分析您的原生 Grails 3 application.yml 配置并自动提取您的应用所需的端口和运行状况检查信息。然后使用此信息正确设置安全组和 ELB。

    更多信息:https://boxfuse.com/getstarted/grails

    免责声明:我是 Boxfuse 的创始人兼 CEO

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-07
      • 1970-01-01
      • 2016-03-11
      • 1970-01-01
      • 2013-10-05
      相关资源
      最近更新 更多