【发布时间】:2011-07-16 04:05:45
【问题描述】:
我想制作我正在开发的 iis 网站的 dev、demo1、demo2 副本。我需要每个 iis 运行自己的代码库,但设置几乎相同。 Windows 7 Ultimate 中是否有一种简单的方法可以将我的 dev iis 克隆到新站点而无需完全重新配置它?为每个 iis 配置虚拟目录需要 20 分钟以上,所以这可以为我节省很多工作。
【问题讨论】:
我想制作我正在开发的 iis 网站的 dev、demo1、demo2 副本。我需要每个 iis 运行自己的代码库,但设置几乎相同。 Windows 7 Ultimate 中是否有一种简单的方法可以将我的 dev iis 克隆到新站点而无需完全重新配置它?为每个 iis 配置虚拟目录需要 20 分钟以上,所以这可以为我节省很多工作。
【问题讨论】:
实际上上面的答案 - 编辑 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 中查看站点并在需要时重新启动 :-)
希望对某人有所帮助。
理查德·赫瑟林顿
【讨论】:
<location path="mywebsite.com"> <system.webServer> <security> <authentication> <anonymousAuthentication enabled="false" /> <windowsAuthentication enabled="true" /> </authentication> </security> </system.webServer>。
转到C:\Windows\system32\inetsrv\config 复制ApplicationHost.config 文件。它和 XML 文件。打开它并转到<configuration><system.applicationHost><sites> ('configuration\system.applicationHost\sites') 找到要复制的站点(它将与 IIS Management Studio 中的名称相同)然后复制该站点部分并将其粘贴到下面的 <sites> 然后为尚未使用的新站点部分分配新的 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。
希望这可以为您节省一些时间。
【讨论】:
ApplicationHost.config在64位环境中有2个副本(在system32和SysWOW64下),但它们链接到同一个文件。但是,当我添加需要克隆的应用程序池和站点的副本时,IIS 管理器中没有任何变化 - 没有新池,也没有新站点。
system32\ApplicationHost.config。
看看ApplicationHost.config file。它应该位于“c:\windows\system32\inetsrv\config”下。这是一个包含所有 IIS 配置数据的 XML 文件。您可以手动修改此文件以快速创建您网站的副本。请务必先进行备份以防万一。
【讨论】:
使用 adsutil.vbs 复制网站怎么样?
C:\Inetpub\AdminScripts> adsutil.vbs copy <source> <destination>
例如
C:\Inetpub\AdminScripts> adsutil.vbs copy w3svc/1 w3svc/556
如果先执行adsutil.vbs ENUM /P W3SVC,w3svc/ 符号的原因就更明显了。
参考资料:
【讨论】: