一、设置访问域名下的默认应用
一般情况下,进入tomcat主页时展现的页面都是webapp下的ROOT的内容,而实际上我们发布项目到服务器上时都是希望进入不需要指定应用名即可进入默认的应用,因此我们可做一下修改即可:
1、打开tomcat/conf下的server.xml配置文件,找到<Host>节点,添加<Context path="" docBase="D:/apache-tomcat-6.0.41/webapps/docs" debug="0" reloadable="true"/>
其中path就是我们要基于主机的访问地址,因为希望只输入主机地址就进入应用,所以path设为空,
docBase就是我们的应用的地址,这里使用的是绝对地址,也可以使用相对地址<Context path="" docBase="docs" debug="0" reloadable="true"/>,即相对于webapps的,这是因为在host配置中指定了appBase="webapps"
2、将webapps下的ROOT删除或是移动其他地方
现在访问http://localhost:8080打开的就是docs的主页了
二、添加虚拟主机
1、要添加虚拟主机,由于在测试环境中,物理主机也没有申请域名,因此要指定域名对应的是该主机
修改host文件
C:\WINDOWS\system32\drivers\etc下的host
(无需重启)
添加:
127.0.0.1 mysite1.com
127.0.0.1 mysite2.com
现在已经可以通过mysite1.com:8080或mysite2.com:8080访问了,只是两个地址访问到的都是和localhost访问的目录是相同的。
2、添加虚拟主机
修改server.xml文件,在<Host>同级下添加<Host>
<Host name="mysite1.com" appBase="webapps1"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="docs" debug="0" reloadable="true"/>
</Host>
<Host name="mysite2.com" appBase="webapps2"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
</Host>
重启tomcat,这时访问http://
mysite1.com:8080就可以访问了,前提是webapp1目录下要有项目才行,当然也要加项目名才行,比如拷贝一份docs到webapps1中,访问
http://
mysite1.com:8080/docs就能打开了
从此,访问mysite1.com时对应的目录就是webapps1里的项目了,同理mysite2也是,而之前通过localhost访问的依然是webapps。
三、添加服务并指定端口
现在我们可以通过不同的域名访问不同的应用了,上面两者结合就能实现通过不同的域名来访问我们的应用了。
但是,申请域名是要money的,如果我们想要在URL中输入同一个域名而能访问不同的应用又该怎么办呢(这里说的应用都是默认的)。
是的,同一个地址访问不同的应用,那就只能更改端口了。
weblogic中,可以建立不同的域,而为不同的域指定不同的端口,我们也可以启动多个tomcat实例,每个实例的端口设为不同。实际上没有这个必要,启动多个实例不尽管理不方便,而且也会占用较多资源。
1、打开conf下的server.xml文件,我们创建多个<Service>节点
- <Service name="Catalina1">
-
- <Connector port="8091" maxHttpHeaderSize="8192"
- maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
- enableLookups="false" redirectPort="8443" acceptCount="100"
- connectionTimeout="20000" disableUploadTimeout="true" />
- <Engine name="Catalina1" defaultHost="mysite1.com">
- <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
- resourceName="UserDatabase"/>
-
- <Host name="mysite1.com" appBase="webapps1"
- unpackWARs="true" autoDeploy="true"
- xmlValidation="false" xmlNamespaceAware="false">
- <Context path="" docBase="examples" debug="0" reloadable="true"/>
- </Host>
- </Engine>
- </Service>
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />这段代码是用与和http服务器集成,一般情况下可以省略
我们可以通过复制原有的内容再进行修改,从上面的代码中可以看出,只要修改service name属性、Connector的端口号、以及Host的配置即可
2、创建配置目录和文件
..\Tomcat 6.0\conf\Catalina1\mysite1.com
文件可复制原有的(实际上,只要webapp1下有manager项目,启动时服务器会自动创建该目录及文件)
host-manager.xml
manager.xml
这样,不同的域名,不同的端口都可以访问了,其中访问mysite1.com:8091就会看到example的主页面了
四、使用tomcat建立文件服务器
说是文件服务器,也只是能支持文件下载,以前在学校时赵老的OJ中就有资源下载的,方便分享好的文档教程之类的,也有学弟问我这个怎么实现的,只是当初没怎么研究过tomcat,也没那么多时间,现在一并解决把
其实实现的很简单,比上面几个简单的多,有点像第一个,只是添加一个<Context>而已
1、还是server.xml文件,在<Host>节点内添加一个<Context>即可
<Context path="/download" docBase="D:/Java library" debug="0" reloadable="true"/>
2、修改配置文件web.xml,找到
- <servlet>
- <servlet-name>default</servlet-name>
- <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
- <init-param>
- <param-name>debug</param-name>
- <param-value>0</param-value>
- </init-param>
- <init-param>
- <param-name>listings</param-name>
- <param-value>false</param-value>
- </init-param>
- <load-on-startup>1</load-on-startup>
- </servlet>
只需将其中的false改为true即可
当访问localhost:8080/download时即会列出D:/Java library文件夹下的文件,这个不支持中文目录,而且在浏览时也不支持中文字符,含有中文字符的全部404,暂时还没解决这个问题,童鞋们可以试试怎么解决,有解决的还烦请告知
以上设置在tomcat6和tomcat7下均正常,有兴趣的童鞋们可以亲自试试