1. 环境变量
tomcat 就是一个java程序,必须用到 jre,所以需要配置环境变量 java_home= c:jdk1.6
tomcat的启动是通过 startup.bat 文件, 实际上 startup.bat 中是去调用catalina.bat 文件, 而且是通过 %catalina_home%incatalina.bat 去找
所以为了保证服务器启动正常, 需要配置 catalina_home 环境变量为 tomcat的安装目录。
注:如果硬盘里有多个服务器程序,当你运行statup.bat时,真正决定启动哪个服务的是catalina.bat里配置的路径
2. 目录结构
bin目录存放一些启动运行Tomcat的可执行程序和相关内容。
conf存放关于Tomcat服务器的全局配置。
lib目录存放Tomcat运行或者站点运行所需的jar包,所有在此Tomcat上的站点共享这些jar包。
wabapps目录是默认的站点根目录,可以更改。
work目录用于在服务器运行时过度资源,简单来说,就是存储jsp、servlet翻译、编译后的结果。
其他目录和文件暂时不做介绍。
3. 请求的格式定义
url (用于定位网络上的资源的唯一地址): http://localhost:8080/ROOT/index.jsp
协议类型 (同类型还有mail..): http
hosts (主机名) : localhost
端口号(决定由服务器上哪个程序响应, http默认的端口号80):8080
如http://www.baidu.com/ 表示用http协议向域名为baidu.com下的www主机发送请求。
注:一个域名下可以约束多个主机,如邮件服务地址http://mail.baidu.com,域名需要购买。
4. 服务端口的配置
开发默认的端口号是8080, 正式发布后,肯定不会让用户在域名后加上:8080才能访问到资源,因此需将服务端口修改成http协议默认的端口80.
打开%TOMCAT_HOME%(以下代指Tomcat的安装路径)下的conf目录下的server.xml文件,找到下面一段代码,知道怎么做了吧。
<Connector port="8080" protocol="HTTP/1.1" URIEncoding="utf-8" connectionTimeout="20000" redirectPort="8443" />
5. web应用配置
何为web应用,web应用就是用户真正想访问到的页面资源,也是开发人员想让用户看到的东西,由js, css, html, 支持jar包等组成。那怎么才能让用户从外界能够访问到
web应用呢?很简单,只要把web应用交给服务器管理就可以实现了,而交给服务器管理就需要对服务器进行一定的配置。
1)在 conf/server.xml里配置Context, 不推荐这种方法,因为这种配置方法只有在重启tomcat才生效。另在Context里添加属性reloadable=true时,可不用生启,但是如果项目比较大的话,每改动一次,服务器会自动加载一次,这会加重服务器的负担,不推荐。
-<Host name="localhost" autoDeploy="true" unpackWARs="true" appBase="webapps"> <Context path="/myweb" docBase="d: ews" /> </Host>
有了上述配置后,位于d: ews下面的页面资源都可以通过http://localhost:8080/myweb/xxx.html这样的请求格式访问.
注:path = ""时该应用为服务器的默认应用
2)在conf/context.xml里进行配置, 这种方法配置的资源会被所有的web应用共享
3)In the /conf/[enginename]/[hostname]/context.xml.default
file: the Context element information will be loaded by all web applications of that host. 与第2种有点区别,这种限定了主机
4)In individual files (with a ".xml" extension) in the $CATALINA_BASE/conf/[enginename]/[hostname]/
directory. The context path and version will be derived from the base name of the file (the file name less the .xml extension). This file will always take precedence over any context.xml file packaged in the web application's META-INF directory.(不用重启服务器)
翻译成中文就是:在$CATALINA_BASE/conf/[enginename]/[hostname]/
下任意创建一个xml文件,并在里面配置context元素就可以让服务器将指定的路径纳入管理范围,文件名就是访问路径中的虚拟路径部分,多级目录用#隔开,现在假设在该目录下有一个名为a#b.xml的文件,内容如下:
<Context docBase="d: ews" />
http访问格式为:http://localhost:8080/a/b/xxx.html(xxx为资源页面的文件名)
如果将a#b.xml改成ROOT.xml,这个就是表明它是默认的web应用,这个时候http://localhost:8080就看不到原来的tomcat自带的文档说明了,现在想要访问d:
ews下面的资源,只需这样 http://localhost:8080/xxx.html(直接跟在端口号后面)
5)最简单的一种方式,把资源文件直接丢到 apache-tomcat-7.0.54webapps目录下,无需任何配置服务器会自动将该目录下的资源纳入入理范围。
6. web应用的组织结构
1)在web.xml中配置首页
<?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0" metadata-complete="true"> <welcome-file-list> <welcome-file>index.html</welcome-file> <!--home page--> </welcome-file-list> </web-app>
首页配置好以后,http访问地址:http://localhost:8080/test
7.配置网站
在开发时都是通过http://localhost:8080/xx/xx.html来访问我们自己写的页面吧,相信很多人都会想过一个问题,可不可像http://www.baidu.com/xx/xx.html一样呢?其实只要在con/server/xml里配置下网站(主机名)就可以做到了。现在我想通过这样的http://www.baidu.com/xx/xx.html地址来访问我本地服务的页面,可以这样
<?xml version='1.0' encoding='utf-8'?> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> </Host> <Host name="www.baidu.com" appBase="d:mybaidu"> <Context path="/mail" docBase="d:mybaidumail"/> </Host> </Engine> </Service> </Server>
上述代码中的appBase的路径就是配置的主机名"www.baidu.com"所对应的路径,在配置好这一步后,假设在d:mybaidumail目录下已经建好一个1.html文件,直接输入地址http://www.baidu.com/mail/1.html能打开吗?
答案当然是不行,这个时候访问的仍然是baidu的服务器,它的服务器里当然没有1.html文件了哇。说到这就不得不说说http协议的工作原理了,简要说明一下,http请求分为以下几步:
1)在输入http://www.baidu.com/mail/1.html后,浏览器要能正确获得资源必须有资源所在机器的IP地址。
2)在发出http请求前,首先在本地的hosts文件里查看是否有名字叫www.baidu.com的主机,如里有则取出IP,再发出http请求
3)如果在本地没有找到,则去网上域名服务器里去查,查到了就发http请求,没有找到该请求将访问失败,而失败的原因有可能是域名服务器挂了,也有要可能是你要访问的服务器挂了,可以通过ping www.baidu.com来确认到底是谁挂了。所有的网络请求在没有直接给出IP或本地没有配置主机名与IP映谢的情况下,都会去域名服务器上去获取IP再去对应的IP主机上获取资源,所以这个域名对公司来说很重要吧,有的域名还需要花大价钱去买,扯远了,反正只要记住一点,服务器主机名就是找与其对应的服务器的IP地址的钥匙。
了解了http请求工作原理以后,现在知道了为什么刚才的请求不能访问了吗?而要使其访问成功,我们只需要在本机的hosts文件里加上一句:
www.baidu.com 192.168.xx.xx # IP 为本机的地址
配置网站可以总结为这几句:一台服务器可以通过host节点在server.xml里配置多个网站,如果需要网站能够被外界访问,必须在DNS服务器上注册或本地Hosts文件里配置主机名与IP的映射