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目錄結構:
[[email protected] 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服務啟動/停止腳本,主要有以下變量的配置
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運行:
命令方式啟動:
cd $JETTY_HOME java -jar start.jar
這個命令能執行需要$JETTY_HOME下有start.ini文件,改文件中存放的是jetty服務啟動信息
start.ini文件默認配置如下:
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,出現以下報錯頁面
這是因為jetty啟動時,會在$JETTY_HOME/webapps中找war包或者web應用的目錄。而默認情況下$JETTY_HOME/webapps下沒有web應用的war包和文件。所以提示404。
基礎應用的例子:
cd $JETTY_HOME/demo-base/ java -jar $JETTY_HOME/start.jar
訪問http://localhost:8080 此時可以看到一個Jetty的歡迎頁面,頁面上包含幾個簡單的例子,歡迎頁面如下
來看下demo-base目錄中的文件,同樣有一個webapps目錄。
#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目錄下的文件
# 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中文件介紹:
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部署war包時,需要一個同名的xml文件,該文件保存war包的配置
一個簡單的xml文件內容如下:
<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://172.16.42.178:8181/jenkins/
下面以jetty9 部署jenkins為例介紹jetty9使用配置
進入$JETTY_HOME/webapps目錄。將jenkins.war拷貝到該目錄下,創建jenkins.xml文件,配置如上面的文件。啟動jetty服務即可。
# 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
參考鏈接:
https://nkcoder.github.io/2014/06/18/jetty-deploy-help/
http://www.cnblogs.com/yiwangzhibujian/p/5832597.html
本文出自 “zengestudy” 博客,請務必保留此出處http://zengestudy.blog.51cto.com/1702365/1962026
jetty9配置指南及jetty9部署jenkins