IIS 7 사이트를 다른 서버로 어떻게 마이그레이션합니까?


105

웹 사이트를 다른 서버로 이동하는 가장 좋은 방법이 무엇인지 궁금합니다 (모든 설정 포함).

  • 새 서버에서 사이트를 수동으로 다시 만듭니다 (명백한 이유로 유지 관리 할 수 ​​없음)
  • applicationHost.config 설정 파일 복사
  • appcmd를 사용하여 백업 및 복원 만들기
  • MSDeploy를 사용하여 새 컴퓨터에 사이트 게시
  • 타사 도구 사용

다른 사람들의 경험이 무엇인지 궁금합니다.


Microsoft는 웹 배포 (이 도구를 만든 후) 만 권장하므로 아래 답변을 읽기 전에 자신이 어떤 위험을 감수하고 있는지 확인하십시오.
— Lex Li

답변:


134

IIS 관리자에서 서버 구성을 내 보냅니다.

  1. IIS 관리자에서 서버 노드를 클릭합니다.
  2. "관리"에서 공유 구성으로 이동합니다.
  3. "구성 내보내기"를 클릭합니다. (인터넷으로 전송하는 경우 암호를 사용할 수 있으며 USB 키를 통해 이동하려는 경우 땀을 흘리지 마십시오.)
  4. 이 파일을 새 서버로 이동

    administration.config
    applicationHost.config
    configEncKey.key 
    
  5. 새 서버에서 "공유 구성"섹션으로 돌아가 "공유 구성 활성화"를 선택합니다. 이러한 파일의 실제 경로에 위치를 입력하고 적용하십시오.

  6. 암호화 암호 (설정 한 경우)를 입력하고 IIS를 재설정해야합니다.

BAM! 가서 맥주 마셔!


8
파일을 복사하는 대신 서버 또는 사이트 패키지 가져 오기를 사용해야하지만이 역시 테스트하지는 않았습니다. 그러나 새 서버에 반드시 존재하지 않는 applicationHost.config에 파일 경로가 있다는 것을 알고 있습니다. 또한 현재 IIS에 사이트가있을 수 없으므로이 프로세스가 현재 실행중인 구성을 방해하지 않는다는 점을 언급해야합니다.
— frogstarr78

16
마지막 단계는 아무리 강조해도 지나치지 않습니다. 매우 중요합니다.
— 랩

7
최신 버전의 IIS로 마이그레이션하는 경우 좋은 생각이 아닙니다. 그렇지 않으면,이 입니다 그것을 할 수있는 방법은.
— Roy Tinker 2015

1
나는 그것 때문에 안, 그것은 일할 수있는 궁금 : docs.microsoft.com/en-us/iis/manage/...
— vaso123

1
IIS 공유 구성은 컴퓨터간에 설정을 마이그레이션하는 방법으로 설계되지 않았으므로이 답변에 따라 문제가 발생하더라도 다른 사람을 비난하지 마십시오.
— Lex Li

25

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
감사합니다 Bill-도구를 보았지만 아직 베타 버전이기 때문에 조심했습니다.
— Kalid

1
2016 년에도 여전히 '최첨단'이지만 MSDEPLOY 3.6은 작업하기가 정말 어렵습니다. 나는 그들이 언젠가 새로운 것을 만들기를 바랍니다.
— Warren P

MSDeploy는 사이트를 올바르게 전송하지 않았습니다. 우리는 각 사이트의 애플리케이션을 포함하는 하나의 사이트로 끝났으므로 전체 구조가 잘못되었습니다.
— brianary dec. 05

확실히 권장되는 방법이며 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/


링크 주셔서 감사합니다. 이를 통해 사이트 ID와 다른 모든 것을 수정할 수 있었고 10 개의 서로 다른 응용 프로그램과 30 개의 서로 다른 가상 디렉터리를 설정할 필요가 없었습니다. 큰 시간 절약
— 2GDave 2014-08-28

이 접근 방식은 기본 종속성 (IIS 모듈 등)을 처리하지 않으므로 위험을 감수하고 사용하십시오.
— Lex Li

12

Microsoft Web Deploy v3 는 모든 파일, 구성 설정 등을 내보내고 가져올 수 있습니다. 모든 파일을 새 서버로 가져올 준비가 된 zip 아카이브에 저장합니다. 최신 버전의 IIS (v7-v8)로 업그레이드 할 수도 있습니다.

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

도구 설치 후 : IIS 관리 콘솔에서 서버 또는 웹 사이트를 마우스 오른쪽 버튼으로 클릭하고 '배포', '애플리케이션 내보내기 ...'를 선택하고 내보내기를 실행합니다.

새 서버에서 동일한 방법으로 내 보낸 zip 아카이브를 가져옵니다.


하지만 모든 파일이 필요합니다. 파일 가져 오기를 건너 뛰는 방법이 있습니까? 예를 들어 FTP 서버를 마이그레이션하는 경우 모든 파일을 선택하여 압축하려고합니다.
— RayofCommand

2
@RayofCommand-배포 옵션을 선택할 때 "콘텐츠"목록을 지울 수 있습니다. 그러면 패키지에 모든 파일이 포함되지는 않습니다.
— Zhaph-Ben Duguid

1
그러나 전체 서버 이동이 아니라 사이트별로 배포 할 때만 가능합니다.
— Ethan Allen

1
대상 서버 (IIS8)에 MS 웹 배포를 설치 한 후 IIS 관리 콘솔에 웹 배포 옵션이 포함되지 않습니다.
— brianary

1
패키지를 설치 한 후 "배포"메뉴도 없습니다.
— Devil 's Advocate

3

appcmd를 사용하여 하나 또는 모든 사이트를 내 보낸 다음 새 서버로 다시 가져옵니다. iis7.0 또는 7.5 일 수 있습니다. appcmd를 사용하여 내보낼 때 암호가 해독 된 다음 다시 가져 와서 다시 암호화됩니다.


3

담당자 부족으로 댓글을 달 수 없습니다. 또 다른 제안자는 IIS의 하위 버전에서 상위 버전으로 마이그레이션 할 수 없다고 말했습니다. 일부 파일을 병합하지 않은 경우에도 해당되지만, chews가 게시 한 답변을 사용하여 IIS 7.5 사이트를 IIS 8.0으로 마이그레이션 한 것처럼 가능합니다.

내보내기가 생성되면 (II7.5) IIS7.5 서버의 리소스에 대한 참조가있는 두 개의 키 파일 (administration.config 및 applicationHost.config)이 있습니다. 예를 들어 DLL은 7.5에 특정한 공개 키 및 버전으로 참조됩니다. IIS8 서버에서는 동일하지 않습니다. 기능 구성도 다를 수 있습니다 (내가 동일하다는 것을 확인했습니다). 8에는 7.5에는 존재하지 않을 몇 가지 새로운 기능이 있습니다.

두 파일을 병합 할 정도로 용감하다면 작동합니다. IIS를 망쳐 서 한 번 제거해야했지만 두 번째로 설치했습니다.

나는 병합 도구 (비교를 넘어서)를 사용했고 동등한 것이 없으면 거대한 PITA가 될 것이지만 좋은 비교 도구 (5 분)를 사용하면 꽤 쉬웠습니다.

병합을 수행하려면 가져 오기를 시도하기 전에 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 폴더로 병합했습니다. 사이트 별 태그 / 요소 (예 : applicationPools, customMetadata, 사이트, 인증)를 제외한 FROM 파일의 모든 항목을 푸시했습니다. 특히, 내가 유지해야하는 사이트 별 "위치"태그 블록도 많았지 만 새 서버에는 유지해야하는 서버 별 기본값이있는 자체 "위치"태그 블록이있었습니다.

마지막으로, 서비스 계정을 사용하는 경우 이러한 캐시 된 암호는 정크이므로 앱 풀에 다시 입력해야합니다. 내 사이트 중 어느 것도 처음에는 작동하지 않았지만 필요한 것은 모든 앱 풀에 대한 암호를 다시 입력하는 것이었고 실행 중이었습니다.

댓글을 달 수있는 사람이이 게시물을 쓰레드 아래로 언급하면 ​​복잡한 구성으로 하나의 서버에 많은 사이트를 보유한 저와 같은 다른 사람에게 도움이 될 것입니다.

문안 인사,

스튜어트


실제로 병합 마이그레이션에 Stuart의 답변을 사용했지만 여전히 MS Web Deploy가 마음에 들지 않습니다.
— 씹

1

제 경우에는 파일이 이미 복사되었으므로이 가이드의 단계를 따르는 가장 쉬운 방법을 찾았습니다. https://www.ryadel.com/en/exporting-importing-app-pools-and-websites-configuration-between -다중 IIS 인스턴스 /

AppPools / Websites를 내보내고 xml 파일을 대상 서버에 복사하고 AppPools를 가져온 다음 웹 사이트를 가져 왔습니다. 아주 잘 작동했습니다. 이것은 또한이 질문에 대한 또 다른 훌륭한 옵션입니다.


이것은 기본 앱 풀과 기본 웹 사이트를 덮어 쓸 수 없다는 오류를 표시했습니다.
— devlin carnate

기본값의 이름을 다른 것으로 바꾸시겠습니까? 위에서 설명한 프로세스로 생성되었는지 확인하십시오.
— Ralph

이것은 IIS7.5 (2008)에서 IIS10 (2019)으로가는 저에게 효과적이었습니다. Appcmd는 처음에 이미 존재하는 '기본 웹 사이트'에서 오류를 표시했습니다. 이름 변경이 작동하지 않아 기본 웹 사이트를 삭제했습니다. 그런 다음 가져 오기가 오류없이 실행되었습니다.
— MTAdmin
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.