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檔案 > 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目錄下的檔案
<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><</code><code>Configure</code> <code>class</code><code>=</code><code>"org.eclipse.jetty.webapp.WebAppContext"</code><code>></code>
<code> </code><code><</code><code>Set</code> <code>name</code><code>=</code><code>"contextPath"</code><code>>/jenkins</</code><code>Set</code><code>></code>
<code> </code><code><</code><code>Set</code> <code>name</code><code>=</code><code>"war"</code><code>><</code><code>SystemProperty</code> <code>name</code><code>=</code><code>"jetty.home"</code> <code>default</code><code>=</code><code>"."</code><code>/>/webapps/jenkins.war</</code><code>Set</code><code>></code>
<code> </code><code><</code><code>Get</code> <code>name</code><code>=</code><code>"securityHandler"</code><code>></code>
<code> </code><code><</code><code>Set</code> <code>name</code><code>=</code><code>"loginService"</code><code>></code>
<code> </code><code><</code><code>New</code> <code>class</code><code>=</code><code>"org.eclipse.jetty.security.HashLoginService"</code><code>></code>
<code> </code><code><</code><code>Set</code> <code>name</code><code>=</code><code>"name"</code><code>>Jenkins Realm</</code><code>Set</code><code>></code>
<code> </code><code><</code><code>Set</code> <code>name</code><code>=</code><code>"config"</code><code>><</code><code>SystemProperty</code> <code>name</code><code>=</code><code>"jetty.home"</code> <code>default</code><code>=</code><code>"."</code><code>/>/etc/realm.properties</</code><code>Set</code><code>></code>
<code> </code><code></</code><code>New</code><code>></code>
<code> </code><code></</code><code>Set</code><code>></code>
<code> </code><code></</code><code>Get</code><code>></code>
<code></</code><code>Configure</code><code>></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,如需轉載請自行聯系原作者