我想制作我正在研究的iis网站的dev,demo1,demo2副本。我需要每个iis运行自己的代码库,但设置几乎相同。在Windows 7中是否有一种简单的方法可以将我的dev iis克隆到新站点而无需完全重新配置它?为每个iis配置虚拟目录需要20分钟,所以这可以为我节省很多工作。
答案 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管理工作室,如果您做的一切正确,将会有新的网站停止。
如果失败,请使用备份副本覆盖ApplicationHost.config
。
更新:根据评论,如果您在编辑ApplicationHost.config
时使用64位环境,则需要在管理员模式下使用64位编辑器,Notepad is one。
希望这可以节省你一些时间。
答案 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
表示法的原因会更明显。
参考文献: