3.2.4. 新建www.a.com.conf文件
位置:$apache_base/conf/vhost/www.a.com.conf
加入以下代码(根据情况做相应修改)
- #设置虚拟主机
- <VirtualHost *:80>
- ServerAdmin www.a.com
- DocumentRoot E:\\a\\
- ServerName www.a.com
- DirectoryIndex index.html
- ErrorLog logs/a-error_log.txt
- # 根目录,能访问所有
- <Directory E:\\a\\/>
- Options FollowSymLinks
- AllowOverride None
- Order deny,allow
- allow from all
- </Directory>
- # WEB-INF 目录,禁止访问
- <Directory E:\\a\\WEB-INF>
- deny from all
- </Directory>
- # META-INF 目录,禁止访问
- <Directory E:\\a\\/META-INF>
- deny from all
- </Directory>
- # 下面配置为静态资源全部交由apache处理,其他资源由tomcat处理
- JkMount /* a_worker
- JkUnmount /*.jpg a_worker
- JkUnmount /*.png a_worker
- JkUnmount /*.gif a_worker
- JkUnmount /*.bmg a_worker
- JkUnmount /*.html a_worker
- JkUnmount /*.htm a_worker
- #JkUnmount /*.js a_worker
- JkUnmount /*.css a_worker
- JkUnmount /*.xml a_worker
- JkUnmount /*.swf a_worker
- </VirtualHost>
说明:
同学的网站使用了struts2
框架,但不知道匹配规则是啥,所以我就配置所有请求都通过tomcat
处理,下面的静态资源配置则通过apache
处理。而且同学使用了dwr
框架,好像js
文件不能通过apache
处理,所有js
那个就注释掉了。
都配置完成了。重启apache
服务,不出错就说明配置没问题了。
访问域名www.a.com
(如果没做dns
解析的就修改hosts
文件吧)。
OK
,成功了。
3.3. 多个web项目
如果这台服务器的一个tomcat
运行着多个web
项目时。如果还想用到mok_jk
模块,就只能使用tomcat
的虚拟主机了。配置大致相同。
tomcat
的server.xml
文件
将之前的Context
删掉,加入两个web
项目的虚拟主机配置
- <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
- </Host>
- <Host name="www.a.com" appBase="webapps">
- <Context path="" docBase="E:\\a\\" />
- </Host>
- <Host name="www.b.com" appBase="webapps">
- <Context path="" docBase="E:\\b\\" />
- </Host>
workers.properties 文件
增加一个worker
配置
- worker.list=a_worker,b_worker
- worker.a_worker.port=8009
- worker.a_worker.host=www.a.com
- worker.a_worker.type=ajp13
- worker.a_worker.socket_keepalive=True
- worker.b_worker.port=8009
- worker.b_worker.host=www.b.com
- worker.b_worker.type=ajp13
- worker.b_worker.socket_keepalive=True
httpd.conf 文件
导入虚拟主机文件
- # 虚拟主机配置
- NameVirtualHost *:80
- Include conf/vhost/www.a.com.conf
- Include conf/vhost/www.b.com.conf
重新启动tomcat
和apache
。都成功则apache+tomcat
整合多个项目完成。
4.apache + tomcat + mod_proxy_ajp
mod_proxy_ajp是apache自带的ajp协议代理模块,只需要在apache配置文件中启用就能使用,无需下载。
注意:下面将的配置跟
3.
节讲的配置可能完全不一样。这两个版本之前最好先做一下原始备份,不然两种配置版本混合在一起可能造成冲突,带给自己不必要的麻烦。
4.1. 配置tomcat
这里没什么特别的地方,跟3.1.
节一样
注意:使用mod_proxy_ajp 可以使用tomcat的虚拟目录的配置方式
- <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
- <!-- a 项目 -->
- <Context path="/a" docBase="C:\\data\\a\\" sessionCookiePath=”/” />
- <!-- b 项目 -->
- <Context path="/b" docBase="C:\\data\\a\\" sessionCookiePath=”/” />
- </Host>
注意:上面的sessionCookiePath属性配置成“/”值的作用要说明一下。配置tomcat的虚拟目录,会导致项目中session的cookie的path字段跟context的path字段一致。如果只用tomcat就不会出现问题,只要跟其他web服务器整合时,访问contextpath就会变成“”””或“”/””,就跟tomcat的session cookie path不一致,会导致session无效。所以必须将tomcat的sessionCookiePath设置为“/”。
加不加这个属性的区别只需使用chrome,firefox浏览器查看响应头就清楚了。
4.2. 配置apache
mod_proxy_ajp是apache自带的ajp协议代理模块,只需要在apache配置文件中启用就能使用,无需下载
4.2.1. 配置httpd.conf
找到本文件中的下面加载模块代码,将前面的注释去掉
- # 启用 ajp 代理
- LoadModule proxy_module modules/mod_proxy.so
- LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
文件最后面继续导入虚拟主机配置
- # 虚拟主机配置
- NameVirtualHost *:80
- Include conf/vhost/www.a.com.conf
- Include conf/vhost/www.b.com.conf
4.2.2. 配置www.a.com.conf
这个文件跟3.2.4.
节最大的区别就是模块的不同(绿色部分)
- #设置虚拟主机
- <VirtualHost *:80>
- DocumentRoot C:\\data\\a\\
- ServerName www.a.com
- DirectoryIndex index.html
- ErrorLog logs/a-error_log.txt
- # 根目录,能访问所有
- <Directory C:\\data\\a\\>
- Options FollowSymLinks
- AllowOverride None
- Order deny,allow
- allow from all
- </Directory>
- # WEB-INF 目录,禁止访问
- <Directory C:\\data\\a\\WEB-INF>
- deny from all
- </Directory>
- # META-INF 目录,禁止访问
- <Directory C:\\data\\a\\META-INF>
- deny from all
- </Directory>
- # 下面配置为静态资源全部交由apache处理,其他资源由tomcat处理
- ProxyPassMatch .*\.jpg !
- ProxyPassMatch .*\.png !
- ProxyPassMatch .*\.gif !
- ProxyPassMatch .*\.bmg !
- ProxyPassMatch .*\.html !
- ProxyPassMatch .*\.htm !
- ProxyPassMatch .*\.js !
- ProxyPassMatch .*\.css !
- ProxyPassMatch .*\.xml !
- ProxyPassMatch .*\.xml !
- ProxyPass / ajp://localhost:8009/a/
- ProxyPa***everse / ajp://localhost:8009/a/
- </VirtualHost>
4.2.3. 配置www.b.com.conf
与www.a.com.conf
文件类似
配置完成后,重启tomcat
和apache
,页面又能访问了。
5.后记
同学的多个web
项目还是不能使用tomcat
的虚拟目录方式发布,可能是他的struts2
设置了contextpath
,导致重定向时路径出错。所以我帮同学的弄的还是tomcat
虚拟主机的配置方式。
本文也做我的整合备忘文档吧。
转载于:https://blog.51cto.com/hviki/998785