คุณจะโยกย้ายไซต์ IIS 7 ไปยังเซิร์ฟเวอร์อื่นได้อย่างไร


106

ฉันสงสัยว่าแนวทางปฏิบัติที่ดีที่สุดในการย้ายเว็บไซต์ไปยังเซิร์ฟเวอร์อื่นคืออะไร (พร้อมกับการตั้งค่าทั้งหมด ฯลฯ )

  • สร้างไซต์ใหม่ด้วยตนเองบนเซิร์ฟเวอร์ใหม่ (ไม่สามารถบำรุงรักษาได้ด้วยเหตุผลที่ชัดเจน)
  • คัดลอกไฟล์การตั้งค่า applicationHost.config
  • ใช้ appcmd เพื่อสำรองข้อมูลและกู้คืน
  • ใช้ MSDeploy เพื่อเผยแพร่ไซต์บนเครื่องใหม่
  • ใช้เครื่องมือของบุคคลที่สาม

แค่สงสัยว่าประสบการณ์ของคนอื่นเป็นอย่างไร


Microsoft แนะนำให้ใช้ Web Deploy เท่านั้น (หลังจากสร้างเครื่องมือนี้แล้ว) ดังนั้นก่อนที่คุณจะอ่านคำตอบด้านล่างนี้โปรดตรวจสอบให้แน่ใจว่าคุณทราบถึงความเสี่ยงของคุณเอง
Lex Li

คำตอบ:


135

ฉันจะบอกว่าส่งออกการกำหนดค่าเซิร์ฟเวอร์ของคุณในตัวจัดการ IIS:

  1. ในตัวจัดการ IIS คลิกโหนดเซิร์ฟเวอร์
  2. ไปที่การกำหนดค่าที่ใช้ร่วมกันภายใต้ "การจัดการ"
  3. คลิก "ส่งออกการกำหนดค่า" (คุณสามารถใช้รหัสผ่านหากคุณกำลังส่งผ่านอินเทอร์เน็ตหากคุณเพียงแค่ย้ายพวกเขาผ่านคีย์ USB ก็อย่าเพิ่งเหงื่อออก)
  4. ย้ายไฟล์เหล่านี้ไปยังเซิร์ฟเวอร์ใหม่ของคุณ

    administration.config
    applicationHost.config
    configEncKey.key 
    
  5. บนเซิร์ฟเวอร์ใหม่ให้กลับไปที่ส่วน“ Shared Configuration” และเลือก“ Enable shared configuration” ป้อนตำแหน่งในเส้นทางจริงไปยังไฟล์เหล่านี้และนำไปใช้

  6. ควรแจ้งให้ใส่รหัสผ่านเข้ารหัส (ถ้าคุณตั้งค่าไว้) และรีเซ็ต IIS

แบม! ไปดื่มเบียร์กัน!


8
น่าจะใช้ Import Server หรือ Site Package แทนการคัดลอกไฟล์มากกว่าแม้ว่าฉันจะยังไม่ได้ทดสอบก็ตาม แต่ฉันรู้ว่ามีเส้นทางไฟล์ใน applicationHost.config ที่ไม่จำเป็นต้องมีอยู่ในเซิร์ฟเวอร์ใหม่ซึ่งอาจทำให้ไฟล์เสียหายได้ นอกจากนี้คุณควรพูดถึงว่าขณะนี้ไม่มีไซต์ใด ๆ ใน IIS ดังนั้นกระบวนการนี้จึงไม่ clobber กำลังเรียกใช้การกำหนดค่า
frogstarr78

16
ขั้นตอนสุดท้ายไม่สามารถเน้นมากเกินไป มีความสำคัญอย่างยิ่ง
แร็พ

7
ไม่ใช่ความคิดที่ดีหากคุณกำลังย้ายไปใช้ IIS เวอร์ชันใหม่กว่า มิฉะนั้นนี่คือวิธีที่จะทำ
Roy Tinker

1
ฉันสงสัยว่ามันจะได้ผลเพราะมันไม่ควร: docs.microsoft.com/en-us/iis/manage/…
vaso123

1
การกำหนดค่าที่ใช้ร่วมกัน IIS ไม่ได้ออกแบบมาเพื่อใช้ในการย้ายการตั้งค่าข้ามเครื่องดังนั้นหากคุณประสบปัญหาใด ๆ ตามคำตอบนี้กัดตัวเองและอย่าโทษคนอื่น
Lex Li

26

MSDeploy สามารถโยกย้ายเนื้อหาการกำหนดค่าและอื่น ๆ ทั้งหมดซึ่งเป็นสิ่งที่ทีม IIS แนะนำ http://www.iis.net/extensions/WebDeploymentTool

ในการสร้างแพ็คเกจให้รันคำสั่งต่อไปนี้ (แทนที่เว็บไซต์เริ่มต้นด้วยชื่อเว็บไซต์ของคุณ):

msdeploy.exe -verb:sync -source:apphostconfig="Default Web Site" -dest:package=c:\dws.zip > DWSpackage7.log

ในการกู้คืนแพ็กเกจให้รันคำสั่งต่อไปนี้:

msdeploy.exe -verb:sync -source:package=c:\dws.zip -dest:apphostconfig="Default Web Site" > DWSpackage7.log

1
ขอบคุณบิล - ฉันเคยเห็นเครื่องมือนี้แล้ว แต่ระวังเพราะมันยังอยู่ในเบต้า
Kalid

1
ในปี 2559 สิ่งนี้ยังคงเป็น 'สุดยอดศิลปะ' แต่ MSDEPLOY 3.6 นั้นยากที่จะใช้งานได้อย่างแท้จริง ฉันหวังว่าพวกเขาจะสร้างสิ่งใหม่ ๆ ในบางจุด
Warren P

MSDeploy ไม่ได้โอนไซต์ให้เราอย่างถูกต้อง เราพบว่ามีไซต์เดียวที่มีแอปพลิเคชันของแต่ละไซต์ของเราดังนั้นโครงสร้างทั้งหมดจึงไม่ถูกต้อง
brianary

แน่นอนว่าเป็นวิธีที่แนะนำและเอกสารประกอบเช่นdocs.microsoft.com/en-us/iis/publish/using-web-deploy/…และdocs.microsoft.com/en-us/iis/publish/using-web- ปรับใช้ / …เป็นสิ่งสำคัญสำหรับผู้ใช้ในการควบคุมขั้นตอนที่จำเป็นและประเด็นสำคัญที่พวกเขาต้องให้ความสนใจ ปัญหาส่วนใหญ่บนอินเทอร์เน็ตมีคำตอบอยู่แล้วในบทความ หากผู้คนใช้เวลากับสิ่งนี้มากพอ Web Deploy ไม่ใช่เครื่องมือที่ "ยาก" ที่จะใช้
Lex Li

18

นี่คือเว็บไซต์ที่มีประโยชน์เกี่ยวกับการใช้ appcmd เพื่อส่งออก / นำเข้าการกำหนดค่าไซต์ http://www.microsoftpro.nl/2011/01/27/exporting-and-importing-sites-and-app-pools-from-iis-7-and-7-5/


ขอบคุณสำหรับลิงค์ นอกจากนี้ยังอนุญาตให้ฉันแก้ไขรหัสไซต์และสิ่งอื่น ๆ ได้และฉันไม่ต้องตั้งค่าแอปพลิเคชัน 10 รายการและไดเรกทอรีเสมือน 30 รายการ ประหยัดเวลาได้มาก
2GDave

เนื่องจากแนวทางนี้ไม่ดูแลการอ้างอิงพื้นฐาน (โมดูล IIS เป็นต้น) ให้ใช้ความเสี่ยงของคุณเอง
Lex Li

12

Microsoft Web Deploy v3สามารถส่งออกและนำเข้าไฟล์ทั้งหมดของคุณการตั้งค่าการกำหนดค่าและอื่น ๆ ซึ่งจะทำให้ไฟล์ทั้งหมดอยู่ในไฟล์ zip พร้อมที่จะนำเข้าบนเซิร์ฟเวอร์ใหม่ มันยังสามารถอัพเกรดเป็น IIS เวอร์ชันใหม่กว่า (v7-v8)

http://www.iis.net/extensions/WebDeploymentTool

หลังจากติดตั้งเครื่องมือ: คลิกขวาที่เซิร์ฟเวอร์หรือเว็บไซต์ของคุณใน IIS Management Console เลือก 'Deploy', 'Export Application ... ' และดำเนินการส่งออก

บนเซิร์ฟเวอร์ใหม่ให้นำเข้าไฟล์ zip ที่ส่งออกด้วยวิธีเดียวกัน


แต่ต้องใช้ไฟล์ทั้งหมด มีวิธีข้ามการถ่ายไฟล์หรือไม่? ตัวอย่างเช่นหากคุณย้าย FTP Sever มันจะพยายามรับไฟล์ทั้งหมดและซิปไฟล์
RayofCommand

2
@RayofCommand - เมื่อเลือกตัวเลือกการปรับใช้คุณสามารถล้างรายการ "เนื้อหา" จากนั้นแพ็กเกจจะไม่รวมไฟล์ทั้งหมด
Zhaph - Ben Duguid

1
แต่เฉพาะเมื่อปรับใช้ไซต์ต่อไซต์ .... ไม่ใช่สำหรับการย้ายเซิร์ฟเวอร์ทั้งหมด
Ethan Allen

1
หลังจากติดตั้ง MS Web Deploy บนเซิร์ฟเวอร์ปลายทาง (IIS8) แล้ว IIS Management Console จะไม่มีตัวเลือก Web Deploy
brianary

1
ฉันยังไม่มีเมนู "ปรับใช้" หลังจากติดตั้งแพ็กเกจ
Devil's Advocate

3

ใช้ appcmd เพื่อส่งออกไซต์หนึ่งหรือทั้งหมดออกจากนั้นนำเข้าสู่เซิร์ฟเวอร์ใหม่อีกครั้ง อาจเป็น iis7.0 หรือ 7.5 เมื่อคุณส่งออกโดยใช้ appcmd รหัสผ่านจะถูกถอดรหัสจากนั้นนำเข้าใหม่และจะเข้ารหัสใหม่


3

ฉันไม่สามารถแสดงความคิดเห็นในชุดข้อความเนื่องจากไม่มีตัวแทน ผู้แสดงความคิดเห็นอีกรายระบุว่าไม่สามารถโยกย้ายจากเวอร์ชันที่ต่ำกว่าไปยังเวอร์ชันที่สูงกว่าของ IIS ได้ นี่เป็นเรื่องจริงถ้าคุณไม่รวมไฟล์บางไฟล์ แต่ถ้าคุณทำได้ตามที่ฉันเพิ่งย้ายไซต์ IIS 7.5 ของฉันไปที่ IIS 8.0 โดยใช้คำตอบที่โพสต์โดยชิว

เมื่อสร้างการส่งออก (II7.5) จะมีไฟล์คีย์สองไฟล์ (Administration.config และ applicationHost.config) ซึ่งมีการอ้างอิงไปยังรีซอร์สบนเซิร์ฟเวอร์ IIS7.5 ตัวอย่างเช่น DLL จะถูกอ้างอิงด้วยคีย์สาธารณะและเวอร์ชันเฉพาะสำหรับ 7.5 สิ่งเหล่านี้ไม่เหมือนกันบนเซิร์ฟเวอร์ IIS8 การกำหนดค่าคุณลักษณะอาจแตกต่างกันเช่นกัน (ฉันมั่นใจว่าของฉันเหมือนกัน) มีคุณสมบัติใหม่บางอย่างใน 8 ซึ่งจะไม่มีอยู่ใน 7.5

หากคุณกล้าพอที่จะรวมไฟล์ทั้งสองเข้าด้วยกันมันจะได้ผล ฉันต้องถอนการติดตั้ง IIS หนึ่งครั้งเพราะฉันทำมันผิด แต่ได้รับมันเป็นครั้งที่สอง

ฉันใช้เครื่องมือผสาน (Beyond Compare) และไม่มีสิ่งที่เทียบเท่ามันจะเป็น PITA ขนาดใหญ่ แต่ก็ค่อนข้างง่ายด้วยเครื่องมือ diff ที่ดี (ห้านาที)

ในการผสานไฟล์ 8.0 จะต้องแตกต่างจากไฟล์ 7.5 ที่เอ็กซ์พอร์ตก่อนที่จะพยายามอิมพอร์ต โดยส่วนใหญ่ไฟล์ 8.0 จำเป็นต้องเขียนทับข้อมูลเฉพาะของเซิร์ฟเวอร์ในไฟล์ 7.5 ที่ส่งออกในขณะที่ออกจากไซต์ / แอปพูลเนื้อหาเฉพาะ

ฉันพบว่า Administration.config เกือบจะเหมือนกันหมดไม่มีข้อมูลเวอร์ชันของหลายรายการ อันนี้ง่ายมาก

applicationHost.config มีความแตกต่างมากขึ้น รายการบางรายการจะเรียงลำดับแตกต่างกัน แต่เหมือนกันดังนั้นคุณจะต้องเลือกแต่ละข้อแตกต่างและคิดออก

ฉันใส่ไฟล์ส่งออก 7.5 ของฉันในโฟลเดอร์ System32 \ inetsrv \ config \ Export ก่อนที่จะรวม

ฉันรวมจากโฟลเดอร์ System32 \ inetsrv \ config ไปยังโฟลเดอร์ System32 \ inetsrv \ config \ Export สำหรับทั้งสองไฟล์ที่ฉันกล่าวถึงข้างต้น ฉันผลักดันทุกอย่างในไฟล์ FROM ยกเว้นแท็ก / องค์ประกอบเฉพาะไซต์ (เช่น applicationPools, customMetadata, sites, การพิสูจน์ตัวตน) ข้อสังเกตพิเศษยังมีบล็อกแท็ก "ตำแหน่ง" เฉพาะไซต์จำนวนมากที่ฉันต้องเก็บไว้ แต่เซิร์ฟเวอร์ใหม่มีบล็อกแท็ก "ตำแหน่ง" ของตัวเองพร้อมค่าเริ่มต้นเฉพาะเซิร์ฟเวอร์ที่ต้องเก็บไว้

สุดท้ายนี้โปรดทราบว่าหากคุณใช้บัญชีบริการรหัสผ่านที่แคชไว้เหล่านี้จะเป็นขยะและจะต้องป้อนใหม่สำหรับพูลแอปของคุณ ไม่มีไซต์ใดของฉันทำงานได้ในตอนแรก แต่สิ่งที่จำเป็นทั้งหมดคือการป้อนรหัสผ่านสำหรับกลุ่มแอปทั้งหมดของฉันอีกครั้งและฉันก็พร้อมใช้งาน

หากมีคนที่สามารถแสดงความคิดเห็นพูดถึงโพสต์นี้ลงเธรด - อาจช่วยคนอื่นเช่นฉันที่มีไซต์จำนวนมากบนเซิร์ฟเวอร์เดียวที่มีการกำหนดค่าที่ซับซ้อน

ความนับถือ,

สจวร์ต


จริงๆแล้วฉันใช้คำตอบของ Stuart สำหรับการโยกย้ายแบบรวมฉันยังไม่ชอบ MS Web Deploy
เคี้ยว

1

ในกรณีของฉันไฟล์ถูกคัดลอกไปแล้วฉันพบวิธีที่ง่ายที่สุดในการทำตามขั้นตอนในคู่มือนี้: https://www.ryadel.com/en/exporting-importing-app-pools-and-websites-configuration- ระหว่าง -multiple-iis- อินสแตนซ์ /

ฉันส่งออก AppPools / Websites คัดลอกไฟล์ xml ไปยังเซิร์ฟเวอร์ปลายทางและนำเข้า AppPools จากนั้นเว็บไซต์ ทำงานได้ดีมาก นี่เป็นอีกหนึ่งตัวเลือกที่ยอดเยี่ยมสำหรับคำถามนี้


สิ่งนี้ทำให้ฉันมีข้อผิดพลาดที่ระบุว่าพูลแอปเริ่มต้นและเว็บไซต์เริ่มต้นไม่สามารถเขียนทับได้ ... ไม่มี bueno
devlin carnate

ลองเปลี่ยนชื่อค่าเริ่มต้นเป็นอย่างอื่นไหม และดูว่าสร้างขึ้นด้วยกระบวนการที่อธิบายข้างต้นหรือไม่?
Ralph

สิ่งนี้ใช้ได้ผลกับฉันตั้งแต่ IIS7.5 (2008) ถึง IIS10 (2019) ในตอนแรก Appcmd ให้ข้อผิดพลาดกับฉันใน 'เว็บไซต์เริ่มต้น' ที่มีอยู่แล้ว การเปลี่ยนชื่อใช้งานไม่ได้ฉันจึงลบเว็บไซต์เริ่มต้น จากนั้นการนำเข้าทำงานโดยไม่มีข้อผิดพลาด
MTAdmin
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.