【问题标题】:How can I copy/clone a site on iis7如何在 iis7 上复制/克隆网站
【发布时间】:2011-07-16 04:05:45
【问题描述】:

我想制作我正在开发的 iis 网站的 dev、demo1、demo2 副本。我需要每个 iis 运行自己的代码库,但设置几乎相同。 Windows 7 Ultimate 中是否有一种简单的方法可以将我的 dev iis 克隆到新站点而无需完全重新配置它?为每个 iis 配置虚拟目录需要 20 分钟以上,所以这可以为我节省很多工作。

【问题讨论】:

    标签: iis-7 windows-7


    【解决方案1】:

    实际上上面的答案 - 编辑 ApplicationHost.config 只是完成了一半的工作。您还需要将新的 AppPools 添加到 applicationPools 节点。

    因此:

    1/.正如其他人提到的,首先复制您的 ApplicationHost.config 文件!我通常复制并重命名为“ApplicationHost_BACKUP_YYYY_MM_DD.config”

    2/.使用记事本(Windows 缓解 32 位与 64 位问题的最佳选择)。搜索要复制的站点(在我的情况下)“id="13"”。找到要复制的站点后。复制整个节点并在站点节点复制后粘贴。为其分配一个新的 ID。请务必先检查 IIS 中的站点以获取所有使用的 ID!还要确保给它一个新名称并更新复制部分中的所有 PATHS 和 APPPOOLS。请参见下面的示例。

    要复制的网站(当前):

    <site name="Reading List" id="13" serverAutoStart="true">
         <application path="/" applicationPool="Reading List">
             <virtualDirectory path="/" physicalPath="C:\inetpub\wwwroot\reading_list\http" />
         </application>              
         <bindings>
              <binding protocol="http" bindingInformation="*:80:readinglist.jsgroup.local" />
         </bindings>
    </site>
    

    复制网站(新):

    <site name="Reading List" id="14" serverAutoStart="true">
      <application path="/" applicationPool="Reading List 2">
          <virtualDirectory path="/" physicalPath="C:\inetpub\wwwroot\reading_list_2\http" />
     </application>              
     <bindings>
         <binding protocol="http" bindingInformation="*:80:readinglist2.jsgroup.local" />
     </bindings>
    </site>
    

    3/.按照上面复制的站点中的配置将新的 Apppools 添加到 applicationPools 节点,即在下面我复制了“阅读列表”应用程序池并将副本重命名为“阅读列表 2”

    <applicationPools>
        <add name="DefaultAppPool" autoStart="true" managedRuntimeVersion="v4.0">
             <processModel identityType="ApplicationPoolIdentity" />
        </add>
        <add name="Reading List" autoStart="true" managedRuntimeVersion="v4.0" />
        <add name="Reading List 2" autoStart="true" managedRuntimeVersion="v4.0" />
        <!-- Other AppPools here -->
     </applicationPools>
    

    如果一切正常,请在 IIS 中查看站点并在需要时重新启动 :-)

    希望对某人有所帮助。

    理查德·赫瑟林顿

    【讨论】:

    • 另外请注意,如果您使用不同的身份验证设置,可能会在 applicationHost.config 中复制更多设置,例如 &lt;location path="mywebsite.com"&gt; &lt;system.webServer&gt; &lt;security&gt; &lt;authentication&gt; &lt;anonymousAuthentication enabled="false" /&gt; &lt;windowsAuthentication enabled="true" /&gt; &lt;/authentication&gt; &lt;/security&gt; &lt;/system.webServer&gt;
    【解决方案2】:

    转到C:\Windows\system32\inetsrv\config 复制ApplicationHost.config 文件。它和 XML 文件。打开它并转到&lt;configuration&gt;&lt;system.applicationHost&gt;&lt;sites&gt; ('configuration\system.applicationHost\sites') 找到要复制的站点(它将与 IIS Management Studio 中的名称相同)然后复制该站点部分并将其粘贴到下面的 &lt;sites&gt; 然后为尚未使用的新站点部分分配新的 id 和 name 属性name="Test1" id="5"

     <site name="Test" id="4" serverAutoStart="true">
                    <application path="/" applicationPool="Test">
                        <virtualDirectory path="/" physicalPath="C:\OnTheMove\tags\Release 2.1.7.7\Offline\OfflineRouteHandler" userName="administrator" password="[enc:AesProvider:K0YvJ9r+XXNP8VUrZlbCPQ==:enc]" />
                    </application>
                    <application path="/Offline_Tablet" applicationPool="Test">
                        <virtualDirectory path="/" physicalPath="C:\OTM\Offline\OnTheMoveOffline" userName="administrator" password="[enc:AesProvider:tT9uIWQDtIZTRnSMmx8XmIQv0lr7AbUXcuGby5qRZSo=:enc]" />
                    </application>
                    <application path="/OnTheMoveWebFiles" applicationPool="Test">
                        <virtualDirectory path="/" physicalPath="C:\OTM\Offline\OnTheMoveOffline\OnTheMoveWebFiles" userName="administrator" password="[enc:AesProvider:zZgL59H6ka6jehb9BPTaNR8ogdgc8S90c3vf8p6MjPc=:enc]" />
                    </application>
                    <application path="/eai_enu" applicationPool="Test">
                        <virtualDirectory path="/" physicalPath="C:\OTM\Offline\OfflineRouteHandler" userName="administrator" password="[enc:AesProvider:MfaNJz14gaJK5EjgIqhj4w==:enc]" />
                    </application>
                    <bindings>
                        <binding protocol="http" bindingInformation="*:80:" />
                    </bindings>
                </site>
    

    会被克隆到。

    <site name="Test1" id="5" serverAutoStart="true">
                <application path="/" applicationPool="Test">
                    <virtualDirectory path="/" physicalPath="C:\OnTheMove\tags\Release 2.1.7.7\Offline\OfflineRouteHandler" userName="administrator" password="[enc:AesProvider:K0YvJ9r+XXNP8VUrZlbCPQ==:enc]" />
                </application>
                <application path="/Offline_Tablet" applicationPool="Test">
                    <virtualDirectory path="/" physicalPath="C:\OTMTrunk\Offline\OnTheMoveOffline" userName="administrator" password="[enc:AesProvider:tT9uIWQDtIZTRnSMmx8XmIQv0lr7AbUXcuGby5qRZSo=:enc]" />
                </application>
                <application path="/OnTheMoveWebFiles" applicationPool="Test">
                    <virtualDirectory path="/" physicalPath="C:\OTMTrunk\Offline\OnTheMoveOffline\OnTheMoveWebFiles" userName="administrator" password="[enc:AesProvider:zZgL59H6ka6jehb9BPTaNR8ogdgc8S90c3vf8p6MjPc=:enc]" />
                </application>
                <application path="/eai_enu" applicationPool="Test">
                    <virtualDirectory path="/" physicalPath="C:\OTMTrunk\Offline\OfflineRouteHandler" userName="administrator" password="[enc:AesProvider:MfaNJz14gaJK5EjgIqhj4w==:enc]" />
                </application>
                <bindings>
                    <binding protocol="http" bindingInformation="*:80:" />
                </bindings>
            </site>
    

    转到 IIS 管理工作室,如果你做的一切都正确,那么新的网站将会停止。


    如果失败,请使用备份副本覆盖ApplicationHost.config

    更新:根据 cmets,如果您在编辑 ApplicationHost.config 时使用 64 位环境,您想在管理员模式下使用 64 位编辑器,Notepad is one

    Taken from here

    希望这可以为您节省一些时间。

    【讨论】:

    • 听起来ApplicationHost.config在64位环境中有2个副本(在system32SysWOW64下),但它们链接到同一个文件。但是,当我添加需要克隆的应用程序池和站点的副本时,IIS 管理器中没有任何变化 - 没有新池,也没有新站点。
    • 一样,这太疯狂了。在 64 位服务器上,唯一可行的方法是使用基本的 Windows 记事本编辑 system32\ApplicationHost.config
    • 更具体地说 - 您需要在 64 位服务器上安装 64 位编辑器。否则,它不会更新更改。参考:beacontechnologies.com/blog/2014/06/…
    • @JurijsKastanovs 谢谢,添加到答案中 - 所以它不会在 cmets 中丢失。
    【解决方案3】:

    看看ApplicationHost.config file。它应该位于“c:\windows\system32\inetsrv\config”下。这是一个包含所有 IIS 配置数据的 XML 文件。您可以手动修改此文件以快速创建您网站的副本。请务必先进行备份以防万一。

    【讨论】:

    • 哈,是的,我有这个想法,但根据我的经验,触摸该文件可能是不可预测的。克隆功能听起来确实应该支持。不过,我会备份并尝试一下,谢谢 D。
    • 我很高兴在被问到问题 10 年后我仍然回到这里,因为我忘记了如何做到这一点。
    【解决方案4】:

    使用 adsutil.vbs 复制网站怎么样?

    C:\Inetpub\AdminScripts> adsutil.vbs copy <source> <destination>
    

    例如

    C:\Inetpub\AdminScripts> adsutil.vbs copy w3svc/1 w3svc/556
    

    如果先执行adsutil.vbs ENUM /P W3SVCw3svc/ 符号的原因就更明显了。

    参考资料:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-24
      • 1970-01-01
      • 1970-01-01
      • 2017-08-15
      • 2015-05-21
      • 1970-01-01
      • 1970-01-01
      • 2016-06-09
      相关资源
      最近更新 更多