jetty服务器的安装和部署、新增到开机启动服务

[html]  view plain copy
 
  1. Jetty的首页地址是http://www.mortbay.org/jetty/,点击Downloads进入下载介绍页面,因为Jetty7以后,托管服务有Eclipse接替,因此jetty6.1以前(包含6.1)继续由Codehaus提供下载服务,在该页面的下方有以下信息:   
  2.       
  3.    
  4.   
  5.    
  6.   
  7. 版本 Java HTTP Servlet JSP Status Notes   
  8. Jetty-8 eclipse 1.6- HTTP/1.1 RFC2616 3.0 2.2 Development Standardized async   
  9. Jetty-7 eclipse 1.5- HTTP/1.1 RFC2616 2.5 2.1 Almost stable org.eclipse.jetty   
  10. Jetty-6.1 1.4-1.6 HTTP/1.1 RFC2616 2.5 2.1 or 2.0 Stable Async SSL, AJP, cometd, testing   
  11. Jetty-6 1.4-1.5 HTTP/1.1 RFC2616 2.5 2.1 or 2.0 Deprecated Continuations, IOC, NIO, dynamic buffers, smaller, faster, better   
  12. Jetty-5.1 1.2-1.5 HTTP/1.1 RFC2616 2.4 2.0 Stable J2EE 1.4 Compliance tested, optimizations, geronimo integration.   
  13. Jetty-5.0 1.2-1.4 HTTP/1.1 RFC2616 2.4 2.0 Deprecated Schema, JettyPlus   
  14. Jetty-4.2 1.2-1.4 HTTP/1.1 RFC2616 2.3+ 1.2 Mature JettyPlus   
  15. Jetty-4.1 1.2-1.4 HTTP/1.1 RFC2616 2.3 1.2 Deprecated JAXP1.1, AJP13(mod_jk)   
  16. Jetty-4.0 1.2 HTTP/1.1 RFC2616 2.3 1.2 Deprecated     
  17. Jetty-3.1 1.2 HTTP/1.1 RFC2068 2.2 1.1 Ancient JMX   
  18. Jetty-3.0 1.2 HTTP/1.1 RFC2068 2.2 1.1 Fossilized     
  19. Jetty-2.4 1.1 HTTP/1.0 RFC1945 2.1 1.0 Legendary     
  20. Jetty-1.0 1.0 HTTP/1.0 RFC1945 - - Mythical     
  21.   
  22.    
  23.   
  24.   
  25.   
  26.    
  27.   
  28.   
  29.   
  30.  本书讨论的Jetty版本是6.1,也是目前使用最多的稳定版本,咱们到http://dist.codehaus.org/jetty/jetty-6.1.22/下载6.1系列最新的6.1.22版本:  
  31.   
  32.   
  33. jetty-6.1.22-src.zip 16-Nov-2009 23:04 5.7M  
  34. jetty-6.1.22.zip 16-Nov-2009 23:10 24M   
  35.   
  36.   
  37.     咱们下载24M大小的jetty-6.1.22.zip文件,另一个文件有5M是由于只包含了Jetty源码和实例源码,jetty-6.1.22.zip文件包包含了 api文档,实例代码、jetty源码、发行Jar文件、各操做系统下的启动脚本和其余部分依赖包。也许你会有疑问,我以前介绍Jetty的时候说Jetty体积很是小,是的没错!Jetty核心文件的大小只有约700K!  
  38.   
  39.   
  40.   
  41.   
  42. 2.2 安装  
  43.     要运行Jetty的首要条件固然是须要安装JDK了,建议使用j2se 1.5以上的版本,关于JDK或者JRE的安装,为了环保这里就再也不花费篇章介绍了,请参考其余网络资料。  
  44.   
  45.       
  46.   
  47.     其实Jetty所谓的安装过程也就是将下载的文件解压到指定的目录,而后根据不一样的操做系统来配置环境变量而已。  
  48.   
  49.   
  50.   
  51.    之后讲解如何从maven源码编译等。  
  52. 2.3 使用java命令启动  
  53.     只要在支持j2se的平台的操做系统下,jetty均可以运行。因此咱们先介绍jetty提供的跨平台的服务启动方式。  
  54.   
  55. 2.3.1 快速启动  
  56.      打开控制台,定位到jetty的安装目录,执行命令:              
  57.            
  58. java -jar start.jar etc/jetty.xml   
  59.   
  60.   
  61.   
  62. 提示:关于如何执行java的jar文件请查找其余资料。  
  63.   
  64.   
  65.     start.jar 后面内容是传递给start.jar的参数,多个参数用空格隔开。  
  66.   
  67.   
  68. 参数内容能够有如下几种:  
  69. --help    查看帮助信息   
  70. --stop    中止服务,下节中会讲到   
  71. --version  查看当前jetty版本信息   
  72. 其余:做为Jetty服务配置文件   
  73.   
  74.   
  75.     咱们看到上条命令指定参数内容为etc/jetty.xml,它实际指向一个服务配置文件,该文件是用来设置jetty服务启动的系统配置信息。好比监听端口,发布某个目录下面的web应用,jndi的配置等等,这些将在后续章节详细描述。固然服务配置文件能够是多个,好比:  
  76.   
  77.   
  78.   
  79. java -jar start.jar etc/jetty.xml etc/jetty-plus.xml   
  80.   
  81.   
  82.   
  83.    这条命令就指定了两个服务配置文件,etc/jetty.xml和etc/jetty-plus.xml。  
  84.   
  85.   
  86.     在后续的章节中术语“服务配置文件”就是指的这些文件。  
  87.      
  88.     使用浏览器打开地址 http://localhost:8080/ ,你将会看到jetty的默认示例站点。  
  89.   
  90.   
  91.   
  92. 2.3.2 中止服务  
  93.     在刚才启动jetty的终端窗口里面按住ctrl-c键便可。  
  94.   
  95.   
  96.   
  97.     不过你能够这样来启动  
  98.   
  99.   
  100.   
  101. java -DSTOP.PORT=8009 -DSTOP.KEY=secret -jar start.jar  
  102.    
  103.   
  104.        
  105.   
  106.     jetty启动后会在本地监听你指定的端口8009,并将在验证下次关闭命令的密码secret。如今再经过命令:  
  107.   
  108.   
  109. java -DSTOP.PORT=8009 -DSTOP.KEY=secret -jar start.jar --stop    
  110.   
  111.   
  112.   
  113.     就能够在本机的另一个终端窗口来中止jetty服务。在linux系统中,你能够先将jetty进程转移到后台执行,而后再经过命令行来中止Jetty服务。  
  114.   
  115.   
  116.     哦,看了上面的介绍你或许觉得jetty启动和关闭是如此麻烦,一点也不符合Jetty小巧玲珑的气质。其实Jetty为咱们准备了各个操做系统中快捷的方式。不过记住无论何种方式最终都是经过start.jar来启动jetty服务的。  
  117.   
  118.   
  119. 2.3.3 start.jar深刻探讨  
  120.      初学者能够先跳过本节。本节讨论start.jar模块的做用和细节。start.jar让jetty各个不一样的组件联合起来工做,使得jetty看上去像一个服务器软件,同时start.jar也不过是jetty的其中一个组件而已。了解start.jar工做原理后,咱们就能够知道#jetty_home/lib下面那么多文件夹下面的jar文件是如何配被选择性地加入到classpath中去的。  
  121.   
  122.   
  123.     Jetty start 组件提供了跨平台的启动方式。 经过启动命令 java -DDEBUG=true -jar start.jar [jetty.xml ... ] 能够看到启动过程的debug日志信息。  
  124.   
  125.   
  126.     看看Jetty start 在启动过程当中都作了哪些操做:  
  127.   
  128.           
  129.   
  130. 自动设置正确的 jetty home目录   
  131. 根据JDK版本配置classpath,好比jdk1.5版本以前的版本只能使用jsp2.0规范所需的jar包   
  132. 根据设定的classpath,构建好一个类加载器。再根据设定的main class来调用指定main class的main方法   
  133.     因而可知start组件是至关独立的组件,甚至咱们能够在本身的项目里面单独使用该组件控制程序的启动。  
  134.   
  135.   
  136.   
  137.     start.config语法  
  138.     Jetty start是由一个名叫start.config的配置文件控制的,这个文件存在在start.jar里面,路径是org/mortbay/start/start.config。熟悉这个配置文件的内容会对jetty做为服务器的启动过程有更好的了解。最重要的是咱们知道jetty的classpath的设置和如何经过设置系统变量来把外部类路径增长到jetty中。  
  139.   
  140.   
  141.     start.config的格式是每一行一条指令,若是以#开头则为注解行。指令的后面是执行条件,若是条件不符合则忽略。  
  142.   
  143.     指令有以下几种状况:  
  144.   
  145. 以.path结尾: 若是.path前面的字符串存在且长度大于0,则将该类路径加入到系统类路径中   
  146. 包含 “=”  :   执行System.setProperty(property,value)调用,“=”左边为property,右边为value   
  147. 以.class结尾:若是".class"前面有值的话,就设定为Main class   
  148. 以.xml结尾:  若是指定的xml文件存在的话就做为jetty服务的启动配置文件之一   
  149. 以/*结尾:    指定目录下面的因此jar或者zip文件,被加入到classpath中   
  150. 以/**结尾:  指定递归该目录下面的因此jar或者zip文件,被加入到classpath中   
  151. 以/结尾:     指定的目录做为classpath的一部分   
  152. 其余:         做为一个文件加入到classpath中   
  153.     关于条件:  
  154. "<",">"," <=",">=","==","!=" 是条件的比较操做符,从左到右执行   
  155. exists 检测紧跟着后面的文件是否存在   
  156. available 检测紧跟着后面的class是否存在   
  157. !表示非;always表示true   
  158. 变量nargs表示传递给start.jar的参数数量   
  159. 变量java表示java版本   
  160.     其余规则:  
  161. 全部的指令按行从上到下执行   
  162. 若是一个文件或者目录因为条件被否决,没有被加入到类路径中,那么即便后续指令中包含了该文件或者目录,那么一样不会被加入到类路径中   
  163. 指令或者条件中, $(...) 表示获取系统属性,即一次System.getProperty()调用。如$(jetty.class.path).path指令,当系统属性“jetty.class.path”没有设置,那么运行时实际指令的值位 “.path”。若是设置系统属性“jetty.class.path”的值为"/usr/local/jarlib",那么运行时实际指令值为 "/usr/local/jarlib.path"   
  164.   
  165.   
  166. start.config文件  
  167. $(jetty.class.path).path                         always  
  168. $(jetty.lib)/**                                  exists $(jetty.lib)  
  169.   
  170.   
  171.   
  172.   
  173. # Try different settings of jetty.home until the jetty.jar is found.  
  174. jetty.home=.                                     ! exists $(jetty.home)/start.jar   
  175. jetty.home=..                                    ! exists $(jetty.home)/start.jar  
  176. jetty.home=/home/jetty                           ! exists $(jetty.home)/start.jar  
  177. jetty.home=/C:/jetty                             ! exists $(jetty.home)/start.jar  
  178. jetty.home=.                                     ! exists $(jetty.home)/start.jar   
  179.   
  180.   
  181. # The main class to run  
  182. org.mortbay.xml.XmlConfiguration.class  
  183. $(start.class).class  
  184.   
  185.   
  186. # The default configuration files  
  187. $(jetty.home)/etc/jetty.xml                      nargs == 0  
  188.   
  189.   
  190. # Set the jetty classpath  
  191. $(jetty.home)/lib/*                              always  
  192.   
  193.   
  194. # Set the classpath for the supporting cast                 
  195. $(jetty.home)/lib/jsp-2.1/*                      java >= 1.5     
  196. $(jetty.home)/lib/jsp-2.0/*                      ! available org.apache.jasper.servlet.JspServlet                 
  197. $(jetty.home)/lib/management/*         
  198. $(jetty.home)/lib/management/mx4j/*              java 1.5             
  199. $(jetty.home)/lib/naming/*                                
  200. $(jetty.home)/lib/plus/*                               
  201. $(jetty.home)/lib/xbean/*                               
  202. $(jetty.home)/lib/wadi/*                               
  203. $(jetty.home)/lib/grizzly/*                               
  204. $(jetty.home)/lib/annotations/*                  java >= 1.5                              
  205.   
  206.   
  207. $(jetty.home)/lib/jre1.5/**                      java >= 1.5  
  208.   
  209.   
  210. # Recursively add all jars and zips from the ext lib  
  211. $(jetty.home)/lib/ext/**                        always  
  212.   
  213.   
  214. # Try some standard locations for anything missing.  
  215. /usr/share/java/ant.jar                          ! available org.apache.tools.ant.Main  
  216.   
  217.   
  218. # Add a resources directory if it is there  
  219. $(jetty.home)/resources/   
  220.   
  221.   
  222.   
  223.       
  224.   
  225. 2.4咱们能够学到什么  
  226.   
  227.   
  228.   
  229.   
  230. 2.5 Windows系统下启动和关闭控制  
  231.       
  232.     jetty利用Win32Wrapper工具(http://wrapper.tanukisoftware.org)使得在window系统上能够以控制台或者Window服务的方式运行jetty程序,使用起来很是方便。  
  233.      
  234.   
  235.     在 $jetty_home/bin目录下有以下几个相关文件:Jetty-Service.exe , jetty-service.conf。双击Jetty-Service.exe 文件,便可以控制台的方式来运行jetty了。jetty-service.conf 显然是配置文件了,一会详细介绍。  
  236.   
  237.   
  238.      (之后咱们用 $jetty_home来表示Jetty的安装目录)  
  239.   
  240.       
  241.   
  242.   注册Windows服务  
  243.         打开命令行,转到 $jetty_home/bin 目录,执行命令:  
  244.   
  245.           
  246.   
  247.         E:\jetty-6.1.22\bin>Jetty-Service.exe --install jetty-service.conf  
  248.         wrapper  | Jetty6-Service installed.  
  249.   
  250.   
  251.   启动服务  
  252.         执行命令: Jetty-Service.exe --start jetty-service.conf   
  253.   中止服务  
  254.          执行命令:Jetty-Service.exe --stop jetty-service.conf   
  255.   注销服务  
  256.          执行命令:Jetty-Service.exe --remove jetty-service.conf   
  257.   
  258.   
  259.       
  260.   
  261.     你在成功注册Windows服务后,能够修改服务让其随系统自动启动。  
  262.   
  263.   
  264.   
  265. jetty-service.conf 配置文件  
  266. wrapper.java.classpath.1=../lib/win32/*.jar                 
  267.   
  268. wrapper.java.classpath.2=../lib/*.jar  
  269. wrapper.java.classpath.3=../start.jar  
  270. wrapper.java.library.path.1=../lib/win32/  
  271. #wrapper.java.additional.n能够设置jvm参数  
  272. wrapper.java.additional.1=-Djetty.home=../           #设置系统属性jetty.home,指定jetty根目录  
  273. wrapper.java.additional.2=-Djetty.logs=../logs        #设置系统属性jetty.logs  
  274. wrapper.java.initmemory=3                                 #jvm初始内存大小  
  275. wrapper.java.maxmemory=64                              #jvm内存大小  
  276. wrapper.java.mainclass=org.mortbay.jetty.win32service.JettyServiceWrapperListener  
  277. #wrapper.app.parameter.n能够设置应用程序参数,及 -jar start.jar 后面的参数  
  278. #例如 wrapper.app.parameter.1=../etc/jetty.xml ../etc/jetty-ajp.xml  
  279. wrapper.app.parameter.1=../etc/jetty.xml  
  280. wrapper.console.format=PM  
  281. wrapper.console.loglevel=INFO  
  282. wrapper.logfile=../logs/jetty-service.log          #输出到System.out到内容将同时被记录在该文件  
  283. wrapper.logfile.format=LPTM  
  284. wrapper.logfile.loglevel=INFO  
  285. wrapper.logfile.maxsize=0                          #jetty-service.log文件的最大尺寸,0表示不限制  
  286. wrapper.logfile.maxfiles=0                          #当限制文件大小时,容许存在的最多文件个数  
  287. wrapper.syslog.loglevel=NONE  
  288. wrapper.ntservice.name=Jetty  
  289. wrapper.ntservice.displayname=Jetty6-Service  
  290. wrapper.ntservice.description=Jetty is an open-source, standards-based, full-featured web server implemented entirely in java  
  291. wrapper.ntservice.starttype=AUTO_START  
  292. wrapper.ntservice.interactive=false  
  293.   
  294.   
  295. #Win32Wrapper中定义一个触发器,当控制抛出OutOfMemoryError错误,则重启Jetty服务  
  296. wrapper.filter.trigger.1=java.lang.OutOfMemoryError    
  297. wrapper.filter.action.1=RESTART  
  298.   
  299.   
  300. 2.6 Linux系统下启动和关闭控制  
  301.      在$jetty_home/bin目录下,Jetty为咱们提供了一个名为jetty.sh的shell脚本文件,在linux环境下咱们用这命令 ./jetty.sh start 和 .jetty.sh stop 命令来启动和关闭jetty。jetty.sh在启动Jetty后,将jvm的系统进程ID保存在一个$JETTY_RUN/jetty.pid的文件里面,而后在收到stop命令后读取pid来关闭相应进程。  
  302.   
  303.      在jetty.sh里面还能够定制变量来控制jetty,如指定JAVA_HOME目录、指定jvm最大内存、指定pid文件的位置等。  
  304.   
  305. 2.6.1 系统变量的设置  
  306. 提示:在编辑变量的时候“=”两边千万不要有空格。  
  307.   
  308.   
  309. 下面逐个介绍各变量的做用:  
  310.   
  311.   
  312.   
  313. JAVA_HOME      
  314.     指定Java安装目录。当你须要指定特定位置的jdk或者jetty搜索不到java安装目录时,须要设定该变量。  
  315.   
  316. 例如:    JAVA_HOME=/usr/local/java/jdk1.5.0_10/  
  317.   
  318.   
  319. JAVA  
  320.      执行java命令。默认值为 $JAVA_HOME/bin/java。通常不须要设置。  
  321.   
  322.   
  323.   
  324. JAVA_OPTIONS  
  325.     JVM的可选参数。你能够利用这个选项配置内存大小、系统变量等等其余参数,这个变量很是有用。  
  326.   
  327.   
  328.   
  329. 例如:JAVA_OPTIONS="-Xmn128M -Xms256M -Xmx1024M   
  330. -Djava.nio.channels.spi.SelectorProvider=sun.nio.ch.EPollSelectorProvider"  
  331.   
  332.   
  333. JETTY_RUN  
  334.     jetty.pid文件的存放目录。默认值为 /var/run, /usr/var/run  或 /tmp 三者之一。若是你须要在一台服务器上启动多个安装目录下的jetty,那么必须设定该变量以免共享同一pid文件而形成冲突。建议设置为各个安装目录下面新建的run目录。  
  335.   
  336.   
  337.   
  338. JETTY_PID  
  339.     pid文件的路径。默认值 $JETTY_RUN/jetty.pid。通常不须要设置。  
  340.   
  341.   
  342.   
  343. JETTY_ARGS  
  344.     传递给jetty的参数。值 java -jar start.jar 后面的部分。  
  345.   
  346.   
  347.   
  348. JETTY_HOME  
  349.     jetty安装目录。虽然jetty尝试搜索jetty安装目录,可是咱们仍是建议设定该变量。  
  350.   
  351. 例如:  
  352.     JETTY_HOME=/usr/local/jetty-6.1.22  
  353.   
  354.   
  355.     在启动java时增长jvm 参数 “-Djetty.home=$JETTY_HOME” 。因此在Linux环境下,start.jar的自动搜索jetty_home的动做会被取消。  
  356.   
  357.   
  358.   
  359. JETTY_USER  
  360.     如设定该值,那么将以该用户的身份启动jetty  
  361.   
  362.   
  363.   
  364. JETTY_PORT  
  365.     jetty服务器监听端口。若是设定该值,那么在启动java时增长jvm 参数 “-Djetty.port=$JETTY_PORT” 。  
  366.     在jetty启动配置文件里,<Set name="Port"><SystemProperty name="jetty.port" default="8080"/></Set>这个语句将会使用咱们这里指定的端口值。  
  367.   
  368.   
  369. 2.6.2 命令参数  
  370.     系统控制台中,跳转到 $jetty_home/bin目录下,输入“  ./jetty.sh start”,其中start为命令参数,如今介绍几个经常使用命令参数  
  371.   
  372.       
  373.   
  374. start      
  375.     启动jetty服务  
  376.   
  377.    
  378.   
  379. stop      
  380.     中止jetty服务  
  381.   
  382. restart   
  383.     重启jetty服务  
  384. supervise      
  385.   
  386.    
  387.   
  388.     挂起服务  
  389.   
  390.   
  391.   
  392. check     
  393.   
  394.   
  395.      显示当前jetty实例运行时所使用的变量参数,能够用来查看变量是否设置正确。  
  396. 显示结果实例:  
  397. node-189 bin # ./jetty.sh check  
  398. Checking arguments to Jetty:  
  399. JETTY_HOME     =  /usr/local/jetty-6.1.15  
  400. JETTY_CONF     =  
  401. JETTY_RUN      =  /var/run  
  402. JETTY_PID      =  /var/run/jetty.pid  
  403. JETTY_PORT     =  
  404. JETTY_LOGS     =  
  405. CONFIGS        =  /usr/local/jetty-6.1.15/etc/jetty-logging.xml /usr/local/jetty-6.1.15/etc/jetty.xml  
  406. JAVA_OPTIONS   =   -Djetty.home=/usr/local/jetty-6.1.15 -Djava.io.tmpdir=/tmp  
  407. JAVA           =  /usr/local/java/jdk1.5.0_10/bin/java  
  408. CLASSPATH      =  /usr/local/java/jdk1.5.0_10/lib:/usr/local/java/jdk1.5.0_10/jre/lib  
  409. RUN_CMD        =  /usr/local/java/jdk1.5.0_10/bin/java  -Djetty.home=/usr/local/jetty-6.1.15 -Djava.io.tmpdir=/tmp -jar /usr/local/jetty-6.1.15/start.jar  /usr/local/jetty-6.1.15/etc/jetty-logging.xml /usr/local/jetty-6.1.15/etc/jetty.xml  
  410.   
  411.   
  412. Jetty running pid=24573  
  413.   
  414.   
  415.   
  416.   
  417. 2.6.3 相关配置文件  
  418.   
  419.   
  420. /etc/jetty.conf  
  421.     若是该文件存在,那么该文件的内容会被解析用来设定jetty 启动配置文件(configurations),规则以下:  
  422.   
  423.   
  424.   
  425. 以“#”开头:该行内容做为注解   
  426. 指向一个文件的路径:若是该文件存在则做为jetty启动的一个启动配置文件   
  427. 指向一个目录的路径:若是该目录存在,则目录下的全部.xml的文件会被做为启动配置文件   
  428.    
  429.   
  430.     若是不存在该文件,jetty.sh将会使用默认值 :  
  431.   
  432. “ ${JETTY_HOME}/etc/jetty-logging.xml ${JETTY_HOME}/etc/jetty.xml ”  
  433.   
  434.   
  435.   
  436. /etc/default/jetty 、/etc/default/jetty6 和 $HOME/.jettyrc  
  437.     若任何一个文件存在,那么jetty.sh文件执行时都会执行它。咱们能够在这些文件中配置系统变量。  
相关文章
相关标签/搜索