zoukankan      html  css  js  c++  java
  • Jetty配置虚拟目录,实现把web项目发布到自定义目录,指定指定上下文访问;jetty编码修改;Jetty加入Linux service实现开机自启动

    2019-12-31     17:28:38

    一般只需要把Java站点文件夹或*.war文件拷贝到Web Server的webapps文件夹下,即可启动运行该站点,但更多时候,我们并不想拷贝站点,而是希望Web在Server文件夹之外运行,这时就需要配置虚拟目录了。不同的WebServer配置虚拟目录的方式不太一样,这里的配置方法仅针对Tomcat和Jetty.


    1、Tomcat:找到并打开Tomcat目录下的conf/server.xml文件,在Host小节中添加以下配置即可:

    <Context path="/myvpath" debug="0" docBase="d:/myWebtest" reloadable="true">
    </Context> 
    

    当然如果不想修改server.xml文件,也可以把虚拟目录的配置作为单独的文件添加到相应的目录中,server.xml中缺省都会有localhost的配置,那么相应的也存在conf/Catalina/localhost文件夹,在此文件夹下添加一个xml文件,内容为以下即可:

    1 <?xml version='1.0' encoding='utf-8'?>
    2     <Context path="/myapp" docBase="D:/myWebtest"  debug="1"  reloadable="true"   >
    3 </Context>

    path属性配置的是虚拟目录的名称,docBase配置的是站点的真实路径。


    2、Jetty:Jetty的全局配置文件在etc/jetty.xml中,可以直接在此配置文件中设置虚拟目录,但一般不建议这么做,推荐的做法是创建独立的配置文件。在contexts目录下创建新的xml文件,内容如下:

     1 <?xml version="1.0"  encoding="ISO-8859-1"?>
     2     <!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
     3     <Configure class="org.mortbay.jetty.webapp.WebAppContext">
     4     <Set name="configurationClasses">
     5         <Array type="java.lang.String">
     6         <Item>org.mortbay.jetty.webapp.WebInfConfiguration</Item>
     7         <Item>org.mortbay.jetty.plus.webapp.EnvConfiguration</Item>
     8         <Item>org.mortbay.jetty.plus.webapp.Configuration</Item>
     9         <Item>org.mortbay.jetty.webapp.JettyWebXmlConfiguration</Item>
    10         <Item>org.mortbay.jetty.webapp.TagLibConfiguration</Item>
    11         </Array>
    12     </Set>
    13     <Set name="contextPath">/forward</Set>
    14     <Set name="baseResource">
    15         <New class="org.mortbay.resource.ResourceCollection">
    16         <Arg>
    17             <Array type="java.lang.String">
    18                 <Item>D:/jetty-6.1.26/mxci.forward</Item>
    19             </Array>
    20         </Arg>
    21         </New>
    22     </Set>
    23     </Configure>

    项目配置根据自己实际环境进行配置然后启动jetty, 完成。


    ;3、Jetty默认编码修改

    Jetty6.1.21 eclipse插件,默认的编码采用的utf8,非iso-8859-1(tomcat默认是iso-8859-1),从而会引出get请求参数乱码问题。
    jetty与tomcat不同,不是在xml配置文件中修改,可以在Jvm参数中加入:Dorg.mortbay.util.URI.charset=iso8859-1即可~

    完成

    4、Jetty加入Linux service实现开机自启动

    cp -rp jetty.sh /etc/rc.d/init.d/jetty
    chkconfig --add jetty
    chkconfig jetty on

    现在jetty已经被添加了进来。其中0~6分别表示6种Linux运行级别:

    等级0表示:表示关机
    等级1表示:单用户模式
    等级2表示:无网络连接的多用户命令行模式
    等级3表示:有网络连接的多用户命令行模式
    等级4表示:不可用
    等级5表示:带图形界面的多用户模式
    等级6表示:重新启动

    接下来,需要在刚刚在etc/init.d下创建的jetty文件中增加JETTY_HOME的配置

    注意添加到前面

    完成配置后,还需要变更一下文件所属用户为普通用户:

    chown -R wyan:wyan jetty

    现在我们在普通用户下尝试用刚刚创建的service模式启动一下jetty服务:

    service jetty start

    但是当服务器重启之后,加入service的jetty服务会被root用户重启,因此会在root文件夹下重新创建一个rssbus安装路径,为了避免这种情况,我们需要对jetty的user做限制。方法如下:
    进入到etc/init.d/文件夹下编辑jetty文件,在文件中声明如下两行变量:

    JETTY_USER=wyan
    JETTY_START_LOG=$JETTY_HOME/logs/jetty-start.log

    其中JETTY_USER为允许运行jetty服务的用户名;
    由于JETTY_START_LOG的默认路径只有root用户可以访问,所以将记录log的路径重新定义为一个JETTY USER可以访问到的路径,此处选择的是jetty的安装路径下的子文件夹。
    完成如上修改后,重启服务器,会发现被JETTY USER中指定的用户启动了

    问题发现:经过以上配置后启动出现了进程,但实际上jetty报错了,报错如下:

    从日志看出request的日志路径没有指定,解决方式:

    在/etc/rc.d/init.d/jetty文件JETTY_HOME行下边加上一行:

    JETTY_LOGS=$JETTY_HOME/logs

    搞定,这样配置后通过服务启动的jetty才能正常访问

    上边配置在部分机器上不会自动启动jetty服务,就算是版本一样rhel6.9两台机器测试结果也不一样(20200602)

    最后调整jetty.sh启动3行的位置得到解决,具体操作是把以下3行:

    # chkconfig: 2345 16 83
    # description: Jetty 6 webserver
    # processname: jetty

    提前到文件的2,3,4行如下:

    #!/bin/bash  
    # chkconfig: 2345 16 83
    # description: Jetty 6 webserver
    # processname: jetty
    #
    # Startup script for jetty under *nix systems (it works under NT/cygwin too).

    这样就可以解决某些环境下不执行自动启动jetty服务的问题


  • 相关阅读:
    PYTHON压平嵌套列表
    linux下IPTABLES配置详解
    Python面试必须要看的15个问题
    两个实用的Python的装饰器
    Python的16个“坑”
    python实现不可修改的常量
    51nod-1322: 关于树的函数
    51nod-1310: Chandrima and XOR
    51nod-1296: 有限制的排列
    51nod-1277: 字符串中的最大值
  • 原文地址:https://www.cnblogs.com/mxci/p/12125591.html
Copyright © 2011-2022 走看看