关注分享主机优惠活动
国内外VPS云服务器

tomcat配置的10个必要技巧总结(如何配置Tomcat)

现在开发Java Web应用程序、构建和部署Web内容是一项非常简单的工作。使用Jakarta Tomcat作为Servlet和JSP容器的人已经遍布世界各地。Tomcat有很多特点,比如免费和跨平台,而且更新很快,所以现在很受欢迎。

I。管理Web应用程序大多数商业J2EE服务器都提供了强大的管理界面,并且大多数服务器都使用易于理解的Web应用程序界面。Tomcat也以自己的方式提供了一个成熟的管理工具,它并不亚于那些商业竞争对手。Tomcat的管理Web应用程序首次出现在4.1版本中,当时的功能包括管理上下文、数据源、用户和组。当然,您还可以管理各种数据库管理,如初始化参数、用户、组和角色。在后续版本中,这些功能将得到极大的扩展,但现有的功能已经非常实用。管理Web应用程序在自动部署文件中定义:catalina _ base/Web apps/Admin . XML .(译者注:CATALINA _ BASE是tomcat安装目录下的服务器目录)您必须编辑该文件以确保上下文中的docBase参数是绝对路径。换句话说,catalina _ base/web apps/admin . XML的路径是一个绝对路径。作为另一种选择,您也可以删除这个自动部署文件并在server.xml文件中创建Admin Web应用程序的上下文,效果是相同的。您不能管理管理Web应用程序,换句话说,除了删除catalina _ base/Web apps/Admin . XML之外,您可能无法执行任何操作。如果您使用UserDatabaseRealm(默认),则需要向catalina _ base/conf/Tomcat -users。XML文件添加一个用户和一个角色。编辑该文件并添加一个名为& ldquo的文件管理& rdquo角色添加到文件中,如下所示:

& ltrole name =“admin“/& gt。您还需要一个用户,这个用户的角色是& ldquo管理& rdquo。像现有用户一样添加用户(更改密码以使其更加安全):

& ltser name =“admin“password =“deep _ dark _ secret“roles =“admin“/& gt;完成这些步骤后,请重启Tomcat并访问http://localhost:8080/admin,您将看到一个登录界面。管理Web应用程序采用基于容器管理的安全机制,并采用Jakarta Struts框架。一旦你& ldquo管理& rdquo角色用户登录到管理界面,您将能够使用该管理界面配置Tomcat。

二、配置应用程序管理(管理器web应用程序)管理器Web应用程序允许您通过比管理Web应用程序更简单的用户界面执行一些简单的Web应用程序任务。管理器Web应用程序是在自动部署文件中定义的:

catalina _ base/web apps/manager . XML还需要一个角色& ldquo经理& rdquo的用户。像现有用户一样添加新用户(更改密码以使其更加安全):

& lt用户名=“manager“密码=“deep _ dark _ secret“roles =“manager“/& gt。然后重启Tomcat并访问http://localhost/manager/list,您将看到一个非常简单的基于文本的管理界面,或者访问http://localhost/manager/html/list,您将看到一个HMTL管理界面。无论哪种方式,您的经理Web应用程序现在都已启动。管理应用程序允许您在没有系统管理权限的情况下安装新的Web应用程序进行测试。如果我们在/home/user/hello下有一个新的web应用程序,并希望将其安装在/hello下,为了测试该应用程序,我们可以通过输入& ldquo在第一个文件盒里。/你好& rdquo(作为访问路径),输入& ldquo在第二个文本框中。file:/home/user/hello & rdquo;(作为配置URL)。管理应用程序还允许您停止、重启、删除和重新部署web应用程序。停止应用程序,使其无法访问。当用户试图访问停止的应用程序时,他将看到503错误。?& ldquo503 -此应用程序目前不可用& rdquo。删除web应用程序只意味着从Tomcat的运行副本中删除该应用程序。如果重新启动Tomcat,被删除的应用程序将再次出现(即删除并不意味着将其从硬盘中删除)。

3.部署web应用程序在系统中部署web服务有两种方法。

将WAR文件或web应用程序文件夹(包括web的所有内容)复制到$CATALINA_BASE/webapps目录。为您的web服务创建一个只包含上下文内容的XML片段文件,并将该文件放在$CATALINA_BASE/webapps目录中。web应用程序本身可以存储在硬盘上的任何地方。如果您有一个WAR文件,如果您想要部署它,您只需要简单地将该文件复制到CATALINA_BASE/webapps目录,并且该文件必须命名为& ldquo。战争& rdquo作为延伸。一旦Tomcat监听到这个文件,它就会(默认情况下)将文件包解压为子目录,并将WAR文件的文件名作为子目录的名称。接下来,Tomcat将在内存中创建一个上下文,就像您在server.xml文件中所做的那样。当然,其他必要的内容将从server.xml中的DefaultContext中获取。部署web应用程序的另一种方法是编写一个上下文xml片段文件,然后将该文件复制到CATALINA_BASE/webapps目录中。上下文片段不是一个完整的XML文件,而只是一个上下文元素和应用程序的相应描述。这个片段文件就像是从server.xml中剪切出来的上下文元素,因此这个片段被命名为& ldquo上下文片段& rdquo。例如,如果我们要部署一个名为MyWebApp.war的应用程序,该应用程序使用realm作为访问控制方法,我们可以使用以下片段:

& lt!用于部署MyWebApp.war--》的--上下文片段;& lt上下文路径=“/demo“docBase =“web apps/myweb app . war“debug =“0“rivileged =“true“& gt;& ltrealm class name =“org . Apache . catalina . realm . user database realm“resourceName =“user database“/& gt;& lt/Context & gt;命名细分市场& ldquoMyWebApp.xml & rdquo,然后将其复制到CATALINA_BASE/webapps目录。这个上下文片段提供了一种部署web应用程序的便捷方式。除非您想更改默认部署特征,否则不需要编辑server.xml,并且在安装新的web应用程序时不需要重新启动Tomcat。

四。配置虚拟主机关于server.xml & ldquo主机& rdquo只有在设置虚拟主机时才需要修改此元素。虚拟主机是一种在web服务器上为多个域名提供服务的机制。对于每个域名来说,似乎整个主机都被垄断了。事实上,大多数小型企业网站都是由虚拟主机实现的,主要是因为虚拟主机可以直接连接到互联网并提供相应的带宽以确保合理的访问响应速度,此外,虚拟主机可以提供稳定的固定IP。通过在域名服务器(DNS)上创建IP地址的别名,并告诉web服务器将对不同域名的请求分发到相应的web目录,可以在任何web服务器上建立基于名称的虚拟主机。因为这篇文章主要是关于Tomcat的,所以我们不打算介绍在各种操作系统上设置DNS的方法。如果你需要这方面的帮助,请参考Paul Albitz和Cricket Liu(O & # 39;雷利)。为了方便演示,我将使用静态主机文件,因为这是测试别名的最简单方法。要在Tomcat中使用虚拟主机,您需要设置DNS或主机数据。为了进行测试,为本地IP设置一个IP别名就足够了。接下来,您需要在server.xml中添加几行代码,如下所示:

& lt服务器端口=“8005“shut down =“shut down“debug =“0“& gt;& lt服务名称=“Tomcat -Standalone“& gt;& ltconnector class name =“org . Apache . coyote . Tomcat 4 . coyote connector“port =“8080“min processors =“5“max processors =“75“enable lookups =“true“redirect port =“8443“/& gt;& ltconnector class name =“org . Apache . coyote . Tomcat 4 . coyote connector“port =“8443“min processors =“5“max processors =“75“accept count =“10“debug =“0“scheme =“https“secure =“true“/& gt;& ltfactory class name =“org . Apache . coyote . Tomcat 4 . coyoteserversocketfactory“client auth =“false“protocol =“TLS“/& gt。& lt/Connector & gt;& ltengine name =“Standalone“default host =“localhost“debug =“0“& gt;& lt!--该主机是默认主机--& gt;& lt主机名=“localhost“debug =“0“app base =“web apps“unpackWARs =“true“auto deploy =“true“& gt;& lt上下文路径=““docBase =“ROOT“debug =“0“/& gt;& lt上下文路径=“/orders“docBase =“/home/Ian/orders“debug =“0“reloadable =“true“cross context =“true“& gt。& lt/Context & gt;& lt/Host & gt;& lt!--这台主机是第一台“虚拟主机”:http://www.example.com/ --& gt;& lt主机名=“www . example . com“app base =“/home/example/web app“& gt;& lt上下文路径=““docBase =“。“/& gt;& lt/Host & gt;& lt/Engine & gt;& lt/Service & gt;& lt/Server & gt;Tomcat的server.xml文件在初始状态下只包含一个虚拟主机,但很容易扩展为支持多个虚拟主机。在前面的示例中,显示了server.xml的简单版本,粗体部分用于添加虚拟主机。每个主机元素必须包含一个或多个上下文元素,其中一个必须是默认上下文,并且该默认上下文的显示路径应该为空(例如,path = & rdquo& rdquo)。

5.配置基本身份验证容器管理身份验证方法控制用户访问受保护的web应用程序资源时如何对用户进行身份验证。当web应用程序使用基本身份验证时(基本参数在web.xml文件的auto -方法元素中设置),用户访问受保护的web应用程序时,Tomcat将通过HTTP基本身份验证弹出一个对话框,要求用户输入用户名和密码。在这种身份验证方法中,所有密码将以64位编码模式在网络上传输。

注意:使用基本身份验证被认为是不安全的,因为它没有可靠的加密方法,除非在客户端和服务器上都使用了HTTPS或其他密码加密方法(例如,在虚拟专用网络中)。如果没有额外的加密方法,网络管理员将能够截获(或滥用)用户的密码。

但是,如果您刚刚开始使用Tomcat,或者您想在web应用程序中测试基于容器的安全管理,基本身份验证仍然非常容易设置和使用。只需将和两个元素添加到web应用程序的web.xml文件中,并将适当的和添加到catalina _ base/conf/tomcat -users . XML文件中,然后重新启动Tomcat。以下示例中的web.xml取自俱乐部会员网站系统,其中只有会员目录受到保护,并通过基本身份验证进行身份验证。请注意,此方法将有效地替换。Apache web服务器中的htaccess文件。

& lt!--通过在该应用程序上定义“安全约束”并将其映射到我们想要限制的子目录(URL)来定义仅限成员-的区域。--&gt。& lt安全性-约束&gt。& ltweb -资源-集合&gt。& ltweb-resource-name&gt。整个应用程序&lt/web-resource-name&gt& ltURL -模式& gt/members/* & lt;/URL -pattern & gt;& lt/web -资源-集合&gt。& ltauth -约束& gt& ltrole-name&gt。成员& lt/role -name & gt;& lt/auth -约束& gt& lt/security -约束& gt& lt!--定义该应用程序的登录配置--& gt;& lt登录-配置& gt& ltauth -方法& gt基本& lt/auth -method & gt;& ltrealm -name & gt;我的club members -唯一区域&lt。/realm -name & gt;& lt/log in -config & gt;

第六,配置单点登录(Single Sign-On)一旦设置了领域和验证方法,就需要进行实际的用户登录处理。一般来说,用户登录系统是一件非常麻烦的事情,您必须尽量减少用户登录和验证的次数。默认情况下,当用户首次请求受保护的资源时,每个web应用程序都要求用户登录。如果您运行多个web应用程序,并且每个应用程序都需要单独的用户身份验证,这看起来有点像您在与您的用户作战。用户不知道如何将多个独立的应用程序集成到单个系统中,因此他们不知道他们需要访问多少不同的应用程序,但他们对为什么要不断登录感到困惑。Tomcat 4 & ldquo单点登录-on & rdquo;该功能允许用户在访问同一虚拟主机下的所有web应用程序时仅登录一次。为了使用此功能,您只需在主机上添加一个单点登录阀元素,如下所示:

& ltvalve class name =“org . Apache . catalina . authenticator . singlesignon“debug =“0“/& gt;在初次安装Tomcat后,server.xml的注释中包含了一个SingleSignOn Valve配置示例,您只需删除注释即可使用它。然后,只要任何用户登录一个应用程序,它对同一虚拟主机下的所有应用程序都同样有效。在阀门上使用单信号-有一些重要的限制:

值必须配置并嵌套在同一主机元素中,并且所有需要单点身份验证(必须通过context元素定义)的web应用程序都位于该主机下。包含共享用户信息的领域必须设置在同一级别的主机中或嵌套在外部。不能被上下文中的领域覆盖。使用单点登录的Web应用程序应该使用Tomcat的内置身份验证方法(在web.xml中定义),该方法比自定义身份验证方法更强大。Tomcat的内置身份验证方法包括基本、摘要、表单和client-cert。如果您使用单点登录并希望将第三方web应用程序集成到您的网站中,而这个新的web应用程序使用自己的身份验证方法而不是容器管理安全性,那么您基本上没有选择。您的用户每次登录所有原始应用程序时都需要登录一次,当他们请求新的第三方应用程序时,他们必须再次登录。当然,如果你有这个第三方web应用程序的源代码,并且你是程序员,你可以修改它,但恐怕不容易做到。单点登录需要Cookies。

七、配置定制用户目录(customized user directory)有些网站允许个人用户在服务器上发布网页。例如,一所大学的学院可能想给每个学生一个公共区域,或者一个ISP可能想给他的客户一些网络空间,但这不是虚拟主机。在这种情况下,典型的方法是在用户名前添加一个特殊字符(~)作为每个用户的网站,例如:

Http://www.cs.myuniversity.edu/~用户名http://members . mybigisp . com/~ username Tomcat提供了两种在主机上映射这些个人网站的方法,主要使用一对特殊的侦听器元素。Listener的className属性应该是org . Apache . catalina . startup . user config,userClass属性应该是几个映射类之一。如果您的系统是Unix,它将有一个标准的/etc/passwd文件。运行Tomcat可以轻松读取该文件中的帐户。该文件指定用户的主目录并使用PasswdUserDatabase来映射类。

& ltlistener class name =“org . Apache . catalina . startup . user config“directory name =“public _ html“user class =“org . Apache . catalina . startup . passwd user database“/& gt;这样,web文件可以位于/home/ian/public_html或/home/jasonb/public_html这样的目录中。这种形式对Windows更有利,可以使用c:\home这样的目录。这些侦听器元素如果出现,必须在主机元素中,而不是在上下文元素中,因为它们都用于应用于主机本身。

八、在Tomcat中使用CGI脚本Tomcat主要用作Servlet/JSP容器,但它也具有传统web服务器的许多性能。支持通用网关接口(CGI)就是其中之一。CGI提供了一组方法来在响应浏览器请求时运行一些扩展程序。CGI被称为通用的,因为它可以在大多数程序或脚本中调用,包括Perl、Python、awk、Unix shell脚本甚至Java。当然,您可能不会将Java应用程序作为CGI运行,毕竟它太原始了。一般来说,开发Servlet总是比CGI更高效,因为当用户单击一个链接或按钮时,您不需要从操作系统层开始处理。Tomcat包括一个可选的CGI Servlet,允许您运行遗留CGI脚本。为了让Tomcat运行CGI,您必须做以下事情:

Renametojar(在CATALINA_HOME/server/lib/)的目录中(位于CATALINA _ HOME/server/lib/)被重命名为Servlet -CGI . jar .处理CGI的Servlet应该位于Tomcat的类路径下。在Tomcat的CATALINA_BASE/conf/web.xml文件中,删除关于CGI段落的注释(默认情况下,该段落位于第241行)。同样,在Tomcat的CATALINA_BASE/conf/web.xml文件中,删除关于映射CGI的段落的注释(默认情况下,该段落位于第299行)。请注意,本节指定了如何访问CGI脚本的HTML链接。您可以将cgi脚本放在WEB-INF/cgi目录中(注意,WEB-INF是一个安全的地方,出于安全原因,您可以将一些不想被用户看到或暴露的文件放在那里),或者您可以将CGI脚本放在上下文下的其他目录中,并为CGI Servlet调整cgiPathPrefix的初始化参数。这是指定CGI Servlet的实际位置,它不能与上一步中指定的URL同名。重启Tomcat,你的CGI就可以运行了。在Tomcat中,CGI程序默认放置在WEB-INF/cgi目录中。如前所述,WEB-INF目录是受保护的,其中的内容无法通过客户端的浏览器窥探,因此它是放置包含密码或其他敏感信息的CGI脚本的一个非常好的位置。为了与其他服务器兼容,尽管您也可以将CGI脚本保存在传统的/cgi-bin目录中,但您应该知道这些目录中的文件可能会被互联网上好奇的冲浪者看到。此外,在Unix中,请确保运行Tomcat的用户有权执行CGI脚本。

九、将Tomcat中的JSP编译器改为Tomcat 4.1(或更高版本,大概),JSP编译直接由Tomcat中包含的Ant程序控制器执行。这听起来有点奇怪,但这是蚂蚁意图的一部分。有一个API文档指导开发人员在不启动新JVM的情况下使用Ant。这是使用Ant进行Java开发的一大优势。此外,这还意味着您现在可以在Ant中使用javac支持的任何编译方法。以下是关于Apache Ant用户手册的javac页面列表。它很容易使用,因为您只需要在名为& ldquo的元素中定义一个名称编译器& rdquo,并且在值中有一个支持编译的编译器名称。示例如下:

& ltservlet & gt& ltservlet -name》JSP & lt;/servlet -name & gt;& ltservlet -class & gt;org . Apache . jasper . servlet . JSP servlet & lt;/servlet -class & gt;& ltinit -param & gt;& ltparam -name & gt;logverbositoylevel & lt;/param -name & gt;& ltparam -值& gt警告& lt/param-value》& lt/init -param & gt;& ltinit -param & gt;& ltparam -name & gt;编译器& lt/param -name & gt;& ltparam -值& gtjikes & lt/param-value》& lt/init -param & gt;& ltload -on-startup & gt;3 & lt/load -on-startup & gt;& lt/servlet & gt;当然,给定的编译器必须安装在您的系统中,并且可能需要设置类路径,这取决于您选择的编译器。

X.限制对特定主机的访问有时,您可能希望限制对Tomcat web应用程序的访问。例如,您希望只有您指定的主机或IP地址可以访问您的应用程序。这样,只有那些指定的客户才能访问服务内容。为了达到这种效果,Tomcat提供了两个参数供您配置:RemoteHostValve和RemoteAddrValve。通过配置这两个参数,您可以从请求中过滤主机或IP地址,并允许或拒绝哪些主机/IP。同样,Apache的httpd文件中的每个目录都有一个允许/拒绝规范。例如,您可以将管理Web应用程序设置为仅允许本地访问,设置如下:

& lt上下文路径=“/path/to/secret _ files“...& gt& ltvalve class name =“org . Apache . catalina . valves . remoteaddrvalve“allow =“127 . 0 . 0 . 1“deny =““/& gt;& lt/Context & gt;如果未指定允许的主机,则与拒绝的主机匹配的主机将被拒绝,而其他所有主机都被允许。同样,如果您不指定被拒绝的主机,那么与允许的主机匹配的主机将被允许,其他所有主机都将被拒绝。

以上是对Tomcat配置所需的10个技巧的详细总结。关于Tomcat配置技巧的更多信息,请关注主机频道zhujipindao的其他相关文章。com!

未经允许不得转载:主机频道 » tomcat配置的10个必要技巧总结(如何配置Tomcat)

评论 抢沙发

评论前必须登录!