Apache_httpd+jk与tomcat和JBoss结合安装

来源:互联网 发布:信息学奥赛c语言 编辑:程序博客网 时间:2024/05/02 14:29

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/

显示如下图所示,配置成功。

 

其他项目类似。

原创粉丝点击