http://chaoji-liangbin.blog.163.com/blog/static/25239212201082791033618/
参考网站:
http://suky.javaeye.com/blog/713687
http://blog.csdn.net/mengfanpp/archive/2009/04/22/4101333.aspx
软件清单:
Apache: httpd-2.2.15-win32-x86-openssl-0.9.8m-r2.msi
Jk: mod_jk-1.2.30-httpd-2.2.3.so
JBoss4.3.X(1台)
Tomcat6.0.18(2台)
1、 Apache产品的安装
打开httpd-2.2.15-win32-x86-openssl-0.9.8m-r2.msi安装文件,按照操作,点击下一步,在
界面,输入域名,服务名和Email(这个可以随意乱写)
最后点击安装,安装完毕以后,默认已经启动了apache,打开ie,输入:
http://localhost/或http://localhost/index.html
出现It Works表示安装成功。
Apache的启动与关闭可以通过Apache Server Monitor管理(在安装菜单中打开)
补充说明:绿色版的apache的启动与关闭(网上查的,未验证,因为我本机使用的是安装版的)
对于绿色版的apache,可以通过命令行来启动apache
打开命令行,将目录切换到%apache%/bin目录下,
先安装apache服务:
运行:apache -k install
Apache的启动:
net start apache2
Apache的关闭:
net stop apache2
卸载apache服务:
apache -k uninstall
2、 jk的安装
将mod_jk-1.2.30-httpd-2.2.3.so 文件拷贝到%Apache%/conf/modules文件夹下,更名为mod_jk.so,这是为了命名统一规范,方便以后配置。
Jk安装完毕。
3、 一台服务器上同时启动多个tomcat
如果一台服务器仅启动一个tomcat,且能够正常启动,端口与JBoss不冲突,则本小节可以忽略。则依照下文,修改三个端口即可。
如果一台服务器需要启动多个tomcat,仅需更改tomcat下的三个端口即可,防止端口冲突。
打开%tomcat%/conf/server.xml文件,依次找到以下三段:
<Connector port="8877" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
……………….
<Server port="8005" shutdown="SHUTDOWN">
……………….
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
修改该三个端口(8877、8005、8009),使得每个tomcat端口不冲突即可。
修改完毕,若没有端口冲突,则每个tomcat可以正常启动。
4、一台服务器上同时启动多个JBoss
4.1 配置server-binding.xml文件
若服务器仅使用一台JBoss,且能正常启动,不与Tomcat冲突,则本小节可以忽略。若有冲突,则建议修改Tomcat的端口(JBoss修改端口较为多且复杂)。
若服务器使用多台JBoss,则需要更改JBoss的端口,使得每个JBoss使用端口不一样,方能同时启动多个JBoss。
对于JBoss的端口,JBoss提供了mbean来统一管理多实例配置。即全部端口都统一管理。
将%JBoss%/jboss-as/docs/examples/binding-manager文件夹下的端口配置模板
sample-bindings.xml文件拷贝到%JBoss%/jboss-as/server文件下,命名为
server-bindings.xml,这样做是为了统一管理,方便以后配置。
4.2 对server-binding.xml的说明
打开server-bindings.xml这个文件,可以发现,里面提供了4个端口配置,分别是
Ports-default
Prots-01
Ports-02
Ports-03
即有四组端口,但同时,看该文件开头,
也就是说,只有ports-default, ports-01, ports-02三个端口可以在同一台机器上使用,实际上一台机器,已经配置好的端口只有3组,在原有配置上,一台机器只能同时启动3个jboss,对于超过3个JBoss ,需要自己去再定义一组端口。
以下提供第四组端口:
<!-- ********************************************************** -->
<!-- * ports-04 * -->
<!-- ********************************************************** -->
<server name="ports-04">
<!-- EJB3 Remoting Connector ejb3.deployer/META-INF/jboss-service.xml -->
<service-config name="jboss.remoting:type=Connector,name=DefaultEjb3Connector,handler=ejb3"
delegateClass="org.jboss.services.binding.AttributeMappingDelegate">
<delegate-config>
<attribute name="InvokerLocator">socket://${jboss.bind.address}:13873</attribute>
</delegate-config>
<binding port="13873"/>
</service-config>
<!-- ********************* jboss-service.xml ****************** -->
<service-config name="jboss:service=Naming"
delegateClass="org.jboss.services.binding.AttributeMappingDelegate"
>
<delegate-config portName="Port" hostName="BindAddress">
<attribute name="RmiPort">11098</attribute>
</delegate-config>
<binding port="11099" host="${jboss.bind.address}"/>
</service-config>
<service-config name="jboss:service=WebService"
delegateClass="org.jboss.services.binding.AttributeMappingDelegate"
>
<delegate-config portName="Port"/>
<binding port="18083"/>
</service-config>
<service-config name="jboss:service=invoker,type=jrmp"
delegateClass="org.jboss.services.binding.AttributeMappingDelegate"
>
<delegate-config portName="RMIObjectPort"/>
<binding port="14444"/>
</service-config>
<service-config name="jboss:service=invoker,type=pooled"
delegateClass="org.jboss.services.binding.AttributeMappingDelegate"
>
<delegate-config portName="ServerBindPort"/>
<binding port="14445"/>
</service-config>
<!-- ********************* cluster-service.xml **************** -->
<service-config name="jboss:service=HAJNDI"
delegateClass="org.jboss.services.binding.AttributeMappingDelegate">
<delegate-config portName="Port" hostName="BindAddress">
<attribute name="RmiPort">11101</attribute>
</delegate-config>
<binding port="11100" host="${jboss.bind.address}"/>
</service-config>
<service-config name="jboss:service=invoker,type=jrmpha"
delegateClass="org.jboss.services.binding.AttributeMappingDelegate">
<delegate-config portName="RMIObjectPort"/>
<binding port="14444"/>
</service-config>
<service-config name="jboss:service=invoker,type=pooledha"
delegateClass="org.jboss.services.binding.AttributeMappingDelegate">
<delegate-config portName="ServerBindPort"/>
<binding port="14448"/>
</service-config>
<!-- ********************* iiop-service.xml ****************** -->
<service-config name="jboss:service=CorbaORB"
delegateClass="org.jboss.services.binding.AttributeMappingDelegate"
>
<delegate-config portName="Port"/>
<binding port="13528"/>
</service-config>
<!-- ********************* jmx-rmi-adaptor.sar **************** -->
<service-config name="jboss.jmx:type=Connector,name=RMI"
delegateClass="org.jboss.services.binding.AttributeMappingDelegate"
>
<delegate-config portName="RMIObjectPort"/>
<binding port="29001"/>
</service-config>
<!-- ********************* snmp-adaptor.sar ****************** -->
<service-config name="jboss.jmx:name=SnmpAgent,service=trapd,type=logger"
delegateClass="org.jboss.services.binding.AttributeMappingDelegate"
>
<delegate-config portName="Port"/>
<binding port="11162"/>
</service-config>
<service-config name="jboss.jmx:name=SnmpAgent,service=snmp,type=adaptor"
delegateClass="org.jboss.services.binding.AttributeMappingDelegate"
>
<delegate-config portName="Port"/>
<binding port="11161"/>
</service-config>
<!-- ********************* jbossmq-service.xml **************** -->
<!-- JMS related services -->
<service-config name="jboss.mq:service=InvocationLayer,type=UIL2"
delegateClass="org.jboss.services.binding.AttributeMappingDelegate"
>
<delegate-config portName="ServerBindPort"/>
<binding port="18093"/>
</service-config>
<!-- ********************* jbossmq-httpil.sar **************** -->
<service-config name="jboss.mq:service=InvocationLayer,type=HTTP"
delegateClass="org.jboss.services.binding.AttributeMappingDelegate"
>
<delegate-config portName="URLPort"/>
<binding port="8083"/>
</service-config>
<!-- ********************* hajndi-jms-ds.xml **************** -->
<!-- The JMS provider loader -->
<service-config name="jboss.jms:service=JMSProviderLoader,name=HAJNDIJMSProvider"
delegateClass="org.jboss.services.binding.AttributeMappingDelegate">
<!--
MAKE SURE java.naming.provider.url
PORT IS SAME AS HA-JNDI ABOVE !!!
-->
<delegate-config>
<attribute name="Properties"><![CDATA[
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
java.naming.provider.url=${jboss.bind.address:localhost}:11100
jnp.disableDiscovery=false
jnp.partitionName=${jboss.partition.name:DefaultPartition}
jnp.discoveryGroup=${jboss.partition.udpGroup:230.0.0.4}
jnp.discoveryPort=1102
jnp.discoveryTTL=16
jnp.discoveryTimeout=5000
jnp.maxRetries=1
]]>
</attribute>
</delegate-config>
<!-- NOTE: YOU MUST ADD THIS ELEMENT, BUT THE VALUE DOESN'T MATTER
BE SURE THE CORRECT VALUE IS IN java.naming.provider.url ABOVE -->
<binding port="11100"/>
</service-config>
<!-- **************** http-invoker.sar & httpha-invoker.sar*************** -->
<!-- EJBInvoker -->
<service-config name="jboss:service=invoker,type=http"
delegateClass="org.jboss.services.binding.AttributeMappingDelegate"
>
<delegate-config>
<attribute name="InvokerURLSuffix">:${port}/invoker/EJBInvokerServlet</attribute>
</delegate-config>
<!--
MUST BE THE SAME AS
TOMCAT HTTP CONNECTOR BELOW !!!
-->
<binding port="8083"/>
</service-config>
<!-- JMXInvoker -->
<service-config name="jboss:service=invoker,type=http,target=Naming"
delegateClass="org.jboss.services.binding.AttributeMappingDelegate"
>
<delegate-config>
<attribute name="InvokerURLSuffix">:${port}/invoker/JMXInvokerServlet</attribute>
</delegate-config>
<!--
MUST BE THE SAME AS
TOMCAT HTTP CONNECTOR BELOW !!!
-->
<binding port="8083"/>
</service-config>
<!-- readonly JMXInvoker -->
<service-config name="jboss:service=invoker,type=http,target=Naming,readonly=true"
delegateClass="org.jboss.services.binding.AttributeMappingDelegate"
>
<delegate-config>
<attribute name="InvokerURLSuffix">:${port}/invoker/readonly/JMXInvokerServlet</attribute>
</delegate-config>
<!--
MUST BE THE SAME AS
TOMCAT HTTP CONNECTOR BELOW !!!
-->
<binding port="8083"/>
</service-config>
<!-- **************** httpha-invoker.sar*************** -->
<!-- EJBInvokerHA -->
<service-config name="jboss:service=invoker,type=httpHA"
delegateClass="org.jboss.services.binding.AttributeMappingDelegate"
>
<delegate-config>
<attribute name="InvokerURLSuffix">:${port}/invoker/EJBInvokerHAServlet</attribute>
</delegate-config>
<binding port="8083"/>
</service-config>
<!-- JMXInvokerHA -->
<service-config name="jboss:service=invoker,type=http,target=HAJNDI"
delegateClass="org.jboss.services.binding.AttributeMappingDelegate"
>
<delegate-config>
<attribute name="InvokerURLSuffix">:${port}/invoker/JMXInvokerHAServlet</attribute>
</delegate-config>
<binding port="8083"/>
</service-config>
<!-- ********************* jboss-ws4ee.sar **************** -->
<!-- Web Service related services -->
<service-config name="jboss.ws4ee:service=AxisService"
delegateClass="org.jboss.services.binding.AttributeMappingDelegate"
>
<delegate-config portName="WebServicePort" hostName="WebServiceHost"/>
<binding port="8083" host="${jboss.bind.address}"/>
</service-config>
<!-- ********************* remoting **************** -->
<!-- *** remoting connector *** -->
<service-config name="jboss.remoting:service=Connector,transport=socket"
delegateClass="org.jboss.services.binding.XSLTConfigDelegate">
<delegate-config>
<xslt-config configName="Configuration"><![CDATA[
<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version='1.0'>
<xsl:output method="xml" />
<xsl:param name="port"/>
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="attribute[@name='serverBindPort']">
<attribute type="java.lang.String" name="serverBindPort"><xsl:value-of select='$port'/></attribute>
</xsl:template>
<xsl:template match="*|@*">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
]]>
</xslt-config>
</delegate-config>
<binding port="14446" />
</service-config>
<!-- ********************* hsqldb-ds.xml ********************** -->
<!-- Hypersonic related services
Only if using TCP setup (local file setup by default)
<service-config name="jboss.jca:service=ManagedConnectionFactory,name=DefaultDS"
delegateClass="org.jboss.services.binding.XSLTConfigDelegate"
>
<delegate-config>
<xslt-config configName="ManagedConnectionFactoryProperties"><![CDATA[
<xsl:stylesheet
xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version='1.0'>
<xsl:output method="xml" />
<xsl:param name="host"/>
<xsl:param name="port"/>
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="config-property[@name='ConnectionURL']">
<config-property type="java.lang.String" name="ConnectionURL">jdbc:hsqldb:hsql://<xsl:value-of select='$host'/>:<xsl:value-of select='$port'/></config-property>
</xsl:template>
<xsl:template match="*|@*">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
]]>
</xslt-config>
</delegate-config>
<binding host="localhost" port="1701" />
</service-config>
<service-config name="jboss:service=Hypersonic"
delegateClass="org.jboss.services.binding.AttributeMappingDelegate"
>
<delegate-config portName="Port" />
<binding port="1701" />
</service-config>
-->
<!-- ********************* tomcat ********************** -->
<service-config name="jboss.web:service=WebServer"
delegateClass="org.jboss.services.binding.XSLTFileDelegate"
>
<delegate-config>
<xslt-config configName="ConfigFile"><![CDATA[
<xsl:stylesheet
xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version='1.0'>
<xsl:output method="xml" />
<xsl:param name="port"/>
<xsl:variable name="portAJP" select="$port - 71"/>
<xsl:variable name="portHttps" select="$port + 363"/>
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match = "Connector">
<Connector>
<xsl:for-each select="@*">
<xsl:choose>
<xsl:when test="(name() = 'port' and . = '8083')">
<xsl:attribute name="port"><xsl:value-of select="$port" /></xsl:attribute>
</xsl:when>
<xsl:when test="(name() = 'port' and . = '8009')">
<xsl:attribute name="port"><xsl:value-of select="$portAJP" /></xsl:attribute>
</xsl:when>
<xsl:when test="(name() = 'redirectPort')">
<xsl:attribute name="redirectPort"><xsl:value-of select="$portHttps" /></xsl:attribute>
</xsl:when>
<xsl:when test="(name() = 'port' and . = '8443')">
<xsl:attribute name="port"><xsl:value-of select="$portHttps" /></xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="{name()}"><xsl:value-of select="." /></xsl:attribute>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
<xsl:apply-templates/>
</Connector>
</xsl:template>
<xsl:template match="*|@*">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
]]>
</xslt-config>
</delegate-config>
<binding port="8083"/>
</service-config>
<!-- ********************* jboss messaging ********************** -->
<service-config name="jboss.messaging:service=Connector,transport=bisocket"
delegateClass="org.jboss.services.binding.AttributeMappingDelegate">
<delegate-config>
<attribute name="Configuration"><![CDATA[
<config>
<invoker transport="bisocket">
<attribute name="marshaller" isParam="true">org.jboss.jms.wireformat.JMSWireFormat</attribute>
<attribute name="unmarshaller" isParam="true">org.jboss.jms.wireformat.JMSWireFormat</attribute>
<attribute name="dataType" isParam="true">jms</attribute>
<attribute name="socket.check_connection" isParam="true">false</attribute>
<attribute name="serverBindAddress">${jboss.bind.address}</attribute>
<attribute name="serverBindPort">14457</attribute>
<attribute name="clientSocketClass" isParam="true">org.jboss.jms.client.remoting.ClientSocketWrapper</attribute>
<attribute name="serverSocketClass">org.jboss.jms.server.remoting.ServerSocketWrapper</attribute>
<attribute name="numberOfCallRetries" isParam="true">1</attribute>
<attribute name="pingFrequency" isParam="true">214748364</attribute>
<attribute name="pingWindowFactor" isParam="true">10</attribute>
<attribute name="onewayThreadPool">org.jboss.jms.server.remoting.DirectThreadPool</attribute>
<attribute name="stopLeaseOnFailure" isParam="true">true</attribute>
<attribute name="clientLeasePeriod" isParam="true">10000</attribute>
<attribute name="validatorPingPeriod" isParam="true">10000</attribute>
<attribute name="validatorPingTimeout" isParam="true">5000</attribute>
<attribute name="failureDisconnectTimeout" isParam="true">0</attribute>
<attribute name="callbackErrorsAllowed">1</attribute>
<attribute name="registerCallbackListener">false</attribute>
<attribute name="useClientConnectionIdentity" isParam="true">true</attribute>
<attribute name="timeout" isParam="true">0</attribute>
<attribute name="numberOfRetries" isParam="true">10</attribute>
<attribute name="JBM_clientMaxPoolSize" isParam="true">200</attribute>
<attribute name="callbackTimeout">10000</attribute>
</invoker>
<handlers>
<handler subsystem="JMS">org.jboss.jms.server.remoting.JMSServerInvocationHandler</handler>
</handlers>
</config>
]]></attribute>
</delegate-config>
<binding port="14457"/>
</service-config>
</server>
将该组端口拷贝到server-bindings.xml文件中端口与端口之间即可作为新的一组端口(注意不能拷贝到最后),第四组端口(ports-04)使用的http端口是8083,如果要使用该组端口,则使用了ports-default的端口所在的jboss要修改ports-default中的8083端口(有冲突),我本人是改为8983。
4.3 配置端口组
打开%JBoss%/jboss-as/server/default/conf下的jboss-service.xml文件,找到
<mbean code="org.jboss.services.binding.ServiceBindingManager"
name="jboss.system:service=ServiceBindingManager">
<attribute name="ServerName">ports-04</attribute>
<attribute name="StoreURL">${jboss.home.url}/server/server-bindings.xml</attribute>
<attribute name="StoreFactoryClassName">
org.jboss.services.binding.XMLServicesStoreFactory
</attribute>
</mbean>
这段,取消掉这段的注释,同时修改端口和server-bindings路径
,一个JBoss对应一个端口,避免两个JBoss使用同一个端口。
同时,还需要修改%JBoss%/jboss-as/server/default/deploy/jboss-web.deployer下的server.xml文件,修改里面的HTTP端口,与之前对应的端口组里的HTTP端口一致,如下图:
%JBoss%/jboss-as/server/default/deploy/jboss-web.deployer下的server.xml
%JBoss%/jboss-as/server/server-bindings.xml(http端口在该文件多个地方出现,要注意统一,如图)
3.4.3 修改JBoss端口
当为每个需要启动的jboss配置好不同的端口组(ports-default,ports-01,ports-02,ports-04)以后,这里的每组端口中,http端口分别是:8080,8180,8280,8380,如果需要修改http端口,请参考上一节(3.4.2),修改%JBoss%/jboss-as/server/default/deploy/jboss-web.deployer下的server.xml 中定义的http端口和%JBoss%/jboss-as/server/server-bindings.xml文件下的http端口(该端口在server-bindings.xml有多处地方出现,需要一并修改)。
注意:8083这个端口在JBoss端口组ports-default这组端口中有使用到,如果需要使用到的http端口中有8083这个端口,则要在使用到ports-default这组端口中的JBoss中去修改8083这个端口(本人本机是将该8083端口改成8983),否则可能会报8083端口冲突而启动多个jboss实例失败。
至此,多个JBoss实例部署完成。同时启动多个JBoss,启动成功。
3.5 Apache配置
在一台机器能同时运行多个tomcat和多个jboss前提下,开始部署Apache,这里以一个JBoss和两个Tomcat,三个项目(TestJBoss,TestJBossB,TestJBossC)为例,TestJBoss、TestJBossB部署在两个tomcat下,TestJBossC部署在jboss下,其他多个服务器和多个项目具体可以参考以下配置方法,同样可以实现多个Tomcat和多个JBoss配置,方法雷同。
1、在%Apache%/conf下新建mod_jk.conf,workers.properties文件
其中mod_jk.conf的内容及注释如下:
############################
#加载mod_jk Module
LoadModule jk_module modules/mod_jk.so
#指定 workers.properties文件路径
JkWorkersFile conf/workers.properties
#指定那些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器
#JkMount /* controller
#指定/TestA/*请求交给tomcat1这个work处理,"tomcat1"在workers.propertise里指定
JkMount /TestA/* tomcat1
#指定/TestB/*请求交给tomcat2这个work处理,"tomcat2"在workers.propertise里指定
JkMount /TestB/* tomcat2
#指定/TestC/*请求交给jboss1这个work处理,"jboss1"在workers.propertise里指定
JKMount /TestC/* jboss1
################################
其中/TestA/*,/TestB/*,/TestC/*是项目访问路径,根据具体项目而定,如需要增加一个访问路径,则只需要后面按照:
JKMount 项目访问路径 worker节点
这种模式添加即可。
workers.properties的内容如下:
#server 列表
worker.list = tomcat1,tomcat2,jboss1
#========tomcat1========
#ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcat1.port=8009
#tomcat的主机地址,
worker.tomcat1.host=192.168.5.24
worker.tomcat1.type=ajp13
#========tomcat2========
#ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcat2.port=8010
#tomcat的主机地址
worker.tomcat2.host=192.168.5.24
worker.tomcat2.type=ajp13
#========jboss1========
#ajp13 端口号,在jboss下server.xml配置,默认8009
worker.jboss1.port=8011
#jboss的主机地址,
worker.jboss1.host=192.168.5.24
worker.jboss1.type=ajp13
tomcat1、tomcat2、jboss1是分发节点,名字可以随意定义,但需要与上文定义的文件mod_jk.conf中的节点分发管理相对应(如:JkMount /TestB/* tomcat2中的tomcat2节点
),需要指定ajp端口,节点对应的主机地址,该ajp端口与对应的服务器(tomcat或jboss)相对应。(参考下文tomcat和jboss的服务器的端口修改)
最后,在%Apache%/conf下的httpd.conf文件最后添加一句:
Include "conf/mod_jk.conf"
如图:
作用是将上面配置的mod_jk.conf添加进配置文件中。
3.6 服务器上(tomcat和jboss)的配置
对于tomcat服务器,需要加载项目,在tomcat服务器上,打开%tomcat%/conf/server.xml文件,加载项目,如图:
之后,还需要修改tomcat的ajp端口,找到
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
将8009改成与worker.properties文件中定义的相对应即可。
对于jboss服务器,需要加载项目,在jboss服务器上,打开%JBoss%/ /server/default/deploy/jboss-web.deployer下,打开server.xml文件,修改ajp端口:
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8011" address="${jboss.bind.address}" protocol="AJP/1.3"
emptySessionPath="true" enableLookups="false" redirectPort="8443" />
防止端口使用冲突而不能正常启动,其中,ajp端口也是与worker.properties文件中定义的相对应。
之后,再加载对应项目:
<Context path="/TestC" docBase="D:/project/TestJBossC"/>
如图:
启动jboss,启动tomcat,重启apache,访问http://localhost/TestA/,能正常运行项目:
部署成功。
3.7 配置Apache的ssl
SSL(Secure Socket Layer): 是为Http传输提供安全的协议,通过证书认证来确保客户端和网站服务器之间的数据是安全。
这里使用的apache本身带有ssl功能。
先在命令行切换到%apache%/bin目录下
3.7.1 生成服务器Apache的一个RSA私钥
运行:
openssl genrsa –out server.key 1024
生成了一个1024字节的文件server.key,生成证书签署请求CSR
3.7.2生成签署申请
运行:
openssl req -new -out server.csr -key server.key -config ../conf/openssl.cnf
其中,
Country Name:两个字母的国家代号
State or Province Name:省份名称
Locality Name:城市名称
Organization Name:公司名称
Organizational Unit Name:部门名称
Common Name:你的姓名
Email Address:地址
依次对应输入如图
此时生成签署文件server.csr.
3.7.3生成CA私钥
运行:
openssl genrsa -out ca.key 1024
此时,会在bin目录下产生ca.key文件
3.7.4利用CA的私钥产生CA自签署证书
运行:
openssl req -new -x509 -days 365 -key ca.key -out ca.crt -config ../conf/openssl.cnf
3.7.5 CA为网站服务器签署证书
在bin目录下创建demoCA文件夹,在该文件夹下创建以下文件:index.txt和serial文件,其中serial内容为01,index.txt为空,以及文件夹 newcerts,
此后,在命令行运行:
openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config ../conf/openssl.cnf
依次输入y,
即可生成server.crt文件,该文件在%apache%/bin目录下
3.7.6将 server.crt,server.key复制到%apache%/ conf文件夹下
3.7.7启用apache的ssl功能
打开%Apache%/conf/httpd.conf配置文件,去掉下面两句前的注释
LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-ssl.conf
如图:
修改%Apache2%/conf/extra 下的httpd-ssl.conf文件里的两个字段:
SSLCertificateFile "D:/Apache2.2/conf/server.crt"
SSLCertificateKeyFile "D:/Apache2.2/conf/server.key"
修改里面的server.crt和server.key的正确路径。
重启apache,访问https://192.168.5.24/会出现安全认证,点击“是”,出现
界面,表示apache的ssl启动成功。
3.7.8 利用apache的ssl功能
打开%Apache%/conf/extra/ httpd-ssl.conf文件(先前配置ssl时已经配置过一次,这次是加项目路径)
找到
DocumentRoot "D:/Apache2.2/htdocs"
ServerName www.gdie.com:443
ServerAdmin admin@gdie.com
这三行附近,在其后添加以下内容:
JkMount /TestA/* tomcat1
JkMount /TestB/* tomcat2
JkMount /TestC/* jboss1
其中类似/TestA/* 是指项目访问路径,tomcat1是节点名字(在worker.properties有配置)
启动服务器(tomcat和jboss),打开ie,输入https://192.168.5.24/TestA/
显示如下图所示,配置成功。
其他项目类似。