다음을 통해 공유


대상 환경의 배포 속성 구성

작성자 : Jason Lee

이 항목에서는 특정 대상 환경에 샘플 Contact Manager 솔루션을 배포하기 위해 환경별 속성을 구성하는 방법에 대해 설명합니다.

이 항목은 Fabrikam, Inc.라는 가상 회사의 엔터프라이즈 배포 요구 사항을 기반으로 하는 일련의 자습서의 일부를 구성합니다. 이 자습서 시리즈에서는 샘플 솔루션( Contact Manager 솔루션)을 사용하여 ASP.NET MVC 3 애플리케이션, WCF(Windows Communication Foundation) 서비스 및 데이터베이스 프로젝트를 포함하여 현실적인 수준의 복잡성을 가진 웹 애플리케이션을 나타냅니다.

이 자습서의 핵심인 배포 방법은 빌드 프로세스 이해에 설명된 분할 프로젝트 파일 접근 방식을 기반으로 하며, 빌드 프로세스는 모든 대상 환경에 적용되는 빌드 지침과 환경별 빌드 및 배포 설정을 포함하는 두 개의 프로젝트 파일에 의해 제어됩니다. 빌드 시 환경별 프로젝트 파일이 환경에 구애받지 않은 프로젝트 파일로 병합되어 전체 빌드 지침 집합을 형성합니다.

프로세스 개요

Contact Manager 솔루션을 빌드하고 배포하는 데 사용할 프로젝트 파일은 두 개의 물리적 파일로 분할됩니다.

  • 범용 빌드 설정 및 지침( Publish.proj 파일)이 포함된 빌드 설정입니다.
  • 환경별 빌드 설정(Env-Dev.proj, Env-Stage.proj 등)이 포함된 빌드 설정입니다.

빌드 시 적절한 환경별 프로젝트 파일이 유니버설 Publish.proj 파일에 병합되어 전체 빌드 지침 집합을 구성합니다. 사용자 고유의 배포 시나리오를 설명하는 설정을 사용하여 환경별 프로젝트 파일을 만들거나 사용자 지정하여 특정 대상 환경에 대한 배포를 구성할 수 있습니다.

이러한 값의 대부분은 대상 환경이 구성되는 방법, 특히 대상 웹 서버가 웹 Deployment Agent 서비스(원격 에이전트) 또는 웹 배포 처리기를 사용하도록 구성되어 있는지 여부에 따라 결정됩니다. 이러한 접근 방식에 대한 자세한 내용과 사용자 환경에 적합한 접근 방식을 선택하는 방법에 대한 지침은 웹 배포에 대한 올바른 접근 방식 선택을 참조하세요.

Contact Manager 시나리오에는 두 개의 환경별 프로젝트 파일이 필요합니다.

  • 개발자 테스트 환경에 배포(Env-Dev.proj). 개발자 테스트 환경은 시나리오: 웹 배포용 테스트 환경 구성에 설명된 대로 원격 에이전트를 사용하여 원격 배포를 허용하도록 구성됩니다. 이 파일은 원격 에이전트 엔드포인트 주소뿐만 아니라 연결 문자열 및 서비스 엔드포인트와 같은 위치별 설정을 제공해야 합니다.
  • 스테이징 환경에 배포(Env-Stage.proj). 스테이징 환경은 시나리오: 웹 배포를 위한 스테이징 환경 구성에 설명된 대로 웹 배포 처리기를 사용하여 원격 배포를 허용하도록 구성됩니다. 이 파일은 웹 배포 처리기 엔드포인트 주소뿐만 아니라 연결 문자열 및 서비스 엔드포인트와 같은 위치별 설정을 제공해야 합니다.

환경별 프로젝트 파일에서 구성하는 설정은 웹 패키지 자체의 내용에 영향을 주지 않습니다. 대신 패키지가 배포되는 방식과 패키지를 추출할 때 제공되는 매개 변수 값을 제어합니다. 시나리오: 웹 배포를 위한 프로덕션 환경 구성 및 수동으로 웹 패키지 설치에 설명된 대로 웹 패키지를 프로덕션 환경으로 수동으로 가져오므로 패키지를 생성할 때 환경별 프로젝트 파일에서 사용한 설정은 중요하지 않습니다. IIS(인터넷 정보 서비스) 관리자는 패키지를 가져올 때 연결 문자열 및 서비스 엔드포인트와 같은 매개 변수가 있는 값을 묻는 메시지를 표시합니다.

Contact Manager 솔루션을 사용자 고유의 대상 환경에 배포하려면 이 파일을 사용자 지정하거나 템플릿으로 사용하고 사용자 고유의 파일을 만들 수 있습니다.

Contact Manager 솔루션에 대한 환경별 배포 설정을 구성하려면

  1. Visual Studio 2010에서 ContactManager-WCF 솔루션을 엽니다.

  2. 솔루션 탐색기 창에서 게시 폴더를 확장하고 EnvConfig 폴더를 확장한 다음 Env-Dev.proj를 두 번 클릭합니다.

    솔루션 탐색기 창에서 게시 폴더를 확장하고 EnvConfig 폴더를 확장한 다음 Env-Dev.proj를 두 번 클릭합니다.

  3. Env-Dev.proj 파일의 속성 값을 사용자 고유의 테스트 환경에 대한 올바른 값으로 바꿉 있습니다.

    참고

    이 절차를 따르는 표에서는 이러한 각 속성에 대한 자세한 정보를 제공합니다.

  4. 작업을 저장한 다음 Env-Dev.proj 파일을 닫습니다.

올바른 배포 속성 선택

이 표에서는 샘플 환경별 프로젝트 파일 Env-Dev.proj에서 각 속성의 용도를 설명하고 제공해야 하는 값에 대한 몇 가지 지침을 제공합니다.

속성 이름 세부 정보
MSDeployComputerName 대상 웹 서버 또는 서비스 엔드포인트의 이름입니다. 대상 웹 서버의 원격 에이전트 서비스에 배포하는 경우 대상 컴퓨터 이름(예: TESTWEB1 또는 TESTWEB1.fabrikam.net)을 지정하거나 원격 에이전트 엔드포인트(예 http://TESTWEB1/MSDEPLOYAGENTSERVICE: )를 지정할 수 있습니다. 배포는 각 경우에 동일한 방식으로 작동합니다. 대상 웹 서버의 웹 배포 처리기에 배포하는 경우 서비스 엔드포인트를 지정하고 IIS 웹 사이트의 이름을 쿼리 문자열 매개 변수(예 https://STAGEWEB1:8172/MSDeploy.axd?site=DemoSite: )로 포함해야 합니다.
MSDeployAuth 웹 배포에서 원격 컴퓨터에 인증하는 데 사용해야 하는 메서드입니다. NTLM 또는 기본으로 설정해야 합니다. 일반적으로 원격 에이전트 서비스에 배포하는 경우 NTLM 을 사용하고 웹 배포 처리기에 배포하는 경우 Basic 을 사용합니다. 기본 인증을 사용하는 경우 배포를 수행하기 위해 IIS 웹 배포 도구(웹 배포)가 가장해야 하는 사용자 이름 및 암호도 지정해야 합니다. 이 예제에서 이러한 값은 MSDeployUsernameMSDeployPassword 속성을 통해 제공됩니다. NTLM 인증을 사용하는 경우 이러한 속성을 생략하거나 비워 둘 수 있습니다.
MSDeployUsername 기본 인증을 사용하는 경우 웹 배포는 원격 컴퓨터에서 이 계정을 사용합니다. 도메인*사용자 이름*(예: FABRIKAM\matt) 형식을 사용해야 합니다. 이 값은 기본 인증을 지정하는 경우에만 사용됩니다. NTLM 인증을 사용하는 경우 속성을 생략할 수 있습니다. 값이 제공되면 무시됩니다.
MSDeployPassword 기본 인증을 사용하는 경우 웹 배포는 원격 컴퓨터에서 이 암호를 사용합니다. MSDeployUsername 속성에 지정한 사용자 계정의 암호입니다. 이 값은 기본 인증을 지정하는 경우에만 사용됩니다. NTLM 인증을 사용하는 경우 속성을 생략할 수 있습니다. 값이 제공되면 무시됩니다.
ContactManagerIisPath Contact Manager MVC 애플리케이션을 배포하려는 IIS 경로입니다. 이 경로는 IIS 관리자에서 [IIS 웹 사이트 이름]/[애플리케이션 이름] 형식으로 표시되는 경로여야 합니다. 애플리케이션을 배포하기 전에 IIS 웹 사이트가 있어야 합니다. 예를 들어 DemoSite라는 IIS 웹 사이트를 만든 경우 MVC 애플리케이션의 IIS 경로를 DemoSite/ContactManager로 지정할 수 있습니다.
ContactManagerServiceIisPath Contact Manager WCF 서비스를 배포할 IIS 경로입니다. 예를 들어 DemoSite라는 IIS 웹 사이트를 만든 경우 WCF 서비스의 IIS 경로를 DemoSite/ContactManagerService로 지정할 수 있습니다.
ContactManagerTargetUrl WCF 서비스에 연결할 수 있는 URL입니다. 이 형식은 [IIS 웹 사이트 루트 URL]/[서비스 애플리케이션 이름]/[서비스 엔드포인트]입니다. 예를 들어 포트 85에서 IIS 웹 사이트를 만든 경우 URL은 형식 http://localhost:85/ContactManagerService/ContactService.svc을 사용합니다. MVC 애플리케이션과 WCF 서비스는 동일한 서버에 배포됩니다. 따라서 이 URL은 설치된 컴퓨터에서만 액세스됩니다. 이 때문에 URL에서 컴퓨터 이름 또는 호스트 헤더 대신 localhost 또는 IP 주소를 사용하는 것이 좋습니다. 컴퓨터 이름 또는 호스트 헤더를 사용하는 경우 IIS의 루프백 검사 보안 기능은 URL을 차단하고 HTTP 401.1 - 권한 없는 오류를 반환할 수 있습니다.
CmDatabaseConnectionString 데이터베이스 서버에 대한 연결 문자열입니다. 연결 문자열은 VSDBCMD가 데이터베이스 서버에 연결하고 데이터베이스를 만드는 데 사용할 자격 증명과 웹 서버 애플리케이션 풀이 데이터베이스 서버에 연결하고 데이터베이스와 상호 작용하는 데 사용할 자격 증명을 모두 결정합니다. 기본적으로 여기에 두 가지 선택 사항이 있습니다. 통합 보안=true를 지정할 수 있습니다. 이 경우 통합 Windows 인증 사용됩니다. Data Source=TESTDB1;Integrated Security=true 이 경우 데이터베이스는 VSDBCMD 실행 파일을 실행하는 사용자의 자격 증명을 사용하여 만들어지고 애플리케이션은 웹 서버 컴퓨터 계정의 ID를 사용하여 데이터베이스에 액세스합니다. 또는 SQL Server 계정의 사용자 이름과 암호를 지정할 수 있습니다. 이 경우 SQL Server 자격 증명은 VSDBCMD에서 데이터베이스를 만들고 애플리케이션 풀에서 데이터베이스와 상호 작용하는 데 사용됩니다. Data Source=TESTDB1; User Id=ASqlUser; Password=Pa$$w 0rd 이 항목의 연습에서는 통합 Windows 인증 사용한다고 가정합니다.
CmTargetDatabase 데이터베이스 서버에서 만들 데이터베이스를 지정하려는 이름입니다. 여기서 제공하는 값은 VSDBCMD 명령에 매개 변수로 추가됩니다. 또한 웹 서버의 애플리케이션 풀이 데이터베이스와 상호 작용하는 데 사용할 수 있는 전체 연결 문자열을 빌드하는 데도 사용됩니다.

이러한 예제에서는 특정 배포 시나리오에 대해 이러한 속성을 구성하는 방법을 보여 줍니다.

예제 1 - 원격 에이전트 서비스에 배포

이 예제에서는 다음이 적용됩니다.

  • TESTWEB1의 원격 에이전트 서비스에 배포하고 있습니다.
  • NTLM 인증을 사용하도록 웹 배포에 지시합니다. 웹 배포는 Microsoft Build Engine(MSBuild)를 호출하는 데 사용한 자격 증명을 사용하여 실행됩니다.
  • 통합 인증을 사용하여 ContactManager 데이터베이스를 TESTDB1에 배포합니다. 데이터베이스는 MSBuild를 호출하는 데 사용한 자격 증명을 사용하여 배포됩니다.
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>    
    <MSDeployComputerName Condition=" '$(MSDeployComputerName)'=='' ">
      TESTWEB1.fabrikam.net
    </MSDeployComputerName>
    <MSDeployAuth Condition=" '$(MSDeployAuth)'=='' ">NTLM</MSDeployAuth>
    <ContactManagerTargetUrl Condition =" '$(ContactManagerTargetUrl)'=='' ">
      http://localhost:85/ContactManagerService/ContactService.svc
    </ContactManagerTargetUrl>
    <ContactManagerIisPath Condition=" '$(ContactManagerIisPath)'=='' ">
      DemoSite/ContactManager
    </ContactManagerIisPath>
    <ContactManagerServiceIisPath 
      Condition=" '$(ContactManagerServiceIisPath)'=='' ">
        DemoSite/ContactManagerService
    </ContactManagerServiceIisPath>
    <CmDatabaseConnectionString Condition=" '$(CmDatabaseConnectionString)'=='' ">
      Data Source=TESTDB1;Integrated Security=true</CmDatabaseConnectionString>
    <CmTargetDatabase Condition=" '$(CmTargetDatabase)'=='' ">
      ContactManager
    </CmTargetDatabase>
  </PropertyGroup>  
</Project>

예제 2 - 웹 배포 처리기 엔드포인트에 배포

이 예제에서는 다음이 적용됩니다.

  • STAGEWEB1의 웹 배포 처리기 서비스 엔드포인트에 배포하고 있습니다.
  • 기본 인증을 사용하도록 웹 배포에 지시합니다.
  • 웹 배포가 원격 컴퓨터에서 FABRIKAM\stagingdeployer 계정을 가장해야 한다고 지정합니다.
  • SQL Server 인증을 사용하여 ContactManager 데이터베이스를 STAGEDB1에 배포합니다.
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>    
    <MSDeployComputerName Condition=" '$(MSDeployComputerName)'=='' ">
      https://STAGEWEB1:8172/MSDeploy.axd?site=DemoSite
    </MSDeployComputerName>
    <MSDeployAuth Condition=" '$(MSDeployAuth)'=='' ">Basic</MSDeployAuth>
    <MSDeployUsername Condition=" '$(MSDeployUsername)'=='' ">
      FABRIKAM\stagingdeployer
    </MSDeployUsername>
    <MSDeployPassword Condition=" '$(MSDeployPassword)'=='' ">
      Pa$$w0rd
    </MSDeployPassword>
    <ContactManagerTargetUrl Condition =" '$(ContactManagerTargetUrl)'=='' ">
      http://localhost:85/ContactManagerService/ContactService.svc
    </ContactManagerTargetUrl>
    <ContactManagerIisPath Condition=" '$(ContactManagerIisPath)'=='' ">
      DemoSite/ContactManager
    </ContactManagerIisPath>
    <ContactManagerServiceIisPath 
      Condition=" '$(ContactManagerServiceIisPath)'=='' ">
        DemoSite/ContactManagerService
    </ContactManagerServiceIisPath>
    <CmDatabaseConnectionString Condition=" '$(CmDatabaseConnectionString)'=='' ">
      Data Source=STAGEDB1;User ID=sa;'$($CREDENTIAL_PLACEHOLDER$)'
    </CmDatabaseConnectionString>
    <CmTargetDatabase Condition=" '$(CmTargetDatabase)'=='' ">
      ContactManager
    </CmTargetDatabase>
  </PropertyGroup>  
</Project>

결론

이 시점에서 프로젝트 파일은 하나 이상의 대상 환경에 Contact Manager 솔루션을 빌드하고 배포하도록 완전히 구성됩니다.

이러한 프로젝트 파일을 반복 가능한 단일 단계 배포 프로세스의 일부로 사용하려면 MSBuild를 사용하여 Publish.proj 파일을 실행하고 환경별 프로젝트 파일의 위치를 매개 변수로 전달해야 합니다. 다양한 방법으로 이 작업을 수행할 수 있습니다.