原創文章:歡迎轉載,轉載時請保留作者名及出處
作者: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伺服器備份轉移解決方案(二)