37

msdeploy을 설치하고 설정하려고합니다. 웹 서버에 원격 서비스를 설치했지만 모든 테스트에서 내게 401 unauthorised error이 표시됩니다. 서버는 Windows 2008 R2입니다.401 인증 문제로 msdeploy (웹 배포)가 실패했습니다.

msdeploy -verb:dump -source:contentPath=c:\inetpub\wwwroot\MyApp,computerName=<IP HERE>,userName=Domain\msdeploy,password=MyPassword 

그리고 오류 :

내가 아주 간단한 msdeploy 명령을 테스트하고 있습니다

Error: Object of type 'contentPath' and path 'c:\inetpub\wwwroot\MonApp' cannot be created. 
Error: Remote agent (URL http://<IP HERE>/MSDEPLOYAGENTSERVICE) could not be contacted. Make sure the remote agent service is installed and started on the target computer. 
Error: An unsupported response was received. The response header 'MSDeploy.Response' was '' but 'v1' was expected. 
Error: The remote server returned an error: (401) Unauthorized. 
Error count: 1. 

을 나는 사용자라는 msdeploy을 생성하고 난 서버의 로컬 관리자 그룹에 추가 . 서비스가 제대로 설치

  • 그건 내가 그것을 시작
  • 다양한 조합을 사용자 이름의 도메인 부분을 사용하지 않는, 그리고 authType이 = 기본
  • 을 감안할 때 모든 권한을 추가 :

    나는 확인했습니다 모든 사람에게 해당 폴더에

  • IIS에서 원격 연결 허용
  • contentPath 및 iisApp에 대한 내 "msdeploy"사용자에 대한 관리 서비스 위임 규칙 추가 (rea 다른 contentPaths 다른 msdeploy와 시도
  • 명령
  • 내가 서버에 RDC에 사용하는 다른 관리자 계정으로 시도
  • ... 땡 this)는 특정 계정을 생성하고, IIS_Users에 해당 계정을 추가했습니다. 해당 사용자를 내 웹 사이트 "IIS 관리자 권한"에 추가하고 모든 공급자에 대해 "관리 서비스 위임"을 설정합니다.

답변

56

나는 당신이이 문서에 따라 WebDeploy 2.0 올바르게 서버를 구성한 있으리라 믿고있어 :

Configure Web Deploy (IIS.NET)

: MS는 웹 배포 2.0의 새로 고침 원래 링크 ISN '를 발표했다 정말로 더 이상 유효하지 않습니다. 나는 이것을 업데이트했지만 시간이 지남에 따라 움직이는 목표가 될 것이라고 생각합니다.

또한 개발/빌드/CI 시스템에 Web Deploy 2.0을 설치해야합니다.

아직 1.0을 사용하고 있다면 업그레이드를 권장합니다. 2.0에서는 몇 가지 큰 개선이있었습니다.

비주얼 스튜디오 2010 년대는 기능 게시 사용 :

비주얼 스튜디오 사이트를 마우스 오른쪽 버튼으로 클릭하여 사이트를 게시 할 수 있습니다 및 선택 "게시"를.비주얼 스튜디오 2010 WebDeploy 2.0 잡았다의의 몇 가지가 있습니다

enter image description here

: 이것은 다음과 같은 대화를 나타납니다. 첫 번째는 VS2010이 WebDeploy/MSDeploy 2.0을 인식하지 못한다는 것입니다. 게시하려고하면 그래서 당신은 다음과 같은 오류가 발생합니다 :

Error 1 Web deployment task failed.((04/02/2011 12:30:40) An error occurred when the request was processed on the remote computer.)

enter image description here

또한 서버의 웹 관리 서비스에 대한 실패한 요청 추적에 다음과 같은 오류를 볼 수 있습니다 C:\inetpub\logs\wmsvc\TracingLogFiles\W3SVC1 당신이 켜져 있다고 가정 :

AspNetModuleDiagErrorEvent
Uri /msdeploy.axd
eventData Tracing deployment agent exception. Request ID ''. Request Timestamp: '02/04/2011
System.UnauthorizedAccessException: Access to the path 'D:\' is denied.

enter image description here

드라이브 문자가 ACCO 달라집니다 귀하의 IIS 사이트가있는 드라이브를 찾으십시오.

GUI에서 게시 메커니즘은 기본적으로 잘못된 버전의 MSDeploy (1.0)를 사용합니다. 우리는 VSD2010에 MSDeploy 2.0을 사용하라고 말하고 싶습니다. 당신은 비주얼 스튜디오를에 위치한 2010의 devenv.exe.config 파일을 편집하여이 작업을 수행 할 수 있습니다 (기본 c:\ 드라이브가 설치 당신이 한 가정)

64 비트 시스템 : c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE 32 비트 시스템 : c:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE

열기까지 devenv.exe.config 좋아하는 XML 편집기에서 (난 그냥 비주얼 스튜디오 2010 자체를 사용) 다음과 같은 XML을 복사

<dependentAssembly> 
    <assemblyIdentity 
    name="Microsoft.Web.Deployment" 
    publicKeyToken="31bf3856ad364e35" culture="neutral"/> 
    <bindingRedirect oldVersion="7.1.0.0" newVersion="8.0.0.0"/> 
</dependentAssembly> 

/configuration/runtime/assemblyBinding 섹션이 추가

,369을

enter image description here

이렇게 변경하면이 변경 사항이 적용되도록 모든 Visual Studio 2010 인스턴스를 닫습니다. VS2010을 다시 시작하고 웹 프로젝트를 연 다음 다시 게시하십시오. 이번에는 성공해야합니다.

출판은 빌드 패키지를 사용하여 :

비주얼 스튜디오 명령 줄에서 실행할 수있는 빌드 패키지를 생성 할 수 있습니다. 이는 Project -> Build Deployment Package을 사용하여 생성됩니다. 지속적인 통합 등을위한 편리한 기능 (패키지는 /t:Package 스위치가있는 msbuild를 사용하여 생성 할 수도 있음).

패키지의 출력 폴더는 일반적으로 기본값이 obj\Package입니다.

불행히도 Visual Studio 2010에서는이 오류가 조금 발생하고 사이트 수준이 아닌 서버에서 1.0을 대상으로 배포 대상으로 지정하는 msdeploy 래퍼 배치 스크립트를 생성합니다.

msdeploy.exe 명령 줄을 직접 만드는 것 외에는 다른 방법이 없습니다. 나는이 좀 더 쉽게 읽을 수 있도록 :

 
"C:\Program Files\IIS\Microsoft Web Deploy v2\\msdeploy.exe" 
    -source:archiveDir='d:\sites\DemoApp\obj\Package\Archive' 
    -dest: 
     auto, 
     computerName='https://yoursite.com:8172/msdeploy.axd?site=yoursitename', 
     userName='demosite', 
     password='somepassword', 
     authtype='basic', 
     includeAcls='False' 
    -verb:sync 
    -disableLink:AppPoolExtension 
    -disableLink:ContentExtension 
    -disableLink:CertificateExtension 
    -setParamFile:"d:\sites\DemoApp\obj\Package\Archive.SetParameters.xml" 
    -allowuntrusted 

주의해야 할 첫 번째 일은 msdeploy.exe의 경로입니다 여러 줄에 걸쳐이 분할했습니다. Visual Studio에서는 버전 1.0에 대한 경로를 생성합니다. 나는 이것을 2.0으로 바꾸었다.

주목할만한 매개 변수 :

-source:archiveDir= 우리가 패키지를 배포하고 로컬 위치를

computerName='https://yoursite.com:8172/msdeploy.axd?site=yoursitename'를 제공하고 msdeploy을 알려줍니다 -이 MSDEPLOY가 IIS7에 특정 사이트에 배포 알려줍니다. yoursitename은 IIS의 사이트 이름과 정확하게 일치해야합니다.

userNamepassword은 사이트의 위임 된 관리자 사용자의 이름입니다. 이는 사이트 수준에서 "IIS 관리자 사용 권한"기능을 사용하여 구성됩니다. 계정은 로컬 Windows 사용자 계정이어야합니다.

-authtype='basic' - 기본 인증을 강제 실행합니다. 그렇지 않으면 NTLM 인증이 시도됩니다.

-allowuntrusted - 내장 자체 서명 SSL 인증서를 사용하면 SSL 인증서 오류가 무시됩니다.

명령 줄을 사용하면 원격 IIS7 서버에 성공적으로 배포 할 수 있습니다.

출판 원시 내용 :

때때로 우리가 로컬 폴더에서 직접 (어쩌면 심지어 클래식 ASP 나 PHP 사이트) 일부 정적 콘텐츠를 게시 할. 우리는 다음과 같은 msdeploy.exe 명령 줄을 사용하여이 작업을 수행 할 수 있습니다

 
"C:\Program Files\IIS\Microsoft Web Deploy v2\\msdeploy.exe" 
    -source:contentPath='d:\websites\mysite' 
    -dest: 
    contentPath='yoursitename', 
    computerName='https://yoursite.com:8172/msdeploy.axd?site=yoursitename', 
    userName='demosite', 
    password='somepassword', 
    authtype='basic', 
    includeAcls='False' 
-verb:sync 
-allowuntrusted 

는 다시 동일한 규칙이 -dest:contentPathcomputerName을 위해 이전에 적용됩니다.

나는 MSDeploy 버전 문제가 SP1에서 해결 될 것으로 믿습니다. 아직 보지 못한 상태입니다.

한 최종 VS2010 잡았다 :

비주얼 스튜디오 2010를 사용하여 게시 할 때 '게시'패키지를 제외한 모든 파일 및 폴더에 대한 읽기 전용으로 변경하기 위해 ACL의 사이트의 익명 계정의 원인이 구축

App_Data 폴더는 읽기 및 쓰기로 변경됩니다. 나는에서 그 유용 덩어리를 발견

msbuild.exe myproject.csproj /t:Package /p:IncludeSetAclProviderOnDestination=False 

: 당신은 MSBuild를 사용하는 경우

<IncludeSetAclProviderOnDestination>False</IncludeSetAclProviderOnDestination> 

또는를 :

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> 아래 .csproj 파일에 다음 설정을 추가하여 해결할 수 있습니다 여기 :

Skipping setting an ACL in a Visual Studio 2010 deployment package (WayBackMachine link because the original content is no longer available)

+0

이것은 Kev의 훌륭한 게시물입니다. 여기에 정말 유용한 정보가 있습니다. 그러나 내 문제의 경우 컴퓨터 관리 계정을 사용하지 않으면 401 인증 오류를 보았습니다 (내 대답은 아래에 설명되어 있음). –

+1

msdeploy.axd? site = yoursitename은 나를 위해 그것을 고쳤습니다. 사이트 매개 변수를 나갔다면 401이 생겼습니다. 감사합니다. – Schneider

+0

이 멋진 답변에 감사드립니다. ? site = ... 나는 방금 3 시간의 나의 인생을 보내었던 것이었다! :) – Ragesh

3

우리는 당신과 비슷한 문제에 직면했습니다.

이 경우 서비스에서 원격 에이전트 서비스를 시작해야합니다. IP 주소에서 오류가 발생했기 때문에 PC 이름을 사용했습니다. 따라서 PC 이름, 사용자 이름 및 암호를 사용해보십시오.

1

결국 나는 어떤 p ermissions 배포 한 사용자 계정이 없어졌습니다.하지만 컴퓨터 관리 계정을 사용하면 배포가 성공할 것입니다. 지금은 배포를 위해 관리자 계정을 사용하고 있습니다.MS를 설정하는 환상적이고 유익한 요약에 대한 케빈에

명예는 나를 위해 2 :

6

이 출판 비주얼 스튜디오에서 일 배포,하지만 난 .deploy.cmd 스크립트를 실행할 때 작동하지 않았다.

.csproj<UseMsdeployExe>true</UseMsdeployExe>을 설정하면 VS가 MSBuild 작업 대신 msdeploy.exe를 사용하도록 할 수 있습니다. 그런 다음 로깅 수준을 올리면 (도구> 옵션> 프로젝트 및 솔루션> 빌드 및 실행> MSBuild 프로젝트 빌드 출력 자세한 정보 표시) VS에서 사용하는 명령 줄을 볼 수 있습니다. 내 .deploy.cmd

문제는 있었다 : 나는 computerName?site=<SITENAME>을 필요로하므로

  • 내 IIS의 사용자는 해당 사이트에 대한 사용 권한을 가지고 있었다.
  • -dest: 매개 변수에 AuthType='Basic'이 필요했습니다.
+1

속성 제안에 감사드립니다. –

0

무엇이 가치가 있는지. 게시가 저를 위해 일하고 있었는데 언젠가는 저도 똑같은 문제 (401 unauthorized error)가있었습니다. VS2012를 다시 시작하면 문제가 해결되었습니다. 다른 모든 솔루션을 시도하기 전에 시도해 봤으면 좋겠다.

관련 문제