论坛(BBS)是主要的网络应用之一。在Linux下进行安装配置,可以选用性能比较出色的Tomcat实现。这是当前最好的免费JSP服务器。下面就Tomcat的安装和配置进行说明。
Tomcat的安装
安装的准备
安装前需要从java.sun.com网站下载JDK或JRE的RPM包,并从www.apache.org网站下载Tomcat的安装文件。因为Tomcat是基于JRE服务器的程序,所以在正常的安装前提下,必须配置好Linux下面的Java运行环境。通过“rpm -ivh j2sdk*.rpm”命令可安装Java的运行环境。此外还要配置Java的一些环境变量,才是完整的JRE环境。首先进入用户的主目录,编辑用户文件(使用命令“vi .bash_profile”)并增加以下两行代码:
JAVA_HOME = java的安装路径
export JAVA_HOME |
安装Tomcat
Tomcat的安装相对比较简单,把所下载的tar.gz包进行解压即可(假设安装在“/usr/Tomcat”目录中)。要测试是否已正确安装,可运行代码“/usr/Tomcat/bin/startup.sh”,然后在IE里进行浏览(端口号一定是8080),如果看到带有一只猫的网页,就说明了Tomcat已经正常的工作了。
目录结构
安装完成后在Tomcat的主目录下面分别存放若干目录。如表1所示的目录结构显示了一个典型的Tomcat安装,包括两个Web应用程序。
表1 典型Tomcat安装目录结构
表1中conf是重点介绍对象,所有的配置文件都在这个目录中。与配置文件相互对应的程序文件都放在webapps目录下面,因此这个目录同样重要。下面以这两个目录相互结合进行介绍。
Tomcat的配置
Tomcat的主要配置文件有3个,分别是Tomcat-users.xml、web.xml和server.xml。它先前的版本采用了和Apache一样的conf文本文件。这样的文本文件对于初学者是一种很大的挑战。但现在它采用了比较通用的XML文件格式,这是一种向着开放性、标准性的转变。下面分别对3个文件进行说明。
配置Tomcat-users.xml
该文件包含了所有Tomcat服务器的注册用户,其中有role(角色)、user(用户)两种信息。下面列举出这个XML文件的部分内容。
<?xml version='1.0' encoding='utf-8'?>
<Tomcat-users>
<role rolename="Tomcat"/>
<user username="Tomcat" password="Tomcat" roles="Tomcat,admin"/>
</Tomcat-users> |
1.role参数
Tomcat中保存了一些用户权限,也就是角色,比如admin、Tomcat等。用户还可以自定义,通过“”来注册一个角色。它只有rolename一个属性,通过这个属性可以把用户的权限进行分配。
2.User参数
这个数据项中包含了诸如用户名、用户密码、用户权限、用户说明等数据属性。通过下面的这个例子讲解。
<user username="wudi" password="wudi" fullName="test"
roles="admin,manager,role1,Tomcat"/> |
这个语句建立了一个用户,用户名是“wudi”,密码也是“wudi”。这个用户的全称是“test”。“wudi”这个用户拥有的权限是admin、manager、role1、Tomcat。这些用户权限是Tomcat系统默认的。在这里有一些需要声明,Tomcat的系统管理员必须有admin的用户权限,否则无法登陆Tomcat的管理界面。
配置web.xml
这个文件说明了Servlet程序的具体配置格式、多媒体文件格式定义、服务器默认起始文件、安全设置和一些过滤器的设置。相对文件的配置,不需要太多的参数改变。读者没有太多的必要去修改这个文件。
配置server.xml
下面介绍Tomcat中最重要的配置文件server.xml。所有Tomcat用到的程序及类库,都体现在这个配置文件中。它包含了服务器的端口号、虚拟主机、服务目录、日志文件、日志格式、连接方法等重要的配置信息。
经过配置这个文件,就可以对论坛进行部署,并最终建立起论坛服务器。
Tomcat的配置文件是XML格式,所以可以用树型结构进行说明。这个配置文件的根节点是server元素。它提供了一些关闭Tomcat服务器的信息设置属性。
下面这个例子是所有Tomcat服务器中server.xml的第一个语句:
<Server port="8005" shutdown="SHUTDOWN" debug="0"> |
以上可以看出,它的属性十分简单,包含了关闭服务器的命令从上“shutdown”,服务器在端口号8005上监听来自用户关闭服务器的指令。这个指令包括了用户执行的“./bin/shutdown.sh”命令。由于关闭服务器的指令级别是最高级别“0”,因此只要是关闭服务器,其它进程也都要同时关闭。
server包含了若干子节点。其中Listener、GlobalNamingResources、Service是它最重要的三个节点。
1.Listener
该节点指定了服务器用来监听用户请求的类库。这些监听类库一般都支持Java的JMX标准。例子如下:
<Listener className="org.apache. catalina.mbeans.
ServerLifecycleListener" debug="0"/> |
可以改变上面例子中“className”的属性值,来增强Tomcat的性能。但当不十分清楚性能要求时,不要随便更改这些属性值。
2.GlobalNamingResources
这个节点定义了Tomcat使用的所有数据库资源。它完全支持Java中JNDI的标准,也包含三个子节点:Environment、Resource、ResourceParams。其中,Environment节点定义了一些经常用到的Java数据类型及其默认值。下面这个例子中,Tomcat把整数数据类型“java.lang.Integer”定义为一个“simpleValue”的别名,默认值是30:
<Environment name="simpleValue" type="java.lang.Integer"
value="30"/> |
Resource节点给出了定义的数据资源。这个资源中定义了资源名、资源类型和说明。资源名与“ResourceParams”中的资源名称相互联系。
下面的例子中,有一个通过“org.apache.catalina.UserDatabase”类库定义的、资源名称为UserDatabase的数据源,其资源所用到的数据参数是通过“ResourceParams”节点进行赋予的:
<Resource name="UserDatabase" type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved">
</Resource> |
ResourceParams节点中的name属性用来和Resource进行连接。下面这个ResourceParams例子中,用户可以清晰地看到parameter的value就是上文提到的“Tomcat-users.xml”用户权限配置文件。通过这个参数的设定,可以十分容易地把用户信息传递到Tomcat中,代码如下:
<ResourceParams name="UserDatabase">
<parameter>
<name>pathname</name>
<value>conf/Tomcat-users.xml</value>
</parameter>
</ResourceParams> |
3.Service
这是Server子节点中最重要的元素。它提供了Tomcat的内容管理、虚拟主机管理、目录管理、连接管理等重要属性的管理设置。
Service包含了两个重要的节点,其中一个是定义了连接器Connector,另外一个定义了内容引擎Engine。它们分别给出了关于连接的设置和提供的内容设置。
◆ Connector
它包含了几个关于连接的属性值,以下面这个例子说明这些属性:
<Connector className="org.apache.coyote .Tomcat4.CoyoteConnector"
port="80" minProcessors="5" maxProcessors="75" enableLookups="true"
redirectPort="8443" acceptCount="100" debug="0"
connectionTimeout="20000" /> |
上述代码通过className定义了连接所用到的类库;port给出了响应用户请求的端口号是80;minProcessors是服务器启动时创建的处理请求的线程数,例子中的默认值是5;maxProcessors是最大可以创建的处理请求的线程数,这数值是根据你的服务器性能决定的,一般是30。enableLookups如果设置为true,则可以通过调用“request.getRemoteHost()”进行DNS查询,来得到远程客户端的实际主机名;若设为false,则不进行DNS查询,而是返回其IP地址;redirectPort指定服务器正在处理HTTP请求时收到了一个SSL传输请求后重定向的端口号;acceptCount指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理,这里设置为100个请求;connectionTimeout指定超时的时间数(以毫秒为单位),一般是20秒钟。
◆ Engine
Engine表示指定Service中的请求处理机,接收和处理来自Connector的请求。它给出了一些关于处理机的属性值和子节点,分别是Logger、Realm、Host。Engine的属性中给出了处理机的名称、默认处理的主机名和运行级别。下面这个例子中以Standalone为名称的处理机的默认主机名是localhost:
<Engine name="Standalone" defaultHost="localhost" debug="0"> |
需要注意的是,defaultHost指定缺省的处理请求的主机名。它至少与其中的一个host元素的name属性值是一样的。
◆ Context节点
Context表示一个Web应用程序,通常为WAR文件,或者是一些JSP、HTMLWeb文档的集合。它包含了下面例子中的一些属性:
<Context path="/exam" docBase="examples" debug="0" reloadable="true" > |
其中,docBase表示应用程序的路径或WAR文件存放的路径;path表示此Web应用程序的URL前缀(这样请求的URL为“http://localhost:8080/path/****”);reloadable这个属性非常重要,如果为true,则Tomcat会自动检测应用程序的“/WEB-INF/lib”和“/WEB-INF/classes”目录的变化,自动装载新的应用程序。可以在不重启Tomcat的情况下改变应用程序,论坛程序通过这个设置来手工部署到Tomcat服务器中。
在context中还有一些关于EJB或环境变量的设置。当然,这些设置是和论坛程序有联系的,可以根据自己的需求进行特定设置。需要注意的是,一个Web应用程序的顶级目录(例如“/examples”、“/ROOT”)被称为该Web应用程序的文档根目录。它是服务器存放与该Web应用程序相关联的HTML、JSP和图像文件的地方。进行部署的时候,系统管理员为每个Web应用程序分配一个惟一的上下文路径。所有对这个上下文路径的请求都被路由到适当的Web应用程序。其中ROOT目录是Tomcat的保留字段,该字段代表了服务器的相对根目录,只要把论坛程序加到ROOT目录下面,就可以实现最简单的部署。
Tomcat的管理
Tomcat提供了一些简单的图形化管理工具,可以通过下面的工具管理Tomcat。
得到应用程序列表
在浏览器中输入“http://localhost/manager/list”,浏览器将会显示应用程序列表的信息。
重新启动应用程序
在浏览器中输入“http://localhost/manager/reload?path=/examples”,浏览器显示如下:
OK - Reloaded application at context path /examples |
这表示example应用程序装载成功。如果将server.xml的Context元素的reloadable属性设为true(见表1),则没必要利用这种方式重新装载应用程序,因为Tomcat会自动装载。
启动和关闭应用程序
在浏览器中输入“http://localhost/manager/start?path=/examples”和“http://localhost/manager/stop?path=/examples”分别启动和关闭examples应用程序。
部署及撤销部署
在浏览器中输入“http://localhost/manager/install?path=/examples&war=file:/c:examples”,将按目录结构组织WAR部署。
通过上面的安装、配置和管理,Tomcat已经可以完整地作为论坛服务器使用。至于具体的论坛程序代码,可以尝试用JSP和简单的数据库实现,然后部署到这个Tomcat服务器中(如图1)。
图1 部署完后的BBS页面
(责任编辑:张明燕)