• IIS6网站批量迁移至IIS7经验分享


    迁移原因:公司服务器更换

    迁移环境:源服务器 windows2003 X86   IIS6        目标服务器:windows2008 X64  IIS7

    迁移过程:

    第一次迁移失败,作为简要记录,源服务器安装简易FTP,打开后把目录文件全部复制到目标服务器,后将数据备份后恢复至目标服务器,本以为会成功,但造成大量的服务器错误,部分二级页面无法打开,

    最终以失败告终。所以进行第二次尝试,如下:

    第二次:用IIS迁移工具,简单可靠,主要操作如下:

    最前:安装.net环境,两台都要安装相同的

    1、操作前先清空数据库LOG文件,我的一个LOG文件20多G,不清空将浪费很多时间 ,清空办法分离数据库,然后删除LOG文件,然后 附加数据库,附加时会提示无日志文件 ,将此项直接删除即可,附加后

    LOG文件为504K。

    2、下载 IIS迁移工具 可直接在官网上下载最新版X86或X64位(网页最下面有各个语言版本) 下载地址:http://www.iis.net/downloads/microsoft/web-deploy

       或者直接去我的网盘下载:(64位) http://pan.baidu.com/s/1o6p73tg    (32位)http://pan.baidu.com/s/1eQGmotO

    根据自己的系统类型在源和目标服务器安装合适版本的的web-deploy

    先在源服务器找到web-deploy安装目录,一般路径为C:Program Files (x86)IISMicrosoft Web Deploy V3 

    开始--运行 CMD 先进入如下所示的V3目录,输入 msdeploy -verb:getDependencies -source:webserver60  检测依赖关系

    再在目标服务器上运行以上命令检查依赖关系 ,如果不太一样,修改目标服务器的依赖关系 ,本次我的有一项不一样 我的少了<dependency name="WindowsAuthentication " />

    添加步骤如下:

    IIS 管理器 --身份验证 启用windows身份验证即可

    基本一致后进行迁移工作。

    1、在源服务器下运行以下命令 (我在D盘下建了IIS文件夹,可任意名)

    先执行msdeploy -verb:sync -source:webserver60 -dest:archivedir=d:iis,encryptPassword=password -whatif

    后执行msdeploy -verb:sync -source:webserver60 -dest:archivedir=d:iis,encryptPassword=password

    其中前一条命令多了个-whatif选项,这是用于显示该命令的预计执行结果,但不进行实际操作,这条命令执行无误后可以执行后一条命令,将整个站点导出到d盘iis目录下。

    2、将d盘iis目录里的所有内容拷贝到目的服务器,并在目的服务器上先后执行

    msdeploy -verb:sync -source:archivedir=d:iis,encryptPassword=password -dest:webserver60 -whatif

    和msdeploy -verb:sync -source:archivedir=d:iis,encryptPassword=password -dest:webserver60  将站点部署到IIS7上。这样就完成了整个站点的迁移。

    注意的几点事项:

    有可能会报服务器的错误

    大概注意以下几个地方:

    (1)托管管道模式 经典还是集成

    (2).NET环境  2.0还是4.0

    (3)web.config 此处<customErrors mode="RemoteOnly">

    (4)应用程序池-高级设置-启动32位应用程序 改为true

    最后记着要是数据库密码不一样,要在配置文件里把密码改正确。

    后记:

    迁移后发现首页是正常访问了,但由于原来的网站用到了伪静态,迁移后二级的伪静态无法正常显示,一直是调整经典和集成模式,最终发现经典模式无法解决此问题,最终我的解决办法如下:
    1.修改经典模式为集成模式

    2.修改web.config配置文件

    IIS7中增加如下内容:(该位置在</system.web>后增加的)

    把<system.web>中以下的的内容直接注释掉:

    <httpHandlers>
          <add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory,AjaxPro.2" />
          <add path="*.aspx" verb="GET" type="CoreClass.BuildHtmlDemo.ToHtmlHandler, CoreClass.BuildHtmlDemo" validate="false" />
          <add verb="*" path="*.html" type="System.Web.UI.PageHandlerFactory" />
        </httpHandlers>
        <httpModules>
          <add name="RewriteModule" type="CoreClass.BuildHtmlDemo.UrlRewriteModule, CoreClass.BuildHtmlDemo" />
          <add type="URLRewriter.RewriterModule, URLRewriter" name="RewriterModule" />
        </httpModules>

    在system.webserver中添加一份。

     <system.webServer>
    <modules>
    <add name="RewriteModule" type="CoreClass.BuildHtmlDemo.UrlRewriteModule, CoreClass.BuildHtmlDemo" />
    <add name="RewriterModule" type="URLRewriter.RewriterModule, URLRewriter" />
    </modules>
    <handlers>
    <add name="MyHandler" path="*.aspx" verb="GET" type="CoreClass.BuildHtmlDemo.ToHtmlHandler, CoreClass.BuildHtmlDemo" preCondition="integratedMode"/>
    </handlers>
    <validation validateIntegratedModeConfiguration="false" />
    </system.webServer>

  • 相关阅读:
    touch
    ls
    Linux基础
    errors
    strconv
    strings
    fmt
    os/exec
    笔记本连不上网怎么办
    笔记本连不上网怎么办
  • 原文地址:https://www.cnblogs.com/jeib/p/4457251.html
Copyright © 2020-2023  润新知