设为首页 收藏本站
查看: 809|回复: 0

[经验分享] 如何用Apache分发同一个服务器上的多个应用[本人亲自实践]

[复制链接]

尚未签到

发表于 2015-11-14 07:24:07 | 显示全部楼层 |阅读模式
  最近在项目中碰到一个问题,我们团队为了节约项目成本,从朋友那边借了一台服务器来跑我们的应用,但之前在这台服务器上面已经跑了一个tomcat的应用,占用了80端口,那么我们的应用就只能占用80以外的端口了,比如8080,这就导致了请求非常不友好,必须用类似http://www.bbb.com:8080来访问我们的应用。后来在Apache的功能支持下,实现了一台服务器上用同一个端口(80)分发到不同的应用,具体过程如下:
  第一步:准备工作下载相关软件
  1、Apache HTTP Server (httpd) 2.2.17下载
http://labs.renren.com/apache-mirror//httpd/binaries/win32/httpd-2.2.17-win32-x86-openssl-0.9.8o.msi
  
2、Tomcat6.0.32下载
http://labs.renren.com/apache-mirror/tomcat/tomcat-6/v6.0.32/bin/apache-tomcat-6.0.32-windows-x86.zip
  
3、mod_jk-1.2.31-httpd-2.2.3:http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.31/mod_jk-1.2.31-httpd-2.2.3.so
  
第二步:安装Apache(httpd-2.2.17-win32-x86-openssl-0.9.8o.msi)
  安装目录:d:/Apache2.2/
  1、此处注意,如果你本机已经装了iis并且占用80端口,务必先在服务中将iis停止或禁用。软件默认安装即可。安装过程中设置Network Domain和Server Name为localhost,
  设置你的email地址,下方会让你选择only for the current user或for all users。默认选择for all users。这样Apache就会占用80端口,并且做为一个系统服务开机自运
  行。
  2、安装完后,在系统"拖盘"处看见Apache的羽毛图标,如果机子本身已安装IIS,此时图标上为红色的圆点,是因为IIS和Apache在端口80上的重复,修改IIS端口为其它端口.或修
  改apache/conf下的httped.conf文件,修改"Listen 80" 中的80为其它.(本配修改了IIS端口,使得Apache的端口为80)
  3、解决不自动显示中文:编辑D:/Apache2.2/conf目录下配置文件httpd.conf。用记事本打开它并查找"AddDefaultCharset       ISO-8859-1",注释
  掉"AddDefaultCharset ISO-8859-1",即在"AddDefaultCharset ISO-8859-1"前加个"#"字符。然后在"#AddDefaultCharset       ISO-8859-1"下面添加如下三行:  
AddDefaultCharset       GB2312
DefaultLanguage       GB2312  
AddLanguage       zh-cn       .cn
  安装完成之后,你在浏览器中输入http://localhost,将会看到Apache的成功页面.Apache的主目录是d:/Apache/Apache2,此时Apache,已经运行,你可以在窗口的托盘看到他的
  图标,双击图标,在弹开的窗口选择"Open Apache Monitor",点Stop,停止Apaceh服务,因为下面要安装Tomcat和JK.
  
第三步:整合apache+tomcat安装
  把mmod_jk-1.2.31-httpd-2.2.3.so拷贝到D:/Apache2.2/modules/下
  在D:/apache2.2/conf/httpd.conf文件最后加入
  #设置Apache与Tomcat之间的连接,让Apache遇到jsp文件时,在后台将其交由Tomcat去处理
#加载 mod_jk 模块
LoadModule jk_module modules/mod_jk-1.2.31-httpd-2.2.3.so
  #指定tomcat监听配置文件地址
JkWorkersFile conf/workers.properties
  #指定日志存放位置
JkLogFile logs/mod_jk.log
  #指定日志级别
JkLogLevel debug
  # 指定 mod_jk 模块的日志格式
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]
  
第四步:在conf目录下创建workers.properties文件,内容如下:
  worker.list=tomcatA,tomcatB
  # localhost tomcatA
  worker.tomcatA.type = ajp13
worker.tomcatA.host = localhost
worker.tomcatA.port = 9009
worker.tomcatA.lbfactor = 50
worker.tomcatA.cachesize = 10
worker.tomcatA.cache_timeout = 600
worker.tomcatA.socket_keepalive = 1
worker.tomcatA.recycle_timeout = 300
  
# localhost tomcatB
worker.tomcatB.type = ajp13
worker.tomcatB.host = localhost
worker.tomcatB.port = 9019
worker.tomcatB.lbfactor = 50
worker.tomcatB.cachesize = 10
worker.tomcatB.cache_timeout = 600
worker.tomcatB.socket_keepalive = 1
worker.tomcatB.recycle_timeout = 300
  #指定apache通过什么端口提交给哪个tomcat
  
  第五步:修改tomcat下的server.xml
  
多个Tomcat的端口修改为了避免占用情况
  关闭端口:<Server port="XXXX" shutdown="SHUTDOWN">
  ajp11的端口: <Connector port="XXXX" protocol="AJP/1.3" redirectPort="8443" />
  修改 http 的端口:<Connector port="XXXX" protocol="HTTP/1.1" maxThreads="150" connectionTimeout="20000"  redirectPort="8443" />
  
Engine 主要是配置 jvmRoute 属性
  <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcatA">
  <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcatB">
  
  
第六步:在httpd.conf文件中增加虚拟主机配置
  #不可缺少,否则只有一个tomcat能运行
NameVirtualHost *:80
  <VirtualHost *:80>   
    ServerName www.aaa.com  
    ServerAlias  www.aaa.com   
    ErrorLog logs/aaa-error_log.txt  
    CustomLog logs/aaa-access_log.txt common  
    JkMount /* tomcatA
</VirtualHost>
  <VirtualHost *:80>   
    ServerName www.bbb.com  
    ServerAlias  www.bbb.com   
    ErrorLog logs/bbb-error_log.txt  
    CustomLog logs/bbb-access_log.txt common  
    JkMount /* tomcatB
</VirtualHost>
  注意一:NameVirtualHost 指定虚拟主机所使用的IP地址或域名,但是最好是IP地址。使用基于域名的虚拟主机时,NameVirtualHost是必要的指令。NameVirtualHost可以定义多个。
  注意二:所有符合NameVirtualHost或<VirtualHost>标签定义的请求,都会被作为虚拟主机处理,而主服务器将不理会。NameVirtualHost定义了而<VirtualHost>标签没有定义的的请求,服务器会找不到相应的虚拟主机而将无法处理。所以每个NameVirtualHost定义的参数至少要有一个<VirtualHost>相匹配。
  注意三:如果设置NameVirtualHost 或<VirtualHost>为*:80的话,所有针对80端口的请求,都会被虚拟主机处理,请求会根据域名指向某个虚拟主机。如果有来自 80端口的请求,而所请求的域名没有被配置为虚拟主机,那将指向第一个虚拟主机。这样主服务器将无法收到来自80端口的任何请求。为此也要为主服务器配置一个虚拟主机。
  注意四:JkMount /* jboss的意思是将该虚拟主机下的请求都转发给jboss这个worker(上面workers.properties中配置的)对应的应用
  6. 启动Apache
  7. 大功告成,可以用http://www.aaa.com和http://www.bbb.com分别访问两个不同的应用了
             版权声明:本文为博主原创文章,未经博主允许不得转载。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-138959-1-1.html 上篇帖子: Apache概述、配置文件、配置项 下篇帖子: 配置Apache实现url转发
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表