ในบทความนี้ เราจะดูวิธีสำรองเว็บไซต์ application pools และการกำหนดค่า IIS web server บน Windows Server คุณสามารถใช้การสำรอง Internet Information Services เพื่อกู้คืนเว็บไซต์ในกรณีที่โฮสต์เซิร์ฟเวอร์ล้มเหลว หรือหากคุณย้าย/โยกย้ายเว็บไซต์ (และ/หรือการกำหนดค่า IIS) ไปยังเซิร์ฟเวอร์อื่น
การสำรอง IIS บน Windows Server
การสำรองข้อมูลและการกำหนดค่าของไซต์ที่ทำงานบนเว็บเซิร์ฟเวอร์ Internet Information Service ประกอบด้วยหลายขั้นตอน:
- สำรองไฟล์ IIS website (โดยค่าเริ่มต้น ไฟล์ IIS site จัดเก็บอยู่ใน
%SystemDrive%\inetpub\wwwroot) โฟลเดอร์นี้ต้องรวมอยู่ในแผนการสำรอง เพียงคัดลอกไฟล์ทั้งหมดโดยใช้เครื่องมือสำรองของคุณ (คุณสามารถใช้ Windows Server Backup ในตัว -> เลือกไดเรกทอรี inetpub สำหรับการสำรอง) หรือสคริปต์ BAT/PowerShell ง่ายๆ ตัวอย่างเช่น เพื่อติดตั้ง WSB และสำรองไดเรกทอรี inetpub\wwwroot ไปยัง shared folder ใช้คำสั่งต่อไปนี้:# Install the Windows server feature using PowerShell;
Install-WindowsFeature -Name Windows-Server-Backup
# backup IIS website static files
wbadmin start backup –backupTarget:\\srv-backup1\backup -include:c:\inetpub\wwwroot -vsscopy - สำรอง (export) IIS certificates ปัจจุบัน (คุณสามารถดูรายการ SSL certificates บนเซิร์ฟเวอร์ได้โดยใช้คำสั่งนี้:
netsh http show sslcert) คุณสามารถใช้ PowerShell เพื่อสำรอง certificates ไปยัง shared network folder ในรูปแบบ PFX (Personal Information Exchange):dir cert:\localmachine\my | Where-Object { $_.hasPrivateKey } | Foreach-Object { [system.IO.file]::WriteAllBytes("\\srv-backup1\backup\$($_.Subject).pfx",($_.Export('PFX', 'secret')) ) }
- สำรอง IIS configuration (settings).
คุณสามารถสำรองการกำหนดค่า IIS โดยใช้เครื่องมือในตัว appcmd เปิด command prompt ในฐานะ administrator และเปลี่ยนไดเรกทอรี:
cd c:\Windows\system32\inetsrv
มาสำรองการกำหนดค่า IIS กัน:
appcmd add backup srv1-iis-backup-2022_03_10
BACKUP object srv1-iis-backup-2022_03_10 added

Appcmd สร้างโฟลเดอร์ใน c:\Windows\system32\inetsrv\backup ด้วยชื่อการสำรองของคุณ มันประกอบด้วยไฟล์ต่อไปนี้:
- administration.config
- applicationHost.config
- MBSchema.xml
- MetaBase.xml
- redirection.config

เหลือเพียงคัดลอกไดเรกทอรีนี้ไปยังอุปกรณ์จัดเก็บสำรอง
บน Windows Server 2019/2016 คุณสามารถใช้คอมมานด์เลต PowerShell ในตัวเพื่อสำรอง IIS แทน appcmd:
Backup-WebConfiguration -Name MyBackup202203
คอมมานด์เลตนี้ก็ส่งออกการตั้งค่า IIS ปัจจุบันไปยัง $env:Windir\System32\inetsrv\backup เช่นกัน
การกู้คืนการกำหนดค่า IIS บนโฮสต์ Windows Server อื่น
คุณสามารถกู้คืนการกำหนดค่า IIS จากการสำรองไปยังเซิร์ฟเวอร์เดียวกันหรือโฮสต์ที่ต่างกัน สมมติว่าคุณต้องการกู้คืนการกำหนดค่า IIS บนโฮสต์ Windows Server อื่น
คัดลอกไดเรกทอรีการสำรอง IIS ไปยังโฟลเดอร์เดียวกัน (c:\windows\system32\backup) บนเซิร์ฟเวอร์เป้าหมาย
เพื่อแสดงรายการการสำรองการกำหนดค่า IIS ทั้งหมดที่มีอยู่ ให้รันคำสั่ง:
appcmd list backup
การสำรองที่คัดลอกควรปรากฏในรายการที่มีอยู่ กู้คืน IIS config จากการสำรอง:
appcmd restore backup /stop:true srv1-iis-backup-2022_03_10

“Restored configuration from backup srv1-iis-backup-2022_03_10 หมายความว่าการกำหนดค่า IIS ถูกกู้คืนสำเร็จแล้ว
ตัวเลือก /stop:true บังคับให้ IIS หยุดก่อนกู้คืน
Restore-WebConfiguration -Name srv1-iis-backup-2022_03_10
หมายเหตุ: มีรายการเช่น BACKUP “CFGHISTORY_0000000001” ในรายการการสำรองที่มีอยู่ นี่คือการสำรองการกำหนดค่า IIS ที่สร้างขึ้นอัตโนมัติและตั้งอยู่ในไดเรกทอรี \inetpub\history ฟีเจอร์การสำรองอัตโนมัติปรากฏใน IIS 7+: การเปลี่ยนแปลงของ ApplicationHost.config ที่ทำผ่าน IIS Manager จะถูกติดตาม จัดเก็บ 10 การสำรองล่าสุด และตรวจสอบไฟล์สำหรับการเปลี่ยนแปลงทุก 2 นาที
เพื่อลบการสำรองก่อนหน้า ให้รันคำสั่ง:
appcmd.exe delete backup BackupName
หมายเหตุ: รายการข้อจำกัดสำคัญและจุดสำคัญ:
- IIS version เดียวกันต้องใช้บนเซิร์ฟเวอร์ทั้งสอง คุณสามารถตรวจสอบ IIS version ของคุณใน registry โดยใช้ PowerShell:
get-itemproperty HKLM:\SOFTWARE\Microsoft\InetStp\ | select setupstring,versionstringในกรณีของผมคือ IIS 10.0
- หาก IIS application pools ไม่ได้รันจาก built-in accounts พวกเขาต้องมีอยู่บนโฮสต์ IIS เป้าหมาย
- ก่อนกู้คืน IIS คุณต้องนำเข้า SSL certificates ที่คุณใช้ไปยังเซิร์ฟเวอร์ใหม่
คุณยังสามารถสำรอง IIS web server ของคุณโดยใช้แพ็กเกจ msdeploy (Web Deployment Tool) ดาวน์โหลดและติดตั้งแพ็กเกจ msdeploy บนโฮสต์ IIS ของคุณและบนโฮสต์สำรองเป้าหมาย (https://www.microsoft.com/en-us/download/details.aspx?id=43717)
เพื่อสร้างการสำรอง IIS (พร้อมทุกไซต์หากมีหลายไซต์ทำงานบน IIS) ไปยังโฮสต์ Windows ระยะไกล 192.168.100.112 ผ่าน webdeploy สามารถใช้คำสั่งต่อไปนี้:
msdeploy -verb:sync -source:webServer,computername=192.168.100.112 dest:package=c:\Backup\IIS\server1_iis_backup.zip
คุณยังสามารถสำรอง IIS website เดียวได้:
msdeploy –verb:sync -source:contentPath="site_name.com",computername=192.168.100.112 -dest:package=c:\Backup\IIS\site_name.zip
หรือคัดลอกเฉพาะไฟล์เว็บไซต์แบบคงที่จากไดเรกทอรีที่ระบุ:
msdeploy –verb:sync –source:dirPath="c:\inetpub\wwwroot\site_name",computername=192.168.100.112 -dest:package=c:\Backup\IIS\site_name_static_files.zip