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

Agi*_*oob 44 iis-7 windows-7

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

Dav*_*vid 50

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


Mat*_*ius 28

转到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>
Run Code Online (Sandbox Code Playgroud)

会克隆到.

<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>
Run Code Online (Sandbox Code Playgroud)

转到IIS管理工作室,如果您做的一切正确,将会有新的网站停止.

在此输入图像描述
如果失败则使用备份副本进行覆盖ApplicationHost.config.

更新:根据评论,如果你在编辑时使用64位环境, ApplicationHost.config你想在管理模式下使用64位编辑器,记事本是一个.

取自这里

希望这能为您节省一些时间.

  • 同样,这完全是疯了.在64位服务器上,唯一可行的是使用基本的Windows记事本编辑`system32\ApplicationHost.config`. (3认同)
  • 听起来在64位环境(在`system32`和`SysWOW64`下)有2个`ApplicationHost.config`副本,但它们链接到同一个文件.但是,当我添加了我需要克隆的应用程序池和站点的副本时,IIS管理器中没有任何更改 - 没有新池,没有新站点. (2认同)

小智 6

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

所以 :

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

2/。使用记事本(Windows 缓解 32 位与 64 位问题的最佳选择)。搜索要复制的站点以查找(在我的情况下)'id="13"'。找到要复制的网站后。复制整个节点并在复制站点节点后粘贴。为其分配一个新 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>
Run Code Online (Sandbox Code Playgroud)

复制网站(新):

<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>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

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

希望能帮助某人。

理查德·赫瑟林顿