Tomcat 6 配置虚拟主机<域名/二级域名>,并通过Tomcat控制台对多个Host进行管理

本文详细介绍如何在Tomcat6中配置虚拟主机以支持多个二级域名,并通过Tomcat控制台进行有效管理。包括配置server.xml文件,创建项目目录,设置控制台访问路径等步骤。

Tomcat 6 配置虚拟主机<域名/二级域名>,并通过Tomcat控制台对多个Host进行管理,让我纠结了好几天的问题,开始将项目放在tomcat webapps目录下,是可以实现tomcat控制台管理每个项目的,但是放在webapps下,项目会启动N次,每个Host都将会使webapps下的项目启动一次,若将项目放置在其他位置,只启动一次,但tomcat控制台却无法看到host对应的项目,从而无法单独进行管理<启动,停止,重新部署等。。。>,有鉴于此,本文结合网上的一些资料,将从配置虚拟主机到可管理的配置从头详细的理一遍,方便自己也方便大家查阅,如有错误或更好的建议请各位大神斧正!

假设现有两个二级域名 dls.wsy.com  和  zd.wsy.com ,对应两个项目,都跑在同一台服务器的同一个tomcat上,我们需要通过dls.wsy.com访问项目dls,和通过zd.wsy.com访问项目zd,就需要Tomcat的虚拟主机的支持,具体配置如下:

1、找到{tomcat_home}/conf/server.xml ,找到<Host></Host>标签,在其后面增加如下标签:

<Host name="dls.wsy.com"  appBase="E:\\work\\run_project\\agent"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
		</Host>
		
		<Host name="zd.wsy.com"  appBase="E:\\work\\run_project\\terminal"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
		</Host>

2、其中,目录E:\\work\\run_project\\agent 和目录 E:\\work\\run_project\\terminal是自己建的,随便建,在这里指向过去就好了,同时在这两个目录下新建ROOT目录,目录下放入你的项目,注意,放入ROOT目录下的项目不应该带项目名,只放项目内容,如项目的目录结构如下图:

                           


3、到这一步,启动Tomcat,如果域名指到当前机器上的话,应该是已经能通过域名访问你的项目了!但是这时候通过Tomcat控制台却无法看到两个域名对应的项目,所以就无法进行单独管理,如果需要tomcat控制台进行启动、关闭、查看运行信息等操作,就需要进行如下配置:

           找到{tomcat_home}/conf/Catalina,新建两个目录,dls.wsy.com和zd.wsy.com,分别在两个目录下放入manager.xml,文件名可以自定义,为访问控制台的项目名,这里为manager,那么访问控制台的url则分别为:http://dls.wsy.com/manager/html 和http://zd.wsy.com/manager/html ,若修改成其他的,则将url中的manager替换一下就可以了,同样能访问到tomcat的控制台。xml内容如下:

   

<Context path="/manager" docBase="{tomcat_home}\\webapps\\manager"  --这里的tomcat_home需要替换成您实际的tomcat安装目录的绝对路径
debug="0" privileged="true"> 

<!-- Link to the user database we will get roles from --> 
<ResourceLink name="users" global="UserDatabase" 
type="org.apache.catalina.UserDatabase"/> 

</Context>


4、现在就可以通过url访问每个虚拟主机的控制台了,输入:http://dls.wsy.com/manager/html 或  http://zd.wsy.com/manager/html 可以对两个项目进行管理,截图如下:


5、配置到此就已经结束了,关于tomcat控制台设置密码等请查阅其他资料,在此不做描述,若有更好的建议或意见,欢迎贴出来,或Q:296954857

package servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import Dao.AddStudentDao; import Dao.UpdateStudentDao; public class UpdateStudentServlet extends HttpServlet{ @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //解决中文乱码问题 req.setCharacterEncoding("utf-8"); resp.setContentType("text/html;charset=utf-8"); //获取前台页面的数据 String sid = req.getParameter("sid"); System.out.println(sid); String sname = req.getParameter("sname"); String sage = req.getParameter("sage"); //调用dao的插入学生的方法 UpdateStudentDao asd = new UpdateStudentDao(); int rs = asd.updateStudent(sid, sname, sage); if(rs!=0){ System.out.println("更新成功"); req.getRequestDispatcher("slist").forward(req, resp); }else{ System.out.println("更新失败"); } } } package Dao; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import com.mysql.jdbc.Connection; import javaBean.Student; import test.DBUtil; public class AddStudentDao { public int addStudent(String sid,String sname,String sage){ int rs=0; Connection con = (Connection) DBUtil.getCon(); String sql="insert into student values(?,?,?)"; try{ PreparedStatement ps = con.prepareStatement(sql); ps.setString(1, sid); ps.setString(2, sname); int sage1 = Integer.parseInt(sage); ps.setInt(3, sage1); rs = ps.executeUpdate(); }catch (SQLException e){ e.printStackTrace(); } return rs; } } <servlet> <servlet-name>updateStudent</servlet-name> <servlet-class>servlet.UpdateStudentServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>updateStudent</servlet-name> <url-pattern>/updateStudent</url-pattern> <form action="updateStudent" method="post"> <table> <tr> <td> 学号:<input type="text" name=sid/> </td> </tr> <tr> <td> 姓名:<input type="text" name=sname/> </td> </tr> <tr> <td> 年龄:<input type="text" name=sage/> </td> </tr> </table> <tr> <td> <input type="submit"/> <input type="reset"/> </td> </tr> </form> 这是根据MVC思想的更新线路的代码,问题是405,http上面本应该到相应.jsp文件,实际就是action中updateStudent而已然后页面出现405错误,控制台是更新失败,深入排查doPost下面System了没有输出,在servlet中的String sid = req.getParameter("sid");下面System.out.println(sid)为空,你给出的是没有调用doPost方法是为什么,什么意思
11-14
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值