나는 당신이이 문서에 따라 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 잡았다의의 몇 가지가 있습니다
: 이것은 다음과 같은 대화를 나타납니다. 첫 번째는 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.)
또한 서버의 웹 관리 서비스에 대한 실패한 요청 추적에 다음과 같은 오류를 볼 수 있습니다 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.
드라이브 문자가 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을
이렇게 변경하면이 변경 사항이 적용되도록 모든 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의 사이트 이름과 정확하게 일치해야합니다.
userName
및 password
은 사이트의 위임 된 관리자 사용자의 이름입니다. 이는 사이트 수준에서 "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:contentPath
및 computerName
을 위해 이전에 적용됩니다.
나는 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)
이것은 Kev의 훌륭한 게시물입니다. 여기에 정말 유용한 정보가 있습니다. 그러나 내 문제의 경우 컴퓨터 관리 계정을 사용하지 않으면 401 인증 오류를 보았습니다 (내 대답은 아래에 설명되어 있음). –
msdeploy.axd? site = yoursitename은 나를 위해 그것을 고쳤습니다. 사이트 매개 변수를 나갔다면 401이 생겼습니다. 감사합니다. – Schneider
이 멋진 답변에 감사드립니다. ? site = ... 나는 방금 3 시간의 나의 인생을 보내었던 것이었다! :) – Ragesh