从昨天早上9点半,干到今天早上6点,回去睡了一觉,1点就又到公司了,唉,自己水平真菜,还坑了韬哥。。。。。
关于tomcat的多域名配置,首先,外网ip应该要绑定一个域名,这个域名就相当于这个ip(具体怎么做,请百度之)
1 .首先要把8080端口变为80
在tomcat中找到server.xml,将
<Connector port="8080" protocol="HTTP/1.1" maxThreads="150" connectionTimeout="20000" redirectPort="8443" />
修改为:
<Connector port="80" protocol="HTTP/1.1" maxThreads="150" connectionTimeout="20000" redirectPort="8443" />
2.添加域名
第二就是在中添加<host>(一个host代表一个域名或访问地址)
<Host name="xxx.xxxx.xxx" debug="0" appBase="/opt/tomcat/webapps/xxxx"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="/" docBase="/opt/tomcat/webapps/xxxx"></Context>
</Host>
<Host name="xxx.xxx.xxxx" debug="0" appBase="项目路径"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="/" docBase="/opt/tomcat/webapps/xxxx"></Context>
</Host>
按照上面的配置可以直接输入域名取访问项目的index.jsp(请注意index.jsp的配置)
不过我遇到一个问题,按照上面的配置完成后,启动工程,index.jsp可以访问到,但是其他的url会多一个工程名,访问路径不对。。。很纠结。。。
我在网上还搜到令一种配置方式
<Hostname="www.coe.com"appBase="webapps"unpackWARs="true"autoDeploy="true"
<Contextpath=""docbase="D:\Tomcat 6.0\ccc\ROOT"crosscontext="true"/>
这两天也算是解决域名配置的问题:
如下:<Host name="xxx.xxxx.xxx" debug="0" appBase="/opt/tomcat/webapps/xxxx"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="/opt/tomcat/webapps/xxxx"></Context>
</Host>
<Host name="xxx.xxx.xxxx" debug="0" appBase="项目路径"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="/opt/tomcat/webapps/xxxx"></Context>
</Host>
把path="/"改为path="",且在项目中避免出现工程名的url,我们的jsp文件在文件头设置<c:set var="ctx" value="<%=request.getContextPath()%>"/>
所以url就为
window.location.href = "${ctx}/Login";
tomcat部署的时候还遇到一个问题,就是tomcat加载了两次工程。。。。。。这是因为deployOnStartup如果此项设为true,表示Tomcat服务器启动时会自动发布appBase目录下所有的Web应用 .如果Web应用中的server.xml没有相应的<Context>元素,将采用Tomcat默认的Context
解决方法:deployOnStartup 设置为false