如何在iis7上复制/克隆网站

时间:2011-03-15 21:55:07

标签: iis-7 windows-7

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

4 个答案:

答案 0 :(得分:47)

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

答案 1 :(得分:25)

转到C:\Windows\system32\inetsrv\config制作ApplicationHost.config文件的副本。它是和XML文件。打开它并转到<configuration><system.applicationHost><sites>('configuration\system.applicationHost\sites')找到要复制的网站(它将与IIS Management studio中的名称相同)然后复制该网站部分并将其粘贴到内部<sites>然后为新网站部分分配尚未使用的新ID和名称属性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管理工作室,如果您做的一切正确,将会有新的网站停止。

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

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

Taken from here

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

答案 2 :(得分:4)

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

因此:

1 /。正如其他人提到的那样,首先制作一份ApplicationHost.config文件!我通常会复制并重命名为&#34; ApplicationHost_BACKUP_YYYY_MM_DD.config&#34;

2 /。使用记事本(Windows的最佳选项,以缓解32位与64位的问题)。搜索要复制的网站(在我的情况下)&#39; id =&#34; 13&#34;&#39;。找到要复制的网站后。复制整个节点并在复制站点节点后粘贴它。为其分配一个新ID。务必先在IIS中检查所有使用过的ID的网站!另外一定要给它一个新的NAME并更新复制部分中的所有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>

COPED 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 /。将新的Apppool添加到applicationPools节点,如上面复制的站点中所配置,即下面我已经复制了&#34;阅读列表&#34; apppool并重命名了副本&#34;阅读列表2&#34;

<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中查看网站并在需要时重新启动: - )

希望能有所帮助。

Richard Hetherington

答案 3 :(得分:3)

如何使用adsutil.vbs复制网站?

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

例如

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

如果先执行w3svc/adsutil.vbs ENUM /P W3SVC表示法的原因会更明显。

参考文献: