jetty9配置指南及jetty9部署jenkins

简介:

jetty下载地址:

https://www.eclipse.org/jetty/download.html


jetty的安装:

下载.tgz的包解压缩的指定目录后即可

例如:将jetty-distribution-9.4.6.v20170531.tar.gz包解压缩到/usr/local/jetty目录。

我们默认把jetty的根目录当成 $JETTY_HOME



jetty目录结构:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@localhost jetty01] # ll
total 712
drwxr-xr-x  2 root root   4096 Sep  1 14:59 bin
drwxr-xr-x  7 root root   4096 Sep  1 14:53 demo-base
drwxr-xr-x  3 root root   4096 Sep  1 14:53 etc
-rw-r--r--  1 root root    198 Sep  1 16:19 jetty01.state
drwxr-xr-x 13 root root   4096 Sep  1 14:53 lib
-rw-r--r--  1 root root  30012 Sep  1 14:53 license-eplv10-aslv20.html
drwxr-xr-x  2 root root   4096 Sep  1 14:53 logs
drwxr-xr-x 19 root root   4096 Sep  1 14:53 modules
-rw-r--r--  1 root root   6262 Sep  1 14:53 notice.html
-rw-r--r--  1 root root   1637 Sep  1 14:53 README.TXT
drwxr-xr-x  2 root root   4096 Sep  1 14:53 resources
-rw-r--r--  1 root root   5702 Sep  1 14:53 start.ini
-rw-r--r--  1 root root 147725 Sep  1 14:53 start.jar
-rw-r--r--  1 root root 483631 Sep  1 14:53 VERSION.txt
drwxr-xr-x  2 root root   4096 Sep  1 16:36 webapps


目录、文件简介

Location Description

license-eplv10-aslv20.html

Jetty的许可文件

README.txt

有用的开始信息

VERSION.txt

版本信息

bin/

存放在Unix系统下运行的shell脚本

demo-base/

一个可运行包含示例web应用的Jetty服务器基目录

etc/

Jetty的配置文件

lib/

Jetty运行所必须的jar文件

logs/

日志

modules/

各个模块

notice.html

许可信息等

resources/

包含新增到classpath配置文件夹,如log4j.properties

start.ini

存放启动信息

start.jar

运行Jetty的jar

webapps/

一个用来存放运行在默认配置下的Jetty Web应用目录


重要的目录和文件:

bin/jetty.sh:jetty服务启动/停止脚本,主要有以下变量的配置

1
2
3
4
5
6
7
8
JAVA: 设置java命令的绝对路径,即jdk的bin目录下的java命令的路径,如果没设置,则从PATH环境变量中查找;
JAVA_OPTIONS:设置jvm参数;
JETTY_HOME:jetty的安装目录,如果没有设置,则从调用该脚本的上下文环境中猜测;
JETTY_BASE:jetty的base目录,即当前工程使用的jetty环境的根目录,如果没有设置,则与JETTY_HOME相同;
JETTY_RUN:配置保存jetty pid文件的路径,如果没有配置,根据以下顺序查找第一个可用目录: /var/run /usr/var/run , JETTY_BASE,  /tmp
JETTY_PID:pid文件路径,默认为:$JETTY_RUN/$NAME.pid(NAME变量表示启动jetty时,去掉扩展名的脚本名称);
JETTY_ARGS:jetty参数,如配置端口号等:JETTY_ARGS=8080 jetty.spdy.port=8443
JETTY_USER:配置启动用户,如以nkcoder用户启动:JETTY_USER=nkcoder


jetty运行:

命令方式启动:

1
2
cd  $JETTY_HOME
java -jar start.jar

这个命令能执行需要$JETTY_HOME下有start.ini文件,改文件中存放的是jetty服务启动信息

start.ini文件默认配置如下:

1
2
3
4
5
6
7
8
9
10
  cat  start.ini |  egrep  - v  "^#|^$"
--module=home-base-warning
--module=ext
--module=server
--module=jsp
--module=resources
--module=deploy
--module=jstl
--module=websocket
--module=http


通过上面的命令启动jetty后,在浏览器中输入http://localhost:8080 访问jetty,出现以下报错页面

wKiom1mpJoHiq4r1AABSmpVAm3k531.png-wh_50 

这是因为jetty启动时,会在$JETTY_HOME/webapps中找war包或者web应用的目录。而默认情况下$JETTY_HOME/webapps下没有web应用的war包和文件。所以提示404。


基础应用的例子

1
2
cd  $JETTY_HOME /demo-base/
java -jar $JETTY_HOME /start .jar

访问http://localhost:8080 此时可以看到一个Jetty的欢迎页面,页面上包含几个简单的例子,欢迎页面如下

wKioL1mpKFriWHLDAAIrQPEE7Dg872.png


来看下demo-base目录中的文件,同样有一个webapps目录。

1
2
3
4
5
6
7
#ll demo-base/
total 20
drwxr-xr-x 2 root root 4096 Sep  1 14:53 etc
drwxr-xr-x 3 root root 4096 Sep  1 14:53 lib
drwxr-xr-x 2 root root 4096 Sep  1 14:53 resources
drwxr-xr-x 2 root root 4096 Sep  1 14:53 start.d
drwxr-xr-x 5 root root 4096 Sep  1 14:53 webapps


jetty如何部署web应用的

把要部署的工程(war包、工程目录或者xml描述文件放到${JETTY_HOME}的webapps目录下即可;

需要注意的是:

jetty会对webapps目录下的几乎所有war包、目录、xml文件(有一些例外,如隐藏文件和.d结尾的目录等会被忽略)进行自动部署。

如果war包、目录和xml文件同名,则部署的顺序为xml文件 > war包 > 目录 。比如,webapps目录下有:rank.war,rank目录以及rank.xml,其中rank目录为rank.war解压后的目录,rank.xml中引用的是rank.war包或者rank目录,则此时,仅有xml文件被部署,这里成立的前提是同名,如果不同名,但它们是同一个工程,则会导致工程被重复部署,切记!


  • 例如一个包含 WEB-INF/ 子文件夹的example/文件夹做为一个标准的web应用进行部署,否则就按静态资源部署,context路径为/example(访问路径: http://localhost:8080/example/);若文件夹名字为ROOT,则访问路径为/;若文件夹名字末尾为.d则此文件夹被忽略(除非被特殊的配置文件引用)

  • 若一个文件example.war被部署在webapps下,则context路径为example/,如果名字为ROOT则访问路径为/,如果example.war文件和example/文件夹同时存在,只有war文件会被部署(这个文件会被当做一个没有被解压的目录来使用)

  • 一个像example.xml的配置文件,若文件中是标准的配置信息,也会被部署,文件中必须包含context path,如果context path和example.xml同时存在,只有example.xml会被部署。

  如果你有一个标准的web应用,可以直接将其拷贝到webapps文件夹下进行热部署。


看下demo-base/webapps目录下的文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# ls -l webapps/
total 3624
-rw-r--r-- 1 root root  986372 Sep  1 14:53 async-rest.war
drwxr-xr-x 3 root root    4096 Sep  1 14:53 doc
-rw-r--r-- 1 root root     533 Sep  1 14:53 example-moved.xml
-rw-r--r-- 1 root root     341 Sep  1 14:53 README.TXT
drwxr-xr-x 3 root root    4096 Sep  1 14:53 ROOT
drwxr-xr-x 2 root root    4096 Sep  1 14:53  test .d
-rw-r--r-- 1 root root   60716 Sep  1 14:53  test -jaas.war
-rw-r--r-- 1 root root     945 Sep  1 14:53  test -jaas.xml
-rw-r--r-- 1 root root   62949 Sep  1 14:53  test -jndi.war
-rw-r--r-- 1 root root    3430 Sep  1 14:53  test -jndi.xml
-rw-r--r-- 1 root root  517192 Sep  1 14:53  test -spec.war
-rw-r--r-- 1 root root    2456 Sep  1 14:53  test -spec.xml
-rw-r--r-- 1 root root 1012480 Sep  1 14:53  test .war
-rw-r--r-- 1 root root    4623 Sep  1 14:53  test .xml
-rw-r--r-- 1 root root 1018072 Sep  1 14:53 xref-proxy.war

webapps中文件介绍:

1
2
3
4
5
6
7
8
9
10
11
12
13
ROOT/:这个文件夹包含各种静态资源。包含Jetty欢迎页面,默认访问路径为/
test .d:一个包含附加配置文件的文件夹,被 test .xml使用用来为 test .war增加额外的配置
test .xml:一个context配置文件,用来配置和部署 test .war,包含上下文环境和 test .d里面的配置附加的配置信息
test .war:在 test .xml里面配置的示例web程序
async-rest.war:一个异步示例的web应用程序
test -jaas.war:一个使用JAAS身份验证的web应用程序。
test -jaas.xml:用来配置 test -jaas.war的配置文件
test -jndi.war:一个使用JNDI的示例应用
test -jndi.xml:用来配置 test -jndi.war的配置文件
test -spec.war:一个使用注解,ServletContainerInitializers 和Servlet 3.0 /3 .1规范的示例应用
test -spec.xml:用来配置 test -spec.war的配置文件
xref-proxy.war:使用代理的一个示例应用
example-moved.xml:一个演示MovedContextHandler重定向使用的示例应用


总结:

demo-base/webapps目录下有很多同名的war包和xml文件比如:

test.war和test.xml ,test-jaas.war和test-jaas.xml

这两个文件可以看成是一组。jetty部署example.war包时,需要一个同名的example.xml文件,该文件保存war包的配置

一个简单的xml文件内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
< Configure  class = "org.eclipse.jetty.webapp.WebAppContext" >
         < Set  name = "contextPath" >/jenkins</ Set >
         < Set  name = "war" >< SystemProperty  name = "jetty.home"  default = "." />/webapps/jenkins.war</ Set >
         < Get  name = "securityHandler" >
                 < Set  name = "loginService" >
                         < New  class = "org.eclipse.jetty.security.HashLoginService" >
                                 < Set  name = "name" >Jenkins Realm</ Set >
                                 < Set  name = "config" >< SystemProperty  name = "jetty.home"  default = "." />/etc/realm.properties</ Set >
                         </ New >
                 </ Set >
         </ Get >
</ Configure >

contextPath配置的是访问web应用时的路径,上面配置的是/jenkins,所以访问该应用时,路径为

http://localhost:8080/jenkins/


下面以jetty9部署jenkins为例介绍jetty9使用配置

将jenkins.war拷贝到$JETTY_HOME/webapps目录下,创建jenkins.xml文件,配置如上面的文件。启动jetty服务即可。

1
2
3
4
5
# ll
total 63180
-rwxr-xr-x 1 root root 64685923 Sep  1 16:04 jenkins.war
-rw-r--r-- 1 root root      642 Sep  1 16:26 jenkins.xml
-rw-r--r-- 1 root root     1412 Sep  1 14:53 README.TXT









本文转自 曾哥最爱 51CTO博客,原文链接:http://blog.51cto.com/zengestudy/1962026,如需转载请自行联系原作者

目录
相关文章
|
20天前
|
持续交付 jenkins Devops
WPF与DevOps的完美邂逅:从Jenkins配置到自动化部署,全流程解析持续集成与持续交付的最佳实践
【8月更文挑战第31天】WPF与DevOps的结合开启了软件生命周期管理的新篇章。通过Jenkins等CI/CD工具,实现从代码提交到自动构建、测试及部署的全流程自动化。本文详细介绍了如何配置Jenkins来管理WPF项目的构建任务,确保每次代码提交都能触发自动化流程,提升开发效率和代码质量。这一方法不仅简化了开发流程,还加强了团队协作,是WPF开发者拥抱DevOps文化的理想指南。
39 1
|
22天前
|
jenkins 持续交付 网络安全
利用 Jenkins 实现持续集成与持续部署-代码拉取终端的配置
【8月更文挑战第30天】在Jenkins服务器中,git和Gitee是常用的代码拉取终端。Git作为分布式版本控制系统,具备出色的灵活性和可扩展性;而Gitee则在国内网络环境下表现更佳,适合团队协作。Git配置包括安装、设置用户信息及生成SSH密钥等步骤;Gitee配置也类似,需注册账号、创建仓库、配置基本信息并设置远程仓库地址。开发人员提交代码后,可通过Webhook、定时轮询或事件监听等方式触发Jenkins动作,确保持续集成和部署高效运行。正确配置这些触发机制并通过测试验证其有效性至关重要。
44 2
|
18天前
|
jenkins 持续交付 网络安全
利用 Jenkins 实现持续集成与持续部署-代码拉取终端的配置
安装Git、配置用户信息、生成SSH密钥以及在Gitee上创建项目仓库等。
43 0
|
20天前
|
持续交付 jenkins C#
“WPF与DevOps深度融合:从Jenkins配置到自动化部署全流程解析,助你实现持续集成与持续交付的无缝衔接”
【8月更文挑战第31天】本文详细介绍如何在Windows Presentation Foundation(WPF)项目中应用DevOps实践,实现自动化部署与持续集成。通过具体代码示例和步骤指导,介绍选择Jenkins作为CI/CD工具,结合Git进行源码管理,配置构建任务、触发器、环境、构建步骤、测试及部署等环节,显著提升开发效率和代码质量。
37 0
|
21天前
|
负载均衡 jenkins 应用服务中间件
大规模部署下的 Jenkins 高可用性与负载均衡
【8月更文第31天】随着软件开发流程的加速,持续集成/持续交付(CI/CD)工具的重要性日益凸显。Jenkins 作为最受欢迎的 CI/CD 平台之一,为企业提供了强大的自动化构建和部署功能。然而,在大规模部署场景下,单一的 Jenkins 实例可能无法满足高可用性和性能的需求。本文将探讨如何设计和实施 Jenkins 高可用集群,以支持大型组织的需求,并通过负载均衡技术来提高系统的稳定性和响应速度。
61 0
|
21天前
|
jenkins Linux 持续交付
Jenkins 入门与基本配置
【8月更文第31天】Jenkins 是一款开源的持续集成/持续交付(CI/CD)工具,广泛应用于自动化软件的构建、测试和部署流程。对于想要提高开发效率和软件质量的团队而言,Jenkins 提供了一个易于使用的解决方案。本文将详细介绍 Jenkins 的安装过程、初始设置以及如何创建第一个构建任务,帮助初学者快速上手 Jenkins。
25 0
|
23天前
|
Kubernetes jenkins 持续交付
jenkins学习笔记之二十一:k8s部署jenkins及动态slave
jenkins学习笔记之二十一:k8s部署jenkins及动态slave
|
23天前
|
jenkins Java 持续交付
jenkins学习笔记之十九:Docker安装jenkins master及动、静态配置slave
jenkins学习笔记之十九:Docker安装jenkins master及动、静态配置slave
|
23天前
|
jenkins Java Shell
jenkins学习笔记之十三:配置SonarScanner扫描Java项目
jenkins学习笔记之十三:配置SonarScanner扫描Java项目
|
21天前
|
jenkins 持续交付 开发者
自动化部署:使用Jenkins和Docker实现持续集成与交付
【8月更文挑战第31天】本文旨在为读者揭示如何通过Jenkins和Docker实现自动化部署,从而加速软件开发流程。我们将从基础概念讲起,逐步深入到实际操作,确保即使是初学者也能跟上步伐。文章将提供详细的步骤说明和代码示例,帮助读者理解并应用这些工具来优化他们的工作流程。