如何将 Ratpack API 部署到远程服务器?

How to deploy Ratpack API into remote server?

我使用 Ratpack 和 Groovy 创建了一个 API。所有 GET,POST 应用程序都在本地运行。现在我希望将其移动到某个远程服务器(比如开发环境)。我怎样才能做到这一点? 要在本地启动 运行 应用程序,我必须从 eclipse IDE 中执行 "gradle run" 或 "Run the Ratpack.groovy as a groovy script"。然后它说 "Ratpack Server running in localhost:8080"。然后我可以将 API 用作 localhost:8080/api/.../.../... 但同时我尝试 运行它作为 JAVA 应用程序,我收到错误消息:

{"@timestamp":"2016-06-02T14:47:06.026+05:30","@version":1,"message":"Starting server...","logger_name":"ratpack.server.RatpackServer","thread_name":"main","level":"INFO","level_value":20000,"tags":null}
Exception in thread "main" java.io.UncheckedIOException: java.io.IOException: Is a directory
    at ratpack.util.Exceptions.uncheck(Exceptions.java:52)
    at ratpack.groovy.Groovy.ratpack(Groovy.java:112)
    at ratpack.groovy.Groovy$ratpack.callStatic(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:56)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:194)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:206)
    at Ratpack.run(Ratpack.groovy:22)

为了在产品中部署它,我将 jar 移到了服务器。之后我应该如何启动 Ratpack 服务器或更确切地说 API 服务?

我建议设置一个 CI 管道来构建 java jar 并将工件部署到您的目标环境。

我推荐使用 John Engleman 的 Shadow 插件 https://plugins.gradle.org/plugin/com.github.johnrengelman.shadow

此插件生成影子 jar(类似于 Maven 的影子 jar),可以选择包含 bash 脚本或批处理脚本以启动您的应用程序。

高级建议:

  1. 将影子插件添加到您的 gradle 构建文件

    插件{ id 'io.ratpack.ratpack-groovy' 版本 '1.3.3' id 'com.github.johnrengelman.shadow' 版本 '1.2.3' }

  2. 有你的CI服务器或者你手动执行`gradlew installShadowApp

  3. SCP/FTP 这个神器从你的 build/installShadow 目录到你的目标服务器

  4. build/installShadow/$appName/bin/$appName 调用 shell 脚本以启动应用程序

为了更易于维护的解决方案,我建议将此 shell 脚本注册为服务或使用 monit/upstart/ etc

等解决方案

有关部署到 Heroku 的更详细示例,请查看我的笔记:http://danhyun.github.io/2016-gr8confeu-rapid-ratpack-groovy/#deploying_to_heroku