我习惯使用Jetty作为我的网络容器。
我在安装步骤上所做的是从中获取原始tar球并清理一些目录和文件。
我想在这里提出的是:
你有什么习惯从Jetty中移除以用于制作/舞台环境?
我在默认的jetty包上改变了什么:
问题:
相关帖子:
答案 0 :(得分:2)
我没有违反任何许可证吗?
正确。
我可以为我的系统(性能/稳定性)带来任何缺点吗?
唯一的缺点是Log4J属性文件对于控制执行多少(或多少)日志记录非常有用。完全禁用日志记录会导致日志文件更小,从而节省磁盘空间。 (不应该是TB驱动器的问题。)如果找不到日志记录属性文件,则应用程序可能默认为DEBUG
或INFO
级别,而不是ERROR
级别。因此,Log4J对于告诉所有应用程序仅记录关键信息非常有用。
消除无关的示例(测试套件)通过暴露较少的系统信息来加强安全性。它还可以节省一些内存,因为测试webapps无法加载到内存中。
有没有人在码头上定制比这更多的东西?
您可以按如下方式清除webapps
目录:
cd /opt/jetty
rm -rf webapps
mkdir -p webapps/root
echo "<html><body></body></html>" > webapps/root/index.html
重新启动Jetty。
答案 1 :(得分: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
答案 2 :(得分:0)
在过去,我过去常常通过删除我不使用的所有框架来修剪Jetty 很多。这也让我减少了所有的依赖罐。一旦我把它修剪成我用过的基本要素,它就非常小了。然后我用 onejar 重新打包它,这样就可以执行单个文件传输了。自从我管理任何大规模应用程序集群以来,已经很长时间了,因此可能有更好的方法来实现相同的目标。我想到了云计算,但我在那里做得不多,但如果我今天面临同样的挑战,那就是我首先要看的地方。
如今,带宽和磁盘的价格便宜很多,所以我认为问题随着时间的推移会变得越来越小。