繁体   English   中英

在生产中部署码头应用程序的一般方法是什么?

[英]What is the general way to deploy jetty application in production?

我刚刚接手了一个项目,它是一个 java servlet 应用程序,我刚刚弄清楚运行该应用程序的方式是mvn jetty:run by using history 之前唯一的开发者突然退出,没有任何文件。 我必须创建生产服务器并部署应用程序。

我没有以前的 Java 经验,所以不知道该怎么做。 我应该安装 nginx 或 apache 并像 PHP 那样运行应用程序吗? 或者我只是做类似nodejs的事情?

Jetty 是一个 Java Servlet 容器/服务器(具有更多功能)。

不需要另一台服务器。

关于如何启动 Jetty,您有几个选择。

  1. 使用jetty-home (或较旧的jetty-distribution )tarball 的独立服务器。

    在这种模式下,您解压jetty-home压缩包(这将成为${jetty.home}目录),为您的配置/部署创建一个新目录(这将成为${jetty.base}目录),然后运行Jetty 针对这个${jetty.base}目录。

    网上有很多关于如何做到这一点的例子。

    来自https://www.eclipse.org/jetty/documentation/current/的官方 Jetty 文档

    对于stackoverflow上的各种示例。

     # Grab the tarball [~]$ curl -O https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-home/9.4.30.v20200611/jetty-home-9.4.30.v20200611.tar.gz # Unpack the tarball [~]$ tar -zxvf jetty-home-9.4.30.v20200611.tar.gz # Make a {jetty.base} directory to house your configuration [~]$ mkdir myappbase [~]$ cd myappbase # Since this is a new {jetty.base}, lets initialize it with a # few common modules [myappbase]$ java -jar../jetty-home-9.4.30.v20200611/start.jar \ --add-to-start=http,deploy INFO: webapp transitively enabled, ini template available with --add-to-start=webapp INFO: server transitively enabled, ini template available with --add-to-start=server INFO: security transitively enabled INFO: servlet transitively enabled INFO: http initialized in ${jetty.base}/start.ini...(snip)... INFO: deploy initialized in ${jetty.base}/start.ini MKDIR: ${jetty.base}/webapps INFO: Base directory was modified # Lets see what we have now [myappbase]$ ls -F start.ini webapps/ # Copy your webapp into place [myappbase]$ cp ~/Projects/mywebapp.war webapps/ # See this Jetty Configuration [myappbase]$ java -jar../jetty-home-9.4.30.v20200611/start.jar --list-config # Run Jetty [myappbase]$ java -jar../jetty-home-9.4.30.v20200611/start.jar
  2. 嵌入式码头

    这意味着您已经完全用代码初始化了所有内容,从Server object 到ServerConnector ,再到WebAppContext (或ServletContextHandler ),并且正在发出一个Server.start(); 使服务器执行。

    这可能是 Jetty 更常见的用法,我们发现这种方法的用户比独立方法要多得多。

  3. 使用 jetty-maven-plugin 进行开发

    这是你已经发现的。

    在带有<packaging>war</packaging>的 maven 项目中,您可以在开发期间执行各种jetty-maven-plugin目标以使用 maven 项目执行各种操作。

    注意:此模式不适合生产!

    jetty:runjetty-maven-pluginrun目标。

    请参阅: https://www.eclipse.org/jetty/documentation/current/jetty-maven-plugin.html

  4. 嵌入 Jetty 的替代环境。

    这种模式的使用越来越多,如果您的应用程序使用像 Spark 或 SpringBoot 这样的库,那么您实际上是在使用 Jetty,并且不需要单独的服务器安装/配置,这一切都在 API/SDK 中完成图书馆。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM