1、配置系统管理(Admin Web Application)html
大多数商业化的J2EE服务器都提供一个功能强大的管理界面,且大都采用易于理解的Web应用界面。
Tomcat按照本身的方式,一样提供一个成熟的管理工具,而且丝绝不逊于那些商业化的竞争对手。
Tomcat的Admin Web Application最初在4.1版本时出现,当时的功能包括管理context、data source、user和group等。
固然也能够管理像初始化参数,user、group、role的多种数据库管理等。
在后续的版本中,这些功能将获得很大的扩展,但现有的功能已经很是实用了。Admin Web Application被定义在自动部署文件:
CATALINA_BASE/webapps/admin.xml 。(译者注:CATALINA_BASE即tomcat安装目录下的server目录)
你必须编辑这个文件,以肯定Context中的docBase参数是绝对路径。
也就是说,CATALINA_BASE/webapps/admin.xml的路径是绝对路径。
做为另一种选择,你也能够删除这个自动部署文件,而在server.xml文件中创建一个Admin Web Application的context,效果是同样的。
你不能管理 Admin Web Application这个应用,换而言之,除了删除CATALINA_BASE/webapps/admin.xml ,你可能什么都作不了。
若是你使用UserDatabaseRealm(默认),你将须要添加一个user以及一个role到CATALINA_BASE/conf/tomcat-users.xml文件中。
你编辑这个文件,添加一个名叫“admin”的role 到该文件中,以下:
[size=0.85em]<role name="admin"/>
一样须要有一个用户,而且这个用户的角色是“admin”。
象存在的用户那样,添加一个用户(改变密码使其更加安全):
[size=0.85em]<ser name="admin"password="deep_dark_secret"roles="admin"/>
你完成这些步骤后,请从新启动Tomcat,访问http://localhost:8080/admin,你将看到一个登陆界面。
Admin Web Application采用基于容器管理的安全机制,并采用了Jakarta Struts框架。
一旦你做为“admin”角色的用户登陆管理界面,你将可以使用这个管理界面配置Tomcat。
2、配置应用管理(Manager Web Application)web
Manager Web Application让你经过一个比Admin Web Application更为简单的用户界面,执行一些简单的Web应用任务。
Manager Web Application被被定义在一个自动部署文件中:
[size=0.85em]CATALINA_BASE/webapps/manager.xml
你必须编辑这个文件,以确保context的docBase参数是绝对路径,也就是说CATALINA_HOME/server/webapps/manager的绝对路径。(译者注:CATALINA_HOME即tomcat安装目录)
若是你使用的是UserDatabaseRealm,那么你须要添加一个角色和一个用户到CATALINA_BASE/conf/tomcat-users.xml文件中。
接下来,编辑这个文件,添加一个名为“manager”的角色到该文件中:
[size=0.85em]<role name=”manager”>
一样须要有一个角色为“manager”的用户。
像已经存在的用户那样,添加一个新用户(改变密码使其更加安全):
[size=0.85em]<user name="manager"password="deep_dark_secret"roles="manager"/>
而后从新启动Tomcat,访问http://localhost/manager/list,将看到一个很朴素的文本型管理界面,或者访问http://localhost/manager/html...,将看到一个HMTL的管理界面。不论是哪一种方式都说明你的Manager Web Application如今已经启动了。
Manager application让你能够在没有系统管理特权的基础上,安装新的Web应用,以用于测试。若是咱们有一个新的web应用位于/home/user/hello下在,而且想把它安装到/hello下,为了测试这个应用,咱们能够这么作,在第一个文件框中输入“/hello”(做为访问时的path),在第二个文本框中输入“file:/home/user/hello”(做为Config URL)。
Manager application还容许你中止、从新启动、移除以及从新部署一个web应用。
中止一个应用使其没法被访问,当有用户尝试访问这个被中止的应用时,将看到一个503的错误??“503 - This application is not currently available”。
移除一个web应用,只是指从Tomcat的运行拷贝中删除了该应用,若是你从新启动Tomcat,被删除的应用将再次出现(也就是说,移除并非指从硬盘上删除)。
3、部署一个web应用数据库
有两个办法能够在系统中部署web服务。
拷贝你的WAR文件或者你的web应用文件夹(包括该web的全部内容)到$CATALINA_BASE/webapps目录下。
为你的web服务创建一个只包括context内容的XML片段文件,并把该文件放到$CATALINA_BASE/webapps目录下。这个web应用自己能够存储在硬盘上的任何地方。
若是你有一个WAR文件,你若想部署它,则只须要把该文件简单的拷贝到CATALINA_BASE/webapps目录下便可,文件必须以“.war”做为扩展名。
一旦Tomcat监听到这个文件,它将(缺省的)解开该文件包做为一个子目录,并以WAR文件的文件名做为子目录的名字。
接下来,Tomcat将在内存中创建一个context,就好象你在server.xml文件里创建同样。
固然,其余必需的内容,将从server.xml中的DefaultContext得到。
部署web应用的另外一种方式是写一个Context XML片段文件,而后把该文件拷贝到CATALINA_BASE/webapps目录下。
一个Context片段并不是一个完整的XML文件,而只是一个context元素,以及对该应用的相应描述。
这种片段文件就像是从server.xml中切取出来的context元素同样,因此这种片段被命名为“context片段”。
举个例子,若是咱们想部署一个名叫MyWebApp.war的应用,该应用使用realm做为访问控制方式,咱们可使用下面这个片段:
[size=0.85em]<!--Context fragment for deploying MyWebApp.war-->
<Context path="/demo"docBase="webapps/MyWebApp.war"debug="0" rivileged="true">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"resourceName="UserDatabase"/>
</Context>
把该片段命名为“MyWebApp.xml”,而后拷贝到CATALINA_BASE/webapps目录下。
这种context片段提供了一种便利的方法来部署web应用,你不须要编辑server.xml,除非你想改变缺省的部署特性,安装一个新的web应用时不须要重启动Tomcat。
4、配置虚拟主机(Virtual Hosts)apache
关于server.xml中“Host”这个元素,只有在你设置虚拟主机的才须要修改。
虚拟主机是一种在一个web服务器上服务多个域名的机制,对每一个域名而言,都好象独享了整个主机。
实际上,大多数的小型商务网站都是采用虚拟主机实现的,这主要是由于虚拟主机能直接链接到Internet并提供相应的带宽,以保障合理的访问响应速度,另外虚拟主机还能提供一个稳定的固定IP。
基于名字的虚拟主机能够被创建在任何web服务器上,创建的方法就是经过在域名服务器(DNS)上创建IP地址的别名,而且告诉web服务器把去往不一样域名的请求分发到相应的网页目录。
由于这篇文章主要是讲Tomcat,咱们不许备介绍在各类操做系统上设置DNS的方法,若是你在这方面须要帮助,请参考《DNS and Bind》一书,做者是Paul Albitz and Cricket Liu (O'Reilly)。
为了示范方便,我将使用一个静态的主机文件,由于这是测试别名最简单的方法。
在Tomcat中使用虚拟主机,你须要设置DNS或主机数据。
为了测试,为本地IP设置一个IP别名就足够了,接下来,你须要在server.xml中添加几行内容,以下:
[size=0.85em]<Server port="8005"
shutdown="SHUTDOWN" debug="0">
<Service name="Tomcat-Standalone">
<Connector className=
"org.apache.coyote.tomcat4.CoyoteConnector"
port="8080"
minProcessors="5" maxProcessors="75"
enableLookups="true"
redirectPort="8443"/>
<Connector className=
"org.apache.coyote.tomcat4.CoyoteConnector"
port="8443" minProcessors="5"
maxProcessors="75"
acceptCount="10" debug="0"
scheme="https" secure="true"/>
<Factory className="org.apache.coyote.
tomcat4.CoyoteServerSocketFactory"
clientAuth="false" protocol="TLS" />
</Connector>
<Engine name="Standalone"
defaultHost="localhost" debug="0">
<!-- This Host is the default Host -->
<Host name="localhost"
debug="0" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context path="" docBase="ROOT" debug="0"/>
<Context path="/orders"
docBase="/home/ian/orders" debug="0"
reloadable="true" crossContext="true">
</Context>
</Host>
<!-- This Host is the first
"Virtual Host": http://www.example.com/ -->
<Host name="www.example.com"
appBase="/home/example/webapp">
<Context path="" docBase="."/>
</Host>
</Engine>
</Service>
</Server>
Tomcat的server.xml文件,在初始状态下,只包括一个虚拟主机,可是它容易被扩充到支持多个虚拟主机。
在前面的例子中展现的是一个简单的server.xml版本,其中粗体部分就是用于添加一个虚拟主机。
每个Host元素必须包括一个或多个context元素,所包含的context元素中必须有一个是默认的context,这个默认的context的显示路径应该为空(例如,path=””)。
5、配置基础验证(Basic Authentication)tomcat
容器管理验证方法控制着当用户访问受保护的web应用资源时,如何进行用户的身份鉴别。
当一个web应用使用了Basic Authentication(BASIC参数在web.xml文件中auto-method元素中设置),而有用户访问受保护的web应用时,Tomcat将经过HTTP Basic Authentication方式,弹出一个对话框,要求用户输入用户名和密码。
在这种验证方法中,全部密码将被以64位的编码方式在网络上传输。
注意:使用Basic Authentication经过被认为是不安全的,由于它没有强健的加密方法,除非在客户端和服务器端都使用HTTPS或者其余密码加密码方式(好比,在一个虚拟私人网络中)。若没有额外的加密方法,网络管理员将可以截获(或滥用)用户的密码。
可是,若是你是刚开始使用Tomcat,或者你想在你的web应用中测试一下基于容器的安全管理,Basic Authentication仍是很是易于设置和使用的。
只须要添加 和 两个元素到你的web应用的web.xml文件中,而且在CATALINA_BASE/conf/tomcat-users.xml文件中添加适当的 和 便可,而后从新启动Tomcat。
下面例子中的web.xml摘自一个俱乐部会员网站系统,该系统中只有member目录被保护起来,并使用Basic Authentication进行身份验证。
请注意,这种方式将有效的代替Apache web服务器中的.htaccess文件。
[size=0.85em]<!--
Define the
Members-only area,
by defining
a "Security Constraint"
on this Application, and
mapping it to the
subdirectory (URL) that we want
to restrict.
-->
<security-constraint>
<web-resource-collection>
<web-resource-name>
Entire Application
</web-resource-name>
<url-pattern>/members/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>member</role-name>
</auth-constraint>
</security-constraint>
<!-- Define the Login
Configuration for
this Application -->
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>My Club
Members-only Area</realm-name>
</login-config>安全