沿途

de 点点滴滴

导航

Windows + Apache 2.2 + mod_aspdotnet + mod_jk + Tomcat + fastcgi + PHP + wincache

  1. 【Apache】到 http://httpd.apache.org/ 下载 Windows 安装版。本文编写时,当前稳定版为 httpd-2.2.21-win32-x86-openssl-0.9.8r.msi ,安装到 C:\Apache2.2 。
     
  2. 【mod_aspdotnet】可以到 http://sourceforge.net/projects/mod-aspdotnet/ 下载 msi 安装版本。但本文编写时, mod_aspdotnet 存在一个 bug:当设置多个 cookie 时,只能有一个 cookie 成功。经过搜索,已有解决办法:http://sourceforge.net/tracker/?func=detail&aid=1744455&group_id=175077&atid=871785 ,需要自己编译。
     
    [下载代码] 于是,通过 svn co https://mod-aspdotnet.svn.sourceforge.net/svnroot/mod-aspdotnet mod-aspdotnet 下载源代码,按照前面说的修改办法进行修改相应代码。
    // WorkerRequest.h, Line 542
    // virtual void SendKnownResponseHeader(int index, String* value)
    if (index == HeaderContentType)

        ap_set_content_type(rr, poolval);
    else if(index == HeaderSetCookie)
        apr_table_addn(rr->headers_out, response_headers_name_c[index], poolval);
    else
        apr_table_setn(rr->headers_out, response_headers_name_c[index], poolval);

     
    [编译] 按照 mod_aspdotnet2/trunk/README.txt 所讲步骤进行编译。从“Visual Studio 2005 命令提示”开始运行,设置环境变量 set APACHE22_PATH=C:\Apache2.2,然后运行 devenv mod_aspdotnet.sln /useenv /build "Release 2.2" /project mod_aspdotnet 。编译得到两个输出: Apache.Web.dll 和 mod_aspdotnet.so
     
    [安装] 将 Apache.Web.dll 复制到 C:\Apache2.2\bin 目录下。执行 .NET 工具 gacutil.exe 将 Apache.Web.dll 注册到全局缓冲区。我使用的是 .NET 2.0,因此使用 2.0 版本中的 gacutil.exe 。将 mod_aspdotnet.so 复制到 C:\Apache2.2\modules 目录下,通过 Apache 配置文件启用。
     
  3. 【mod_aspdotnet】根据配置文档,配置 mod_aspdotnet 方式为: 
    <IfModule aspdotnet_module>

    AddHandler asp.net asax ascx ashx asmx aspx axd config cs csproj \
                       licx rem resources resx soap vb vbproj vsdisco webinfo

    AliasMatch "^/(?i)aspnet_client/system_web/(\d+)_(\d+)_(\d+)_(\d+)/(.*)" \
               "C:/Windows/Microsoft.NET/Framework/v$1.$2.$3/ASP.NETClientFiles/$4"

    <Directory "C:/Windows/Microsoft.NET/Framework/v*/ASP.NETClientFiles">
        Options FollowSymlinks
        Order allow,deny
        Allow from all
    </Directory>
    </IfModule>

     
    当某一个 VirtualHost 需要使用 .NET 支持时,在 VirtualHost 或全局添加:
        AspNetMount / "C:/Inetpub/Inetpub"

  4. 【mod_jk】到 http://tomcat.apache.org/connectors-doc/ 下载 mod_jk 在 windows 下的发行版,本文编写时,使用的是 mod_jk-1.2.31-httpd-2.2.3.so,复制到 C:\Apache2.2\modules 下,并在 Apache 中启用。配置与 Tomcat 之间的连接。配置方式为:
    httpd.conf
    <IfModule jk_module>
        JkWorkersFile conf/workers2.properties
        JkLogFile logs/mod_jk.log
        JkLogLevel info
        # Select the log format
        JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
        # JkRequestLogFormat set the request format
        JkRequestLogFormat "%w %V %T"
        HostnameLookups Off
    </IfModule>
    workers2.properties
    worker.list=loadbalancer,local

    #-------------------

    worker.loadbalancer.type=lb
    worker.loadbalancer.balance_workers=local
    worker.loadbalancer.sticky_session=false

    worker.template.host=127.0.0.1
    worker.template.port=8009
    worker.template.type=ajp13
    worker.template.lbfactor=1
    worker.template.ping_timeout=1000
    worker.template.ping_mode=A
    worker.template.socket_timeout=10
    worker.template.connection_pool_timeout=600

    worker.local.reference=worker.template
     
     
     
    当某一个 VirtualHost 需要启用 jsp 时,可在 VirtualHost 中配置:
        JkMount /*.jsp local
     
  5. 【fastcgi】【mod_fcgid】为了运行 PHP 脚本,采用 fasgcgi 方式。我没有选用 mod_fastcgi ,而改为选用的是 mod_fcgid,下载地址 http://httpd.apache.org/mod_fcgid/ 。 本文编写时,选用的版本是 mod_fcgid-2.3.6-win32-x86.zip 。在 Apache 中启用,配置方式为:
    <IfModule fcgid_module>
        AddHandler fcgid-script .php
        FCGIWrapper "C:/PHP5/php-cgi.exe" .php
        # 10M
        FcgidMaxRequestLen 10485760
    </IfModule>
     
  6. 【PHP】【Tomcat】安装方法不在此赘述。
     
  7. 【wincache】安装 wincache-1.0.1-5.2-nts-vc6-x86.exe 或者直接把 php_wincache.dll 复制到 C:\PHP5\ext ,并在 php.ini 中启用。
     

posted on 2011-10-26 14:15  史寿伟  阅读(1132)  评论(0编辑  收藏  举报