appcmd를 통해 IIS에서 실제 경로 변경이 활성화되지 않았습니다


9

IIS 7.5에서는 다음과 같이 구성된 간단한 배포 시스템이 있습니다.

세 개의 폴더로 구성된 새 웹 루트의 zip 파일을 만듭니다.

Api
Site
Manager

새 폴더에 압축이 풀리고 ( "SITE_REV1"이라고 함) 다음을 호출하는 스크립트가 포함되어 있습니다 (각 웹 루트마다 하나씩).

C:\Windows\system32\inetsrv\appcmd set vdir "www.site.com/" -physicalPath:"SITE_REV1\Site"

이것은 보통 9/10 번 작동합니다. 경우에 따라 웹 루트가 올바르게 업데이트 된 것 같습니다 (IIS 관리자에서 기본 설정을 검사하면 경로가 올바른 것처럼 보입니다). 문제가되는 사이트는 실제로 이전 위치를 가리 킵니다. "수정"할 수있는 유일한 방법은 IIS- 재설정을 실행하는 것입니다. 문제의 응용 프로그램 풀을 재활용하는 것만으로는 충분하지 않습니다.

때로는 재부팅해야 할 필요가있는 것처럼 보이지만 100 % 정확하지는 않습니다 (항상 문제를 해결 한 것은 아닙니다).

appcmd에 결함이 있기를 희망하면서 Powershell과 웹 관리 모듈을 사용하여 스크립트를 다시 작성했지만 동일한 문제가 발생합니다.

Set-ItemProperty "IIS:\Sites\www.site.com" -Name physicalPath -Value "SITE_REV1\Site"

누구든지 이런 경험을 했습니까? 누구나 무슨 일이 일어나고 있는지, 그리고이 문제를 방지하기 위해 무엇을 할 수 있습니까? IIS 재설정을 수행하는 것은 실제로 우리에게 좋은 옵션이 아닙니다. 단일 사이트에서 변경 사항을 배포하려고 할 때마다 서버의 모든 사이트에 영향을 미치기 때문입니다.

편집 : IIS 관리자의 사이트 시작 / 중지 (응용 프로그램 풀이 아님)가 잘못된 물리적 경로를 해결하지만 appcmd를 사용하여 사이트를 중지하고 물리적 경로를 변경 한 다음 시작하면 여전히 고통을 겪고 있습니다. 같은 문제. 난 빈칸에있어


1
작동하지 않는 경우 요청이 겹치는 순환을 통해 기존 앱 풀에서 기존 요청을 처리했을 수 있습니까? 사이트의 가동 시간 요구 사항을 모르지만 중복 회전을 비활성화하고 배포 스크립트에 앱 풀 재활용 명령을 포함시킬 수 있습니다.
explunit

아니요, 모든 후속 요청은 이전 웹 루트에서 제공되며 심지어 응용 프로그램 재순환도 이전 루트에서 애플리케이션을 다시로드합니다. IIS를 재설정하는 것이 유일한 방법입니다. IIS 관리자가 올바른 경로를 표시하기 때문에 applicationHost.config가 업데이트되는 것과 비슷하지만 IIS 서버 자체는 이전 구성에서 작동합니다.
jishi

applicationHost.config에서 언급을 찾을 수 없으므로 기본 "false"라고 가정합니까?
jishi

좋아, disallowOverlappingRotation = true인지 생각하면 오래 실행되는 스레드 등으로 인해 오래된 앱 풀이 종료되지 않을 수 있습니다. IIS를 완전히 지우려면 IIS 재설정이 필요한 이유입니다. 흥미로운 질문-어떤 답변이 표시되는지 궁금합니다.
explunit

앱 풀 재활용은 중지 / 시작과 동일하지 않습니다. 이 방법을 사용해 보셨습니까? 앱 풀이 다시 시작될 때까지 현재 연결이 모두 끊어지고 사이트를 사용할 수 없게됩니다 (오류 500).
John Homer

답변:


0

IIS 관리자에서 실제 경로를 변경하면 즉시 올바르게 작동합니까?

다음 명령을 시도 할 수 있습니다. 구문이 다르면 결과는 같아야하지만 내부적으로 약간 다르게 작동하여 IIS가 변경 사항을 선택하도록합니다 (더 나은).

C:\Windows\System32\inetsrv\appcmd.exe set app "www.site.com/" -[path='/'].physicalPath:"SITE_REV1\Site"


AFAIK IIS 관리자에서 수동으로 프로그램 적으로 만 변경할 때 아무런 문제가 없었습니다.
jishi

0

사이트 당 앱 풀 재활용이 충분해야합니다. 이들은 독립적 인 프로세스입니다. 너무 자주 기사와 프로세스가 iisreset 사용을 홍보합니다. 한 사이트의 앱 풀을 중지 / 시작하는 것이 옵션입니까? 이것이 단일 서버 솔루션입니까? 사이트의 다운 타임을 최소화하려고합니까? 구성 변경시 재활용을 비활성화하는 옵션이 있습니다. 그런 다음 수동으로 재활용 할 수 있습니다. 문제가 발생하면 applicationHost.config에 무엇입니까?


100 % 확신 할 수는 없지만 IIS 관리자가 새 경로를 나열하므로 applicationHost.config가 최신 버전이라고 가정합니다. 그러나 프로세스가 재활용되면 새로 구성된 값을 사용하지 않는 것 같습니다. 가끔 발생하기 때문에 적시에 문제를 해결하기가 어렵습니다.
jishi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.