侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

IIS 服务器备份转移实现方法

技术  /  管理员 发布于 7年前   460

作者:jacksonluo
一:IIS的服务器前期配置(其他的安全就不提了) (以 freeshare.com.cn为例 )
1.创建该域的(freeshare.com.cn)计算机用户名,并设置一个安全密码
2.创建该域的目录文件夹如(D:\Inetpub\freeshare.com.cn)
3.设置目录访问权限,freeshare.com.cn对该目录完全控制(提供匿名用户访问该网站)
4.创建一个该域名的描述(公司名) 的单独应用进程池,为每一个虚拟主机创建独立的应用程序进程池,保个别网站的问题不会影响整台服务器的运行。创建进程池时可以单独设定用户名和密码并设置CPU,连接数等。这里采用的是默认的。
5.创建一个虚拟主机,并选择上面所创建的应用进程池,在目录安全性中选择匿名用户freeshare.com.cn,并设置与计算机创建freeshare.com.cn用户名的密码一致,必须一致,否则无法访问该网站。
OK,这个就对每个虚拟主机要做的,那么这些是不是需要全部的人工的去完成呢?

答案是否定的,WINDOWS下也可以实现脚本编程哦,(呵呵我原来也是不知道的)
那么即然可以不用去手工完成,用什么呢?用VBSCRIPT脚本吧。
二:用脚本完成上述创建虚拟主机的动作
保存为createsiglewebsite.vbs
代码如下:

Dim SiteNum,IPAddr,PortNum,LenComputer,WebServerComment,LogDirectory 
Dim user_password,GroupName,tmpFolder,UserNameComp,WebServerAutoStart 
Dim WebAnonymousUserName 
WebServerComment="公司名"'网站描述、计算机用户描述及全名采用这个变量 
UserNameComp="freeshare.com.cn"'计算机用户名及用户目录采用这个变量 
HostName = ":80:www.freeshare.com.cn"'虚拟主机站点主机名 
WebAnonymousUserName = getComputer()&"\"&UserNameComp'虚拟主机匿名用户(前面加了本地计算机名) 
user_password = "**********"'计算机用户和匿名用户密码。 
GroupName = "Guests"'计算机用户所在的组 
IPAddr = ""'计算机IP地址,可以为空 
tmpFolder = "D:\inetpub\"&UserNameComp'目标目录 
LenComputer = Len(getComputer())+1'计算机名+'\'的长度 
PortNum = "80"'虚拟主机端口 
WebServerAutoStart = "true"'创建虚拟主机后是否运行true和false 
LogDirectory = ""'日志目录 
'检测是否存在该用户的计算机帐号 
If Not checkUser(UserNameComp) Then 
'添加该计算机用户帐号 
AddUser getComputer(),UserNameComp,user_password,WebServerComment,WebServerComment,GroupName 
Else 
Wscript.echo "该计算机用户名也存在.............." 
End If 
'创建用户主目录 
CreateFileDirectory(tmpFolder) 
'修改用户主目录的访问权限 
SetNTFSDirectoryPerssion(UserNameComp) 
'创建应用进程池 
createAppPool WebServerComment 
'创建虚拟主机站点 
CreateWebSite getComputer(),IPAddr,HostName,tmpFolder,LogDirectory,WebServerComment,UserNameComp,user_password,WebServerAutoStart 
'BuildNum = BuildNum+1 
'Wscript.echo "=============================================="&BuildNum&"=============================================" 
'为每个IIS虚拟主机应用程序站点创建站点应用程序池 
Function createAppPool(strName) 
On Error Resume Next 
Err.Clear 
Set ObjAppPoolsExist = GetObject("IIS://"&getComputer()&"/W3SVC/AppPools"&strName) 
If Err.number = 0 Then 
wscript.echo "该应用进程池已创建............." 
Set ObjAppPoolsExist = Nothing 
Exit Function 
Else 
Set objAppPools = GetObject("IIS://" & getComputer() & "/W3SVC/AppPools") 
Err.Clear 
Set objAppPool = objAppPools.Create("IIsApplicationPool", strName) 
If err.number = 0 Then 
objAppPool.AppPoolIdentityType = 2 'runs as NT AUTHORITY\NETWORK 3 Run as specific user account 1 runs as NT AUTHORITY\LOCAL SERVICE 0 runs as NT AUTHORITY\SYSTEM 
objAppPool.SetInfo 
If err.Number = 0 Then 
createAppPool = true 
Wscript.echo"应用程序"&strName&"创建成功!" 
Else 
createAppPool = false 
Wscript.echo"应用程序"&strName&"创建失败!" 
End If 
Else 
createAppPool = false 
End If 
End If 
Set objAppPool = Nothing 
Set objAppPools = Nothing 
Set ObjAppPoolsExist = Nothing 
End Function 
Function CreateWebSite(strComputer,IPAddr,WebServerBingings,WebSiteDirectory,LogDirectory,WebSiteInfo,GuestUserName,GuestUserPass,StartOrStop) 
Dim w3svc, WebServer, NewWebServer, NewDir 
Dim Bindings, BindingString, NewBindings, SiteNum, SiteObj, bDone 
On Error Resume Next 
Err.Clear 
'检测是否能够加载W3SVC服务(即WEB服务) 
Set w3svc = GetObject("IIS://" & getComputer() & "/w3svc") 
If Err.Number <> 0 Then '显示错误提示 
Wscript.echo "无法打开: "&"IIS://" & getComputer() & "/w3svc" 
Exit Function 
End If 
'检测是否有设定相同IP地址、端口及主机名的站点存在 
BindingString = IPAddr & WebServerBingings 
For Each WebServer in w3svc 
If WebServer.Class = "IIsWebServer" Then 
Bindings = WebServer.ServerBindings 
If BindingString = Bindings(0) Then 
Wscript.echo "虚拟主机:" & HostName & ",已存在,无法创建......!." 
Exit Function 
End If 
End If 
Next 
'确定一个不存在的站点编号做为新建站点编号,系统默认WebSite站点编号为1,因此从2开始 
SiteNum=2 
bDone = False 
While (Not bDone) 
Err.Clear 
Set SiteObj = GetObject("IIS://"&getComputer()&"/w3svc/"&SiteNum) '加载指定站点 
If (Err.Number = 0) Then 
'Wscript.echo " Step_1站点"&SiteNum&"存在" 
SiteNum = SiteNum + 1 
Else 
'Wscript.echo " Step_1站点"&SiteNum&"不存在" 
Err.Clear 
Set NewWebServer = w3svc.Create("IIsWebServer",SiteNum) '创建指定站点 
If (Err.Number <> 0) Then 
Wscript.echo SiteNum&"创建失败" 
SiteNum = SiteNum + 1 
Else 
Wscript.echo SiteNum&"创建成功" 
bDone = True 
End If 
End If 
If (SiteNum > 1000) Then '服务器最大创建站点数 
Wscript.echo "超出服务器最大创建站点数,正在创建的站点的序号为: "&SiteNum&"." 
Exit Function 
End If 
Wend 
'进行站点基本配置 
NewBindings = Array(0) 
NewBindings(0) = BindingString 
NewWebServer.ServerBindings = NewBindings 
NewWebServer.ServerComment= WebServerComment 
NewWebServer.AnonymousUserName= GuestUserName 
NewWebServer.AnonymousUserPass= GuestUserPass 
NewWebServer.KeyType = "IIsWebServer" 
NewWebServer.FrontPageWeb = True 
NewWebServer.EnableDefaultDoc = True 
NewWebServer.DefaultDoc = "Default.htm, Default.asp, Index.htm, Index.asp,index.html,default.html" 
NewWebServer.LogFileDirectory= LogDirectory 
NewWebServer.SetInfo 
Set NewDir = NewWebServer.Create("IIsWebVirtualDir", "ROOT") 
NewDir.Path = WebSiteDirectory 
NewDir.AccessRead = true 
NewDir.AppFriendlyName = WebServerComment 
NewDir.AppCreate True 
NewDir.AccessScript = True 
NewDir.AuthNTLM = True 
NewDir.AppIsolated = "2" 
NewDir.AppPoolId = WebServerComment 
'NewDir.AppCreate3 2,WebSiteInfo,false 
NewDir.AuthFlags = "AuthAnonymous | AuthNTLM" '集成windows身份验证 
Err.Clear 
NewDir.SetInfo 
If (Err.Number <> 0) Then 
Wscript.echo "主目录创建时出错." 
Exit Function 
End If 
If StartOrStop = True Then 
Err.Clear 
Set NewWebServer = GetObject("IIS://" & getComputer() & "/w3svc/" & SiteNum) 
NewWebServer.Start 
If Err.Number <> 0 Then 
Wscript.echo "启动站点时出错!" 
Err.Clear 
End If 
End If 
Wscript.echo "站点创建成功,站点编号为:"& SiteNum &" ,域名为:"& WebServerBingings 
'SetCPULimitVar strComputer,SiteNum,100 '调用CPU最大使用程度 
End Function 
Function getComputer() 
Dim objNet 
Set objNet = CreateObject("WScript.Network") 
getComputer= objNet.ComputerName 
Set objNet = Nothing 
End Function 
Function CreateFileDirectory(UserName) 
Set FsObject = CreateObject("Scripting.FileSystemObject") 
On Error Resume Next 
Err.Clear 
If Not FsObject.FolderExists(UserName) Then 
FsObject.CreateFolder(UserName) 
If Err.number<>0 Then 
Wscript.echo "创建目录" & UserName & "失败!" 
Else 
Wscript.echo "创建目录" & UserName & "成功!" 
END if 
Else 
Wscript.echo"目录" & UserName & "已存在,您不能创建!" 
End if 
Set FsObject = Nothing 
End Function 
Function SetNTFSDirectoryPerssion(sourceDirectory) 
Dim WshShell,oExec 
Dim exeDirectory 
exeDirectory = "C:\Program Files\Resource Kit\xcacls.exe C:\Inetpub\" 
Orders_exec = exeDirectory&sourceDirectory&" /E /T /G "&sourceDirectory&":F;F" 
Set WshShell = CreateObject("WScript.Shell") 
Set oExec = WshShell.Exec(Orders_exec) 
If oExec.status = 0 Then 
Wscript.echo " 命令成功执行!" 
Else 
Wscript.echo " 命令执行失败!权限不够或者该程序无法在DOS状态下运行" 
End If 
Set WshShell= Nothing 
End Function 
Function checkUSer(strUser) 
On Error Resume Next 
'Check if domain is already part of username passed to function 
If instr(strUser,"\") = 0 then 
Set objGrp = GetObject("WinNT://" & getComputer() & "/" & strUser & ",user") 
Else 
Set objGrp = GetObject("WinNT://" & replace(strUser,"\","/") & ",user") 
End If 
If err.number = 0 Then 
checkUSer = true 
Else 
checkUSer = false 
End If 
Set objGrp = Nothing 
On Error Goto 0 
End Function 
Function AddUser(Computer,UserName,PassWord,FullName,Info,GroupName) 
DIM intReturn,FsObject 
On Error Resume Next 
'执行创建帐号命令 
Set ComputerAccoutObj = GetObject("WinNT://"&getComputer()&"/"&UserName&",user") 
if Err.number=0 then 
Wscript.echo UserName&"计算机用户已存在...." 
Else 
Set ComputerObj = GetObject("WinNT://"&getComputer()) 
Set NewUser = ComputerObj.Create( "User" , UserName ) 
NewUser.SetInfo 
'进行帐号设置 
NewUser.SetPassword ( PassWord ) '帐号密码 
NewUser.FullName = FullName '帐号全名 
NewUser.Description = Info '帐号说明 
NewUser.UserFlags = &H10000 xor &H0040 '&H20000(使用者下次登入时须变更密码) &H0040(使用者不得变更密码) &H10000(密码永久正确) &H0002(帐户暂时停用) 
NewUser.SetInfo 
Wscript.echo "帐号"&UserName&"创建成功!" 
Set objSeLectGroup = GetObject("WinNT://" & getComputer() & "/Guests,group") 
Set objAddUser = GetObject("WinNT://" & getComputer() & "/" & UserName &",user") 
objSeLectGroup.Add(objAddUser.ADsPath) 
End if 
Set ComputerObj=nothing 
Set ComputerAccoutObj = nothing 
Set ComputerAccoutGroupObj = nothing 
End Function


程序完,你只要把上面的程序保存在以 *.vbs windows目录下,就可以直接执行了,

上面用到了一个xcacls的修改NTFS权限的小程序,您可以从微软官方网站下载,

你也可以访问

http://www.microsoft.com/windows2000/techinfo/reskit/tools/existing/xcacls-o.asp

下载安装既可。另外部分见IIS服务器备份转移解决方案(二)


  • 上一条:
    用rsync对网站进行镜像备份实现步骤
    下一条:
    IIS 应用程序保护级别说明
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 2024.07.09日OpenAI将终止对中国等国家和地区API服务(0个评论)
    • 2024/6/9最新免费公益节点SSR/V2ray/Shadowrocket/Clash节点分享|科学上网|免费梯子(1个评论)
    • 国外服务器实现api.openai.com反代nginx配置(0个评论)
    • 2024/4/28最新免费公益节点SSR/V2ray/Shadowrocket/Clash节点分享|科学上网|免费梯子(1个评论)
    • 近期文章
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2017-07
    • 2017-08
    • 2017-09
    • 2018-01
    • 2018-07
    • 2018-08
    • 2018-09
    • 2018-12
    • 2019-01
    • 2019-02
    • 2019-03
    • 2019-04
    • 2019-05
    • 2019-06
    • 2019-07
    • 2019-08
    • 2019-09
    • 2019-10
    • 2019-11
    • 2019-12
    • 2020-01
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-08
    • 2020-09
    • 2020-10
    • 2020-11
    • 2021-04
    • 2021-05
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-12
    • 2022-01
    • 2022-02
    • 2022-03
    • 2022-04
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-08
    • 2023-09
    • 2023-10
    • 2023-12
    • 2024-02
    • 2024-04
    • 2024-05
    • 2024-06
    • 2025-02
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客