【问题标题】:Cleaning up Jetty - Removing 'unnecessaries' things清理码头 - 移除“不必要”的东西
【发布时间】:2011-08-25 03:00:59
【问题描述】:

我习惯于使用Jetty 作为我的网络容器。

我在安装步骤中所做的是获取原始 tar 球并从中清理一些目录和文件

我想在这里提出的是:

您用于从 Jetty 中删除什么以用于生产/暂存环境?

我对默认码头包的更改:

  • 删除
    • README.txt
    • pom.xml
    • javadoc/
    • 例子/
    • /webapps/test*
    • /contexts/test*
    • /项目网站
    • /resources/log4j.properties
  • 创建
    • 工作/

问题:

  • 我没有违反任何许可权?
  • 这样做会给我的系统(性能/稳定性)带来任何缺点吗?
  • 还有人在码头上定制更多的东西吗?
  • 评论?
  • 有问题吗?
  • 提示?

相关帖子:

【问题讨论】:

    标签: java jetty


    【解决方案1】:

    我没有违反任何许可吗?

    正确。

    这样做会给我的系统(性能/稳定性)带来任何缺点吗?

    唯一的缺点是 Log4J 属性文件对于控制执行多少(或多少)日志记录很有用。完全禁用日志记录会导致更小的日志文件,从而节省磁盘空间。 (不应该是 TB 驱动器的问题。)如果找不到日志记录属性文件,应用程序可能默认为 DEBUGINFO 级别,而不是 ERROR 级别。因此,Log4J 有助于告诉所有应用程序只记录关键信息。

    消除无关示例(测试套件)通过暴露更少的系统信息来加强安全性。它还可以节省一点内存,因为测试 webapps 无法加载到内存中。

    有人在码头上定制更多吗?

    您可以按如下方式清理webapps目录:

    cd /opt/jetty
    rm -rf webapps
    mkdir -p webapps/root
    echo "<html><body></body></html>" > webapps/root/index.html
    

    重启码头。

    【讨论】:

    • 感谢您的评论!我在想这个帖子可能有很多cmets!我习惯清理码头!干杯!
    【解决方案2】:

    这是清理 Jetty (9.1.5) 的一种方法。

    tar -xzvf jetty-distribution-9.1.5.v20140505.tar.gz
    # can rename 'jetty-distribution-9.1.5.v20140505' to 'jetty-9.1.5' or similar
    cd jetty-distribution-9.1.5.v20140505
    rm -rf VERSION.txt license-eplv10-aslv20.html notice.html start.d/jsp.ini resources/log4j.properties demo-base/
    find -name README.TXT | xargs rm -fv
    
    mv etc etc.bak              # keep a backup of etc/ and modules/, take whats necessary
    mv modules modules.bak
    mkdir etc modules work
    mv modules.bak/.donotdelete modules.bak/deploy.mod modules.bak/ext.mod modules.bak/http.mod \
        modules.bak/logging.mod modules.bak/resources.mod modules.bak/security.mod modules.bak/server.mod modules.bak/servlet* \
        modules.bak/webapp.mod modules/
    mv $(grep -h --color=none "etc.*.xml" modules/* | sed 's/etc/etc\.bak/g') etc/
    mv etc.bak/jetty-started.xml etc.bak/jetty.conf etc/        # required for bin/jetty.sh
    mv etc.bak/webdefault.xml etc/                              # required for web applications
                                                                # provides default deployment descriptor config for all apps
    # rm -rf modules.bak/ etc.bak/                              # remove if not needed
    
    sed -i '/^#/d; /^\s*$/d' start.ini start.d/http.ini         # clean if needed
    
    vi start.ini start.d/http.ini                               # check and modify if needed
        start.ini: 'jetty.send.server.version=false', remove '--module=websocket'
        http.ini: 'jetty.port=9999'
    vi modules/<whatever.mod>                                   # check and modify if needed
    vi etc/jetty.xml # to prevent Jetty from showing context related information
        remove
            <Item>
                <New id="DefaultHandler" class="org.eclipse.jetty.server.handler.DefaultHandler"/>
            </Item>
    vi etc/jetty-logging.xml # suffix date with '-', instead of prefixing with '_'
        change
            <Arg><Property name="jetty.logs" default="./logs"/>/yyyy_mm_dd.stderrout.log</Arg>
            ...
            <Get id="ServerLogName" name="datedFilename"/>
        to
            <Arg><Property name="jetty.logs" default="./logs"/>/stderrout.log.yyyy_mm_dd</Arg>
            ...
            <Arg type="java.lang.String">yyyy-MM-dd</Arg>
            <Arg type="java.lang.String">HHmmssSSS</Arg>
            <Get id="ServerLogName" name="datedFilename"/>
    vi etc/webdefault.xml # disable jsp support and modify other default settings
        remove or comment out <servlet> and <servlet-mapping> of JSP Servlet
        remove or comment out index.jsp from <welcome-file-list>
        set dirAllowed to false in default servlet
    vi bin/jetty.sh # use $JETTY_BASE/logs instead of $JETTY_BASE as working directory
        change
            JETTY_RUN=$(findDirectory -w /var/run /usr/var/run $JETTY_BASE /tmp)
            JETTY_STATE=$JETTY_BASE/${NAME}.state
        to
            JETTY_RUN=$(findDirectory -w /var/run /usr/var/run $JETTY_BASE/logs $JETTY_BASE /tmp)
            JETTY_STATE=$JETTY_RUN/${NAME}.state
    vi bin/jetty.sh # use $JETTY_HOME/work as default TMPDIR
        move following 
            TMPDIR=${TMPDIR:-/tmp}
        below 'JETTY_HOME=$PWD' and change
            TMPDIR=${TMPDIR:-"$JETTY_HOME"/work}
    

    以及由此产生的结构。

    jetty-distribution-9.1.5.v20140505
    ├── bin
    │   └── jetty.sh
    ├── etc
    │   ├── jetty-deploy.xml
    │   ├── jetty-http.xml
    │   ├── jetty-logging.xml
    │   ├── jetty-started.xml
    │   ├── jetty.conf
    │   ├── jetty.xml
    │   └── webdefault.xml
    ├── lib
    │   └── <no change or keep only relevant>
    ├── logs
    ├── modules
    │   ├── deploy.mod
    │   ├── ext.mod
    │   ├── http.mod
    │   ├── logging.mod
    │   ├── resources.mod
    │   ├── security.mod
    │   ├── server.mod
    │   ├── servlet.mod
    │   ├── servlets.mod
    │   └── webapp.mod
    ├── resources
    ├── start.d
    │   └── http.ini
    ├── start.ini
    ├── start.jar
    ├── webapps
    └── work
    

    【讨论】:

      【解决方案3】:

      过去,我通过删除所有不使用的框架来大量修剪 Jetty。这也让我减少了所有的依赖 jars。一旦我把它修剪成我使用的基本必需品,它就非常小。然后我用 onejar 重新打包它,所以它是一个可以执行的单个文件传输。自从我管理任何大型应用程序集群以来已经有很长时间了,所以可能有更好的方法来实现相同的目的。 云计算浮现在脑海中,但我在这方面做得不多,但如果我今天面临同样的挑战,我会首先关注它。

      加上带宽和磁盘现在便宜了很多,所以我认为随着时间的推移问题变得越来越小。

      【讨论】:

      • 感谢您的帖子,我在这篇帖子中感到孤独!但是别开玩笑了,你能更详细地记住你在码头上用什么修剪过的东西吗?干杯!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-23
      • 2012-12-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-22
      相关资源
      最近更新 更多