为实现负载平衡,我们可能会使用多个WEB服务器,也就会需要给多个IIS配置同样的站点和应用程序池.那么我们需要一个一个的重新建吗?当然不用,我们只需要一些简单的命令就可以在IIS7(Windows Server 2008)或IIS7.5(Windows Server 2008 R2)上来导出导入这些配置了.
当我们在IIS7或IIS7.5上创建站点时,IIS会为我们自动创建一个对应该站点的唯一的应用程序池.所以,我们要导入网站信息,就必须先导入应用程序池信息.
在IIS7+上导出所有应用程序池的方法:
%windir%\system32\inetsrv\appcmd list apppool /config /xml > c:\apppools.xml
这个命令会将服务器上全部的应用程序池都导出来,但有些我们是我们不需要的,要将他们删掉.比如:
- DefaultAppPool
- Classic .Net AppPool
如果在导入时发现同名的应用程序池已经存在,那么导入就会失败.
导入应用程序池的方法:
%windir%\system32\inetsrv\appcmd add apppool /in < c:\apppools.xml
这样就可以将全部的应用程序池都导入到另一个服务器中了.
导出全部站点的方法:
%windir%\system32\inetsrv\appcmd list site /config /xml > c:\sites.xml
同样,我们需要编辑sites.xml文件删除不需要的站点.如:
- Default Website
导入站点的方法:
%windir%\system32\inetsrv\appcmd add site /in < c:\sites.xml
至此,导入工作完成了,看看两台服务器的IIS配置一样了吧.
另外,介绍下单独导出导入一个站点的方法
导出单独应用程序池:
%windir%\system32\inetsrv\appcmd list apppool “应用程序池名称” /config /xml > c:\myapppool.xml
导入单独应用程序池:
%windir%\system32\inetsrv\appcmd add apppool /in < c:\myapppool.xml
导出单独站点:
%windir%\system32\inetsrv\appcmd list site “站点名称” /config /xml > c:\mywebsite.xml
导入单独站点:
%windir%\system32\inetsrv\appcmd add site /in < c:\mywebsite.xml
备份
%windir%\system32\inetsrv\appcmd.exe add backup "My Backup Name"
还原
%windir%\system32\inetsrv\appcmd.exe restore backup "My Backup Name"
根据网站数据的多少,这个还原时间可能会很长。
删除备份
%windir%\system32\inetsrv\appcmd.exe delete backup "My Backup Name"
查看备份
%windir%\system32\inetsrv\appcmd.exe list backup
执行以上操作,必须以管理员身份运行cmd.exe,这个要切记哦。
如果要使用命令外壳窗口来配置 IIS 7 设置,请打开 Appcmd.exe。Appcmd.exe 位于 %windir%\system32\inetsrv 目录中,只有管理员帐户或身为计算机上管理员组成员的用户才可以访问此目录。 此外,管理员组的成员必须使用提升的权限启动 Appcmd.exe,才能查看和更改以下服务器级配置文件中的设置:Machine.config、根 Web.config 文件(位于 .NET Framework 目录中)以及 ApplicationHost.config。查看或更改站点或应用程序目录中的 Web.config 文件的用户必须对这些目录中的文件具有读取和写入权限。
如果您运行的是 64 位 Windows,请从 %windir%\system32\inetsrv 目录而不是 %windir%\syswow64\inetsrv 目录中使用 Appcmd.exe。
参考: Exporting and Importing Sites and App Pools from IIS 7 and 7.5 |