天天看點

jetty9配置指南及jetty9部署jenkins

jetty下載下傳位址:

<a href="https://www.eclipse.org/jetty/download.html" target="_blank">https://www.eclipse.org/jetty/download.html</a>

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

<code>[root@localhost jetty01]</code><code># ll</code>

<code>total 712</code>

<code>drwxr-xr-x  2 root root   4096 Sep  1 14:59 bin</code>

<code>drwxr-xr-x  7 root root   4096 Sep  1 14:53 demo-base</code>

<code>drwxr-xr-x  3 root root   4096 Sep  1 14:53 etc</code>

<code>-rw-r--r--  1 root root    198 Sep  1 16:19 jetty01.state</code>

<code>drwxr-xr-x 13 root root   4096 Sep  1 14:53 lib</code>

<code>-rw-r--r--  1 root root  30012 Sep  1 14:53 license-eplv10-aslv20.html</code>

<code>drwxr-xr-x  2 root root   4096 Sep  1 14:53 logs</code>

<code>drwxr-xr-x 19 root root   4096 Sep  1 14:53 modules</code>

<code>-rw-r--r--  1 root root   6262 Sep  1 14:53 notice.html</code>

<code>-rw-r--r--  1 root root   1637 Sep  1 14:53 README.TXT</code>

<code>drwxr-xr-x  2 root root   4096 Sep  1 14:53 resources</code>

<code>-rw-r--r--  1 root root   5702 Sep  1 14:53 start.ini</code>

<code>-rw-r--r--  1 root root 147725 Sep  1 14:53 start.jar</code>

<code>-rw-r--r--  1 root root 483631 Sep  1 14:53 VERSION.txt</code>

<code>drwxr-xr-x  2 root root   4096 Sep  1 16:36 webapps</code>

目錄、檔案簡介

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服務啟動/停止腳本,主要有以下變量的配置

<code>JAVA: 設定java指令的絕對路徑,即jdk的bin目錄下的java指令的路徑,如果沒設定,則從PATH環境變量中查找;</code>

<code>JAVA_OPTIONS:設定jvm參數;</code>

<code>JETTY_HOME:jetty的安裝目錄,如果沒有設定,則從調用該腳本的上下文環境中猜測;</code>

<code>JETTY_BASE:jetty的base目錄,即目前工程使用的jetty環境的根目錄,如果沒有設定,則與JETTY_HOME相同;</code>

<code>JETTY_RUN:配置儲存jetty pid檔案的路徑,如果沒有配置,根據以下順序查找第一個可用目錄:</code><code>/var/run</code><code>, </code><code>/usr/var/run</code><code>, JETTY_BASE, </code><code>/tmp</code><code>;</code>

<code>JETTY_PID:pid檔案路徑,預設為:$JETTY_RUN/$NAME.pid(NAME變量表示啟動jetty時,去掉擴充名的腳本名稱);</code>

<code>JETTY_ARGS:jetty參數,如配置端口号等:JETTY_ARGS=8080 jetty.spdy.port=8443</code>

<code>JETTY_USER:配置啟動使用者,如以nkcoder使用者啟動:JETTY_USER=nkcoder</code>

jetty運作:

指令方式啟動:

<code>cd</code> <code>$JETTY_HOME</code>

<code>java -jar start.jar</code>

這個指令能執行需要$JETTY_HOME下有start.ini檔案,改檔案中存放的是jetty服務啟動資訊

start.ini檔案預設配置如下:

<code> </code><code>cat</code> <code>start.ini | </code><code>egrep</code> <code>-</code><code>v</code> <code>"^#|^$"</code>

<code>--module=home-base-warning</code>

<code>--module=ext</code>

<code>--module=server</code>

<code>--module=jsp</code>

<code>--module=resources</code>

<code>--module=deploy</code>

<code>--module=jstl</code>

<code>--module=websocket</code>

<code>--module=http</code>

這是因為jetty啟動時,會在$JETTY_HOME/webapps中找war包或者web應用的目錄。而預設情況下$JETTY_HOME/webapps下沒有web應用的war包和檔案。是以提示404。

基礎應用的例子:

<code>cd</code> <code>$JETTY_HOME</code><code>/demo-base/</code>

<code>java -jar $JETTY_HOME</code><code>/start</code><code>.jar</code>

來看下demo-base目錄中的檔案,同樣有一個webapps目錄。

<code>#ll demo-base/</code>

<code>total 20</code>

<code>drwxr-xr-x 2 root root 4096 Sep  1 14:53 etc</code>

<code>drwxr-xr-x 3 root root 4096 Sep  1 14:53 lib</code>

<code>drwxr-xr-x 2 root root 4096 Sep  1 14:53 resources</code>

<code>drwxr-xr-x 2 root root 4096 Sep  1 14:53 start.d</code>

<code>drwxr-xr-x 5 root root 4096 Sep  1 14:53 webapps</code>

jetty如何部署web應用的

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

需要注意的是:

jetty會對webapps目錄下的幾乎所有war包、目錄、xml檔案(有一些例外,如隐藏檔案和.d結尾的目錄等會被忽略)進行自動部署。

如果war包、目錄和xml檔案同名,則部署的順序為xml檔案 &gt; war包 &gt; 目錄 。比如,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目錄下的檔案

<code># ls -l webapps/</code>

<code>total 3624</code>

<code>-rw-r--r-- 1 root root  986372 Sep  1 14:53 async-rest.war</code>

<code>drwxr-xr-x 3 root root    4096 Sep  1 14:53 doc</code>

<code>-rw-r--r-- 1 root root     533 Sep  1 14:53 example-moved.xml</code>

<code>-rw-r--r-- 1 root root     341 Sep  1 14:53 README.TXT</code>

<code>drwxr-xr-x 3 root root    4096 Sep  1 14:53 ROOT</code>

<code>drwxr-xr-x 2 root root    4096 Sep  1 14:53 </code><code>test</code><code>.d</code>

<code>-rw-r--r-- 1 root root   60716 Sep  1 14:53 </code><code>test</code><code>-jaas.war</code>

<code>-rw-r--r-- 1 root root     945 Sep  1 14:53 </code><code>test</code><code>-jaas.xml</code>

<code>-rw-r--r-- 1 root root   62949 Sep  1 14:53 </code><code>test</code><code>-jndi.war</code>

<code>-rw-r--r-- 1 root root    3430 Sep  1 14:53 </code><code>test</code><code>-jndi.xml</code>

<code>-rw-r--r-- 1 root root  517192 Sep  1 14:53 </code><code>test</code><code>-spec.war</code>

<code>-rw-r--r-- 1 root root    2456 Sep  1 14:53 </code><code>test</code><code>-spec.xml</code>

<code>-rw-r--r-- 1 root root 1012480 Sep  1 14:53 </code><code>test</code><code>.war</code>

<code>-rw-r--r-- 1 root root    4623 Sep  1 14:53 </code><code>test</code><code>.xml</code>

<code>-rw-r--r-- 1 root root 1018072 Sep  1 14:53 xref-proxy.war</code>

webapps中檔案介紹:

<code>ROOT/:這個檔案夾包含各種靜态資源。包含Jetty歡迎頁面,預設通路路徑為/</code>

<code>test</code><code>.d:一個包含附加配置檔案的檔案夾,被</code><code>test</code><code>.xml使用用來為</code><code>test</code><code>.war增加額外的配置</code>

<code>test</code><code>.xml:一個context配置檔案,用來配置和部署</code><code>test</code><code>.war,包含上下文環境和</code><code>test</code><code>.d裡面的配置附加的配置資訊</code>

<code>test</code><code>.war:在</code><code>test</code><code>.xml裡面配置的示例web程式</code>

<code>async-rest.war:一個異步示例的web應用程式</code>

<code>test</code><code>-jaas.war:一個使用JAAS身份驗證的web應用程式。</code>

<code>test</code><code>-jaas.xml:用來配置</code><code>test</code><code>-jaas.war的配置檔案</code>

<code>test</code><code>-jndi.war:一個使用JNDI的示例應用</code>

<code>test</code><code>-jndi.xml:用來配置</code><code>test</code><code>-jndi.war的配置檔案</code>

<code>test</code><code>-spec.war:一個使用注解,ServletContainerInitializers 和Servlet 3.0</code><code>/3</code><code>.1規範的示例應用</code>

<code>test</code><code>-spec.xml:用來配置</code><code>test</code><code>-spec.war的配置檔案</code>

<code>xref-proxy.war:使用代理的一個示例應用</code>

<code>example-moved.xml:一個示範MovedContextHandler重定向使用的示例應用</code>

總結:

demo-base/webapps目錄下有很多同名的war包和xml檔案比如:

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

這兩個檔案可以看成是一組。jetty部署example.war包時,需要一個同名的example.xml檔案,該檔案儲存war包的配置

一個簡單的xml檔案内容如下:

<code>&lt;</code><code>Configure</code> <code>class</code><code>=</code><code>"org.eclipse.jetty.webapp.WebAppContext"</code><code>&gt;</code>

<code>        </code><code>&lt;</code><code>Set</code> <code>name</code><code>=</code><code>"contextPath"</code><code>&gt;/jenkins&lt;/</code><code>Set</code><code>&gt;</code>

<code>        </code><code>&lt;</code><code>Set</code> <code>name</code><code>=</code><code>"war"</code><code>&gt;&lt;</code><code>SystemProperty</code> <code>name</code><code>=</code><code>"jetty.home"</code> <code>default</code><code>=</code><code>"."</code><code>/&gt;/webapps/jenkins.war&lt;/</code><code>Set</code><code>&gt;</code>

<code>        </code><code>&lt;</code><code>Get</code> <code>name</code><code>=</code><code>"securityHandler"</code><code>&gt;</code>

<code>                </code><code>&lt;</code><code>Set</code> <code>name</code><code>=</code><code>"loginService"</code><code>&gt;</code>

<code>                        </code><code>&lt;</code><code>New</code> <code>class</code><code>=</code><code>"org.eclipse.jetty.security.HashLoginService"</code><code>&gt;</code>

<code>                                </code><code>&lt;</code><code>Set</code> <code>name</code><code>=</code><code>"name"</code><code>&gt;Jenkins Realm&lt;/</code><code>Set</code><code>&gt;</code>

<code>                                </code><code>&lt;</code><code>Set</code> <code>name</code><code>=</code><code>"config"</code><code>&gt;&lt;</code><code>SystemProperty</code> <code>name</code><code>=</code><code>"jetty.home"</code> <code>default</code><code>=</code><code>"."</code><code>/&gt;/etc/realm.properties&lt;/</code><code>Set</code><code>&gt;</code>

<code>                        </code><code>&lt;/</code><code>New</code><code>&gt;</code>

<code>                </code><code>&lt;/</code><code>Set</code><code>&gt;</code>

<code>        </code><code>&lt;/</code><code>Get</code><code>&gt;</code>

<code>&lt;/</code><code>Configure</code><code>&gt;</code>

contextPath配置的是通路web應用時的路徑,上面配置的是/jenkins,是以通路該應用時,路徑為

<a href="http://172.16.42.178:8181/jenkins/" target="_blank">http://localhost:8080/jenkins/</a>

下面以jetty9部署jenkins為例介紹jetty9使用配置

将jenkins.war拷貝到$JETTY_HOME/webapps目錄下,建立jenkins.xml檔案,配置如上面的檔案。啟動jetty服務即可。

<code># ll</code>

<code>total 63180</code>

<code>-rwxr-xr-x 1 root root 64685923 Sep  1 16:04 jenkins.war</code>

<code>-rw-r--r-- 1 root root      642 Sep  1 16:26 jenkins.xml</code>

<code>-rw-r--r-- 1 root root     1412 Sep  1 14:53 README.TXT</code>

本文轉自 曾哥最愛 51CTO部落格,原文連結:http://blog.51cto.com/zengestudy/1962026,如需轉載請自行聯系原作者