日期:2014-05-17  浏览次数:20922 次

vps下整合apache和tomcat实现多域名转发(二级域名转发),代理实现!

话说最近玩VPS和LINUX,linux本人也是刚刚接触,所以有很多东西都比较肤浅,还望读者见谅。

?

centos5.4的版本

?

昨天好像是写了tomcat和jdk的安装,这个比较简单,就不用说了。关键是安装起来以后要能用,使用vps的目的就是把所有的网站都过渡上来,包括PHP和jsp的 不排除以后有asp的存在,现在网站都运行稳定,而且j2ee那个系统一直是跑在万网的jsp虚拟主机上,所以不含糊的选择了centos,又php在linux中是默认裸支持,所以非常给力!

?

测试场景:现在有3个网站,分别采用不同程序语言开发,JSP ?PHP asp,现在需要实现2个域名访问不同的网站。默认环境已经安装了tomcat和apache(初始安装)。

apache默认端口80

tomcat默认端口8080

思路:整合TOMCAT和apache网上说有3种方法,JK方式,就是tomcat的connecter? 还有一种使用apahce2.x支持的代理模块方式,然后最后一种好像是AJP的方式。经过选择选用代理方式,先不管其他2种的优点和速度,这里实现结果特别重要。

?

代理模块需要apahce中的proxy_module modules/mod_proxy.so和LoadModule proxy_http_module modules/mod_proxy_http.so。这2个东西可以去apahce的官方下载到,也可以下载源码包来自己编译生成到/etc/httpd/modules下去。你ls下这个目录可以看到所有的模块都在这里。

?

然后在/usr/lib/httpd/modules下的模块会同步上面,意思就是说,只要前面的so生成成功,这里会自动多一个so文件。

?

打开/etc/httpd/conf/httpd.conf这个文件

vi?/etc/httpd/conf/httpd.conf

set nu //显示行号

:1000 跳转到1000行我这里是1000行,此处可以不用写,注意是Last line mode模式(按esc可切换)

?

首先找到NameVirtualHost *:80这句话,如果没有就查找NameVirtualHost,然后下面肯定有

?

<VirtualHost *:80>
    ServerAdmin xxx@163.com
    DocumentRoot /var/local/abc
    ServerName 域名1
    ServerAlias 也可以填域名1
    ProxyRequests Off
    ProxyPass / http://域名1/
    ProxyPassReverse / http://域名1/
    DirectoryIndex index.html index.jsp  首页!
</VirtualHost>
?

?

<VirtualHost *:80>
    ServerAdmin xxx@163.com
    DocumentRoot /var/local/abcd
    ServerName demo.abcd.net
    ServerAlias demo.abcd.net
    ProxyRequests Off
    ProxyPass / http://demo.abcd.net:8080/
    ProxyPassReverse / http://demo.abcd.net:8080/
    DirectoryIndex index.html index.jsp  首页!
</VirtualHost>
?

?

上面这个还是比较容易理解的,主要就是设置了一个东西,当域名(可以正常访问的)到这里的时候默认是访问80端口,所以上面是设置了当请求到该服务器时如何对域名进行转发。

第二个就是设置和tomcat的整合,当访问demo.abcd.net的时候,直接转发到服务器8080端口下去访问该域名,就相当于远程浏览器访问demo.abcd.net:8080了

查看一下端口lsof |grep tomcat和lsof -i:8080可以看到你想要的信息,lsof -i:8080是用来查看8080端口是谁在使用!

然后重新启动一下apache:service httpd restart 等待启动完成,OK

现在不急着访问,还需要设置一下tomcat

打开tomcat的service.xml ?我的在/usr/local/tomcat/conf/service.xml下。vi后输入:set nu显示行,这里你可以清晰的看到tomcat的配置:Connector中可以看出HTTP8080端口,然后AJP是8009端口。

下面找到engine这个标签,该文件只此一个标签。engine处理在Connector中接受到的所有客户请求!

可以看到defaulthost是localhost,这里无伤大雅,别去管它,当然你要设置成你的域名也可以。

其子标签host设置如下,name修改成域名,appbase就是程序路径,默认好像是webapps,就是tomcat默认源码发布的位置,这里可以设置成绝对路径没问题/usr/local/tomcat/webapps

host就是定义了一个虚拟主机,所以要实现单IP多域名的话就需要设置多个host,然后可以把appbase设置到程序目录下,访问的时候可直接到达每一个应用程序的根目录

host标签下添加Context,这个上下文定义可以参照

?

 <Context path="" docBase="/usr/local/tomcat/webapps" debug="1" privileged="true" reloadable="true">
        </Context>

?

?docbase是文档路径,path不填表示访问的时候默认是以域名转发到的路径为根路径,一般不用管它

?

然后保存退出:wq

?

这是需要重新启动一下tomcat

到达tomcat的bin目录下我这里是/usr/local/tomcat/bin/shutdown.sh ?运行这个然后再运行/usr/local/tomcat/bin/startup.sh启动,完成重启

?

此时在webapps下新建2个文件夹,表示2个不同的站点,然后放入index.html?

?

浏览器输入域名可以访问到不同的网站说明配置成功!

?

我这里是采用的2级域名。经过一番设置,没问题。希望可以有更多的进步!有兴趣朋友一起研究。

?