搭建全能服务器
这是一个很常见的场景,要在同一台服务器上部署多种语言开发的程序,并且每种语言处于各种原因要放在不同web容器中去运行,而且都要通过80端向外提供服务,例如:在同一台服务器上部署.net程序,java程序,php程序,都通过80端口向外提供web服务。处于这种场景就只能搭建全能服务器了。
结构图:
大致思路:
Apache 端口设置为:80
IIS 所有服务端口都设置为:8081
Tomcat 所有服务端口都设置为:8080
使用apache反向代理功能代理访问本地的IIS(8081)和Tomcat(8080)
- 安装apache。官网下载httpd-2.4.23-x64-vc14-r3,解压cmd进入bin目录,执行命令:
httpd.exe -k install -n apache
安装为Windows服务,名称为:apache
- 配置apache服务。例如apache安装在了D:\application_software\Apache那么:
<1> 找到D:\application_software\Apache\conf\httpd.conf文件,用记事本打开,找到:Define SRVROOT 这一项,将其右方的值改为 绝对路径(硬盘路径)
<2> 保证以下模块加载
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
<3>继续找,找到:Listene 80
若你的80端口被占用(可在cmd下用命令netstat -a查看),则将80端口改为别的,请在请在frogchou个人网站中搜索《80端口那点事》查找解决方案。
<4>修改Apache24\conf\extra 下的httpd-vhosts 文件
例如:
<VIRTUALHOST *:80>
ServerAdmin frogchou@126.com
ServerName iis.frogchou.com
DefaultLanguage zh-CN
AddDefaultCharset GB2312
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / http://localhost:8081/
ProxyPassReverse / http://localhost:8081/
ErrorLog logs/iis.frogchou.com_error_log
</VIRTUALHOST>
<VIRTUALHOST *:80>
ServerAdmin frogchou@126.com
ServerName tomcat.frogchou.com
DefaultLanguage zh-CN
AddDefaultCharset GB2312
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
ErrorLog logs/tomcat.frogchou.com_error_log
</VIRTUALHOST>
需要注意的是配置ServerName 、ProxyPass 和ProxyPassReverse
ServerName:用户通过那个域名访问服务器的。
ProxyPass:代理的路径,可以是本地,也可是其他服务器地址
ProxyPassReverse:后端服务器的地址,同上,可以防止后端服务器HTTP重定向造成的绕过反向代理的问题
2、IIS :修改IIS的所有应用的端口 为 8081
这里要注意防火墙的映射,如果防火墙没有将8081端口映射出去,在IIS中绑定域名时就不要选择任何IP地址了,选择* 即可,否则就要将相应IP路径下的防火墙做8081端口映射。
3、Tomcat :
修改Tomcat的所有应用的端口 为 8080
在Tomcat中配置虚拟目录并绑定域名 在tomcat\conf 中找到 server.xml
添加:
<Host name=”test1.tomcat.frogchou.com:8080″ appBase=”webapps” unpackWARs=”true” autoDeploy=”true” xmlValidation=”false” xmlNamespaceAware=”false”>
<Context path=”” docBase=”/test1″/>
</Host>
<Host name=”test2.tomcat.frogchou.com:8080″ appBase=”webapps” unpackWARs=”true” autoDeploy=”true” xmlValidation=”false” xmlNamespaceAware=”false”>
<Context path=”” docBase=”/test2″/>
</Host>
启动顺序建议:先启动apache 再启动IIS 和Tomcat
注意:启动apche,tomcat,或者IIS时可能出现端口被占用导致无法启动的问题,请参考
http://www.frogchou.com/?p=152 其他端口同理。