대상 환경의 배포 속성 구성Configuring Deployment Properties for a Target Environment

Jason Leeby Jason Lee

PDF 다운로드Download PDF

이 항목에서는 특정 대상 환경에 샘플 Contact Manager 솔루션을 배포 하기 위해 환경 특정 속성을 구성 하는 방법에 대해 설명 합니다.This topic describes how to configure environment-specific properties in order to deploy the sample Contact Manager solution to a specific target environment.

이 항목에서는 Fabrikam, i n c. 라는 가상 회사의 엔터프라이즈 배포 요구 사항을 기반으로 하는 일련의 자습서의 일부를 형성 합니다. 이 자습서 시리즈에서는 ASP.NET MVC 3 응용 프로그램, Windows Communication Foundation (WCF) 서비스 및 데이터베이스 프로젝트를 비롯 하 여 현실적인 복잡성의 웹 응용 프로그램을 나타내는 데—Contact Manager 솔루션—샘플 솔루션을 사용 합니다.This topic forms part of a series of tutorials based around the enterprise deployment requirements of a fictional company named Fabrikam, Inc. This tutorial series uses a sample solution—the Contact Manager solution—to represent a web application with a realistic level of complexity, including an ASP.NET MVC 3 application, a Windows Communication Foundation (WCF) service, and a database project.

이러한 자습서의 핵심에 나오는 배포 방법은 빌드 프로세스 이해에서 설명한 빌드 프로세스 이해에서 설명한 빌드 프로세스 이해에 설명 된 것입니다. 빌드 프로세스는 모든 대상 환경에 적용 되는 빌드 지침을 포함 하 고 다른 하나는 환경 특정 빌드 및 배포 설정을 포함 하는 프로젝트—파일에 의해 제어 됩니다.The deployment method at the heart of these tutorials is based on the split project file approach described in Understanding the Build Process, in which the build process is controlled by two project files—one containing build instructions that apply to every destination environment, and one containing environment-specific build and deployment settings. 빌드 시 환경 관련 프로젝트 파일은 환경에 관계 없는 프로젝트 파일에 병합 되어 전체 빌드 명령 집합을 형성 합니다.At build time, the environment-specific project file is merged into the environment-agnostic project file to form a complete set of build instructions.

프로세스 개요Process Overview

Contact Manager 솔루션을 빌드하고 배포 하는 데 사용할 프로젝트 파일은 두 개의 물리적 파일로 분할 됩니다.The project file that you'll use to build and deploy the Contact Manager solution is split into two physical files:

  • 유니버설 빌드 설정 및 명령 ( Publish. proj 파일)을 포함 하는 항목입니다.One that contains universal build settings and instructions (the Publish.proj file).
  • 환경 특정 빌드 설정 (env, env, env 등)을 포함 하는 하나입니다.One that contains environment-specific build settings (Env-Dev.proj, Env-Stage.proj, and so on).

빌드 시 적절 한 환경 관련 프로젝트 파일이 유니버설 Publish. proj 파일에 병합 되어 전체 빌드 명령 집합을 형성 합니다.At build time, the appropriate environment-specific project file is merged into the universal Publish.proj file to form a complete set of build instructions. 고유한 배포 시나리오를 설명 하는 설정을 사용 하 여 환경 특정 프로젝트 파일을 만들거나 사용자 지정 하 여 특정 대상 환경에 대 한 배포를 구성할 수 있습니다.You can configure deployment to specific destination environments by creating or customizing environment-specific project files with settings that describe your own deployment scenario.

이러한 값의 대부분은 대상 웹 서버가 웹 Deployment Agent 서비스 (원격 에이전트)를 사용 하도록 구성 되어 있는지, 아니면 웹 배포 처리기를 사용 하도록 구성 되어 있는지에 따라 특정—대상 환경이 구성 되는 방식에 따라 결정 됩니다.Lots of these values are determined by how your destination environment is configured—in particular, whether your target web server is configured to use the Web Deployment Agent Service (the remote agent) or the Web Deploy Handler. 이러한 접근 방식에 대 한 자세한 내용과 사용자 환경에 적합 한 접근 방식을 선택 하는 방법에 대 한 자세한 내용은 웹 배포에 대 한 적절 한 접근 방법 선택을 참조 하세요.For more information on these approaches, and for guidance on choosing the right approach for your own environment, see Choosing the Right Approach to Web Deployment.

연락처 관리자 시나리오 에는 다음과 같은 두 가지 환경 관련 프로젝트 파일이 필요 합니다.The Contact Manager scenario requires two environment-specific project files:

  • 개발자 테스트 환경에 배포 (Env-Dev. proj)Deployment to a developer test environment (Env-Dev.proj). 시나리오: 웹 배포용 테스트 환경 구성에 설명 된 대로 원격 에이전트를 사용 하 여 원격 배포를 허용 하도록 개발자 테스트 환경을 구성 합니다.The developer test environment is configured to accept remote deployments using the remote agent, as described in Scenario: Configuring a Test Environment for Web Deployment. 이 파일은 원격 에이전트 끝점 주소 뿐만 아니라 연결 문자열 및 서비스 끝점과 같은 위치 관련 설정도 제공 해야 합니다.This file needs to provide the remote agent endpoint address as well as location-specific settings like connection strings and service endpoints.
  • 스테이징 환경에 배포 (Env-단계 proj).Deployment to a staging environment (Env-Stage.proj). 스테이징 환경은 시나리오: 웹 배포용 스테이징 환경 구성에 설명 된 대로 웹 배포 처리기를 사용 하 여 원격 배포를 허용 하도록 구성 됩니다.The staging environment is configured to accept remote deployments using the Web Deploy Handler, as described in Scenario: Configuring a Staging Environment for Web Deployment. 이 파일에는 연결 문자열 및 서비스 끝점과 같은 위치 관련 설정 뿐만 아니라 웹 배포 처리기 끝점 주소를 제공 해야 합니다.This file needs to provide the Web Deploy Handler endpoint address as well as location-specific settings like connection strings and service endpoints.

환경에 따라 달라 지는 프로젝트 파일에서 구성 하는 설정은 웹 패키지—자체의 내용에 영향을 주지 않습니다. 대신 패키지를 배포 하는 방법 및 패키지를 추출할 때 제공 되는 매개 변수 값을 제어 하는 것이 중요 합니다.It's important to note that the settings you configure in the environment-specific project file don't affect the contents of the web package itself—instead, they control how the package is deployed and what parameter values are provided when the package is extracted. 시나리오: 웹 배포용 프로덕션 환경 구성웹 패키지 수동 설치시나리오에 설명 된 대로 웹 패키지를 프로덕션 환경으로 수동으로 가져오는 것이 좋습니다. 따라서 패키지를 생성할 때 환경 관련 프로젝트 파일에서 사용 하는 설정이 중요 하지 않습니다.You're importing the web package into the production environment manually, as described in Scenario: Configuring a Production Environment for Web Deployment and Manually Installing Web Packages, so it doesn't matter what settings you used in the environment-specific project file when you generated the package. 인터넷 정보 서비스 (IIS) 관리자는 패키지를 가져올 때 연결 문자열 및 서비스 끝점과 같은 매개 변수가 있는 값을 묻는 메시지를 표시 합니다.Internet Information Services (IIS) Manager will prompt you for any parameterized values, like connection strings and service endpoints, when you import the package.

사용자 고유의 대상 환경에 연락 관리자 솔루션을 배포 하려면이 파일을 사용자 지정 하거나 템플릿으로 사용 하 여 고유한 파일을 만들 수 있습니다.To deploy the Contact Manager solution to your own target environment, you can either customize this file or use it as a template and create your own file.

Contact Manager 솔루션에 대 한 환경 특정 배포 설정을 구성 하려면To configure environment-specific deployment settings for the Contact Manager solution

  1. Visual Studio 2010에서 연락처 관리자-WCF 솔루션을 엽니다.Open the ContactManager-WCF solution in Visual Studio 2010.

  2. 솔루션 탐색기 창에서 게시 폴더를 확장 하 고 EnvConfig 폴더를 확장 한 다음 Env-Dev. proj 를 두 번 클릭 합니다.In the Solution Explorer window, expand the Publish folder, expand the EnvConfig folder, and then double-click Env-Dev.proj.

  3. Env-Dev. proj 파일의 속성 값을 고유한 테스트 환경에 맞는 올바른 값으로 바꿉니다.Replace the property values in the Env-Dev.proj file with the correct values for your own test environment.

    Note

    이 절차 다음에 나오는 표에서는 이러한 각 속성에 대 한 자세한 정보를 제공 합니다.The table that follows this procedure provides more information on each of these properties.

  4. 작업 내용을 저장 하 고 Env-Dev. n e f 파일을 닫습니다.Save your work, and then close the Env-Dev.proj file.

올바른 배포 속성 선택Choosing the Right Deployment Properties

이 표에서는 샘플 환경 관련 프로젝트 파일인 Env-Dev 에서 각 속성의 용도를 설명 하 고 제공 해야 하는 값에 대 한 몇 가지 지침을 제공 합니다.This table describes the purpose of each property in the sample environment-specific project file, Env-Dev.proj, and provides some guidance on the values you should provide.

속성 이름Property Name 세부 정보Details
MSDeployComputerName 대상 웹 서버 또는 서비스 끝점의 이름입니다.MSDeployComputerName The name of the destination web server or service endpoint. 대상 웹 서버에서 원격 에이전트 서비스에 배포 하는 경우 대상 컴퓨터 이름 (예: TESTWEB1 또는 TESTWEB1.fabrikam.net)을 지정 하거나 원격 에이전트 끝점 (예:)을 지정할 수 있습니다 http://TESTWEB1/MSDEPLOYAGENTSERVICE .If you're deploying to the remote agent service on the destination web server, you can specify the target computer name (for example, TESTWEB1 or TESTWEB1.fabrikam.net), or you can specify the remote agent endpoint (for example, http://TESTWEB1/MSDEPLOYAGENTSERVICE). 배포는 각각의 경우와 동일한 방식으로 작동 합니다.The deployment works the same way in each case. 대상 웹 서버에서 웹 배포 처리기에 배포 하는 경우 서비스 끝점을 지정 하 고 IIS 웹 사이트의 이름을 쿼리 문자열 매개 변수로 포함 해야 합니다 (예: https://STAGEWEB1:8172/MSDeploy.axd?site=DemoSite ).If you're deploying to the Web Deploy Handler on the destination web server, you should specify the service endpoint and include the name of the IIS website as a query string parameter (for example, https://STAGEWEB1:8172/MSDeploy.axd?site=DemoSite).
MSDeployAuth 웹 배포에서 원격 컴퓨터에 인증 하는 데 사용 해야 하는 메서드입니다.MSDeployAuth The method that Web Deploy should use to authenticate to the remote computer. NTLM 또는 기본으로 설정 해야 합니다.This should be set to NTLM or Basic. 일반적으로 웹 배포 처리기에 배포 하는 경우 원격 에이전트 서비스 및 Basic 에 배포 하는 경우 NTLM 을 사용 합니다.Typically, you'll use NTLM if you're deploying to the remote agent service and Basic if you're deploying to the Web Deploy Handler. 기본 인증을 사용 하는 경우 배포를 수행 하기 위해 IIS 웹 배포 도구 (웹 배포)에서 가장할 사용자 이름 및 암호도 지정 해야 합니다.If you use basic authentication, you also need to specify the user name and password that the IIS Web Deployment Tool (Web Deploy) should impersonate in order to perform the deployment. 이 예제에서 이러한 값은 MSDeployUsernameMSDeployPassword 속성을 통해 제공 됩니다.In this example, these values are provided through the MSDeployUsername and MSDeployPassword properties. NTLM 인증을 사용 하는 경우 이러한 속성을 생략 하거나 비워 둘 수 있습니다.If you use NTLM authentication, you can omit these properties or leave them blank.
MSDeployUsername 기본 인증을 사용 하는 경우 웹 배포은 원격 컴퓨터에서이 계정을 사용 합니다.MSDeployUsername If you use basic authentication, Web Deploy will use this account on the remote computer. 도메인 * 사용자 이름 * (예: FABRIKAM\matt) 형식을 사용 해야 합니다.This should take the form DOMAIN*username* (for example, FABRIKAM\matt). 이 값은 기본 인증을 지정 하는 경우에만 사용 됩니다.This value is only used if you specify basic authentication. NTLM 인증을 사용 하는 경우 속성을 생략할 수 있습니다.If you use NTLM authentication, the property can be omitted. 값을 제공 하면 무시 됩니다.If a value is supplied, it will be ignored.
MSDeployPassword 기본 인증을 사용 하는 경우 웹 배포은 원격 컴퓨터에서이 암호를 사용 합니다.MSDeployPassword If you use basic authentication, Web Deploy will use this password on the remote computer. MSDeployUsername 속성에 지정한 사용자 계정의 암호입니다.This is the password for the user account you specified in the MSDeployUsername property. 이 값은 기본 인증을 지정 하는 경우에만 사용 됩니다.This value is only used if you specify basic authentication. NTLM 인증을 사용 하는 경우 속성을 생략할 수 있습니다.If you use NTLM authentication, the property can be omitted. 값을 제공 하면 무시 됩니다.If a value is supplied, it will be ignored.
ContactManagerIisPath Contact Manager MVC 응용 프로그램을 배포 하려는 IIS 경로입니다.ContactManagerIisPath The IIS path on which you want to deploy the Contact Manager MVC application. IIS 관리자에 표시 되는 경로는 [iis 웹 사이트 이름]/[응용 프로그램 이름] 형식으로 지정 해야 합니다.This should be the path as it appears in IIS Manager, in the form [IIS website name]/[webapplication name]. 응용 프로그램을 배포 하기 전에 IIS 웹 사이트가 있어야 합니다.Remember that the IIS website needs to exist before you deploy your application. 예를 들어 DemoSite 라는 IIS 웹 사이트를 만든 경우 MVC 응용 프로그램에 대 한 IIS 경로를 DemoSite/연락처 관리자로 지정할 수 있습니다.For example, if you've created an IIS website named DemoSite, you could specify the IIS path for the MVC application as DemoSite/ContactManager.
ContactManagerServiceIisPath Contact Manager WCF 서비스를 배포 하려는 IIS 경로입니다.ContactManagerServiceIisPath The IIS path on which you want to deploy the Contact Manager WCF service. 예를 들어 DemoSite 라는 IIS 웹 사이트를 만든 경우 WCF 서비스에 대 한 IIS 경로를 demosite/ContactManagerService으로 지정할 수 있습니다.For example, if you've created an IIS website named DemoSite, you could specify the IIS path for the WCF service as DemoSite/ContactManagerService.
ContactManagerTargetUrl WCF 서비스에 연결할 수 있는 URL입니다.ContactManagerTargetUrl The URL at which the WCF service can be reached. 그러면 [IIS 웹 사이트 루트 URL]/[서비스 응용 프로그램 이름]/[서비스 끝점] 형식이 사용 됩니다.This will take the form [IIS website root URL]/[service application name]/[service endpoint]. 예를 들어 포트 85에서 IIS 웹 사이트를 만든 경우 URL은 형식을 사용 합니다 http://localhost:85/ContactManagerService/ContactService.svc .For example, if you've created an IIS website on port 85, the URL would take the form http://localhost:85/ContactManagerService/ContactService.svc. MVC 응용 프로그램 및 WCF 서비스는 동일한 서버에 배포 됩니다.Remember that the MVC application and the WCF service are deployed to the same server. 결과적으로이 URL은 해당 데이터베이스가 설치 된 컴퓨터 에서만 액세스 됩니다.As a result, this URL is only ever accessed from the machine on which it's installed. 따라서 URL에는 컴퓨터 이름이 나 호스트 헤더가 아닌 localhost 또는 IP 주소를 사용 하는 것이 좋습니다.Because of this, it's better to use localhost or the IP address, rather than the machine name or a host header, in the URL. 컴퓨터 이름이 나 호스트 헤더를 사용 하는 경우 IIS의 루프백 보안 기능에서 URL을 차단 하 고 HTTP 401.1-권한이 없음 오류를 반환할 수 있습니다.If you use the machine name or a host header, the loopback check security feature in IIS may block the URL and return an HTTP 401.1 - Unauthorized error.
CmDatabaseConnectionString 데이터베이스 서버에 대 한 연결 문자열입니다.CmDatabaseConnectionString The connection string for the database server. 연결 문자열은 VSDBCMD가 데이터베이스 서버에 연결 하는 데 사용할 자격 증명과 웹 서버 응용 프로그램 풀에서 데이터베이스 서버에 연결 하 고 데이터베이스와 상호 작용 하는 데 사용할 자격 증명을 모두 결정 합니다.The connection string determines both the credentials that VSDBCMD will use to contact the database server and create the database and the credentials that the web server application pool will use to contact the database server and interact with the database. 기본적으로 두 가지 옵션을 선택할 수 있습니다.Essentially you have two choices here. Integrated security = true를 지정할 수 있습니다 .이 경우 Windows 통합 인증이 사용 됩니다 .이 경우에는 DATA Source = 배치한; integrated security = true 입니다 .이 경우에는 VSDBCMD 실행 파일을 실행 하는 사용자의 자격 증명을 사용 하 여 데이터베이스가 생성 되 고 응용 프로그램은 웹 서버 컴퓨터 계정의 id를 사용 하 여 데이터베이스에 액세스 합니다.You can specify Integrated Security=true, in which case integrated Windows authentication is used: Data Source=TESTDB1;Integrated Security=true In this case, the database will be created using the credentials of the user who runs the VSDBCMD executable, and the application will access the database using the identity of the web server machine account. 또는 SQL Server 계정의 사용자 이름 및 암호를 지정할 수 있습니다.Alternatively, you can specify the user name and password of a SQL Server account. 이 경우 SQL Server 자격 증명을 사용 하 여 데이터베이스를 만들고 응용 프로그램 풀을 사용 하 여 데이터베이스와 상호 작용 합니다. Data Source = 배치한; 사용자 Id = ASqlUser; Password = Pa $ $w 0rd 이 항목의 연습에서는 Windows 통합 인증을 사용 한다고 가정 합니다.In this case, the SQL Server credentials are used both by VSDBCMD to create the database and by the application pool to interact with the database: Data Source=TESTDB1;User Id=ASqlUser; Password=Pa$$w0rd The walkthroughs in this topic assume that you'll use integrated Windows authentication.
Cmtargetdatabase 데이터베이스 서버에서 만들 데이터베이스를 지정 하는 데 사용할 이름입니다.CmTargetDatabase The name you want to give the database you'll create on the database server. 여기에서 제공 하는 값은 VSDBCMD 명령에 매개 변수로 추가 됩니다.The value you provide here is added to the VSDBCMD command as a parameter. 웹 서버의 응용 프로그램 풀에서 데이터베이스와 상호 작용 하는 데 사용할 수 있는 전체 연결 문자열을 작성 하는 데도 사용 됩니다.It's also used to build a full connection string that the application pool on the web server can use to interact with the database.

이러한 예제에서는 특정 배포 시나리오에 대해 이러한 속성을 구성 하는 방법을 보여 줍니다.These examples show how you might configure these properties for specific deployment scenarios.

예 1—원격 에이전트 서비스에 배포Example 1—Deployment to the Remote Agent Service

이 예제에서는 다음이 적용됩니다.In this example:

  • TESTWEB1의 원격 에이전트 서비스에 배포 하는 중입니다.You're deploying to the remote agent service on TESTWEB1.
  • NTLM 인증을 사용 하도록 웹 배포에 지시 하 고 있습니다.You're instructing Web Deploy to use NTLM authentication. 웹 배포 Microsoft Build Engine (MSBuild)를 호출 하는 데 사용한 자격 증명을 사용 하 여 실행 됩니다.Web Deploy will run using the credentials you used to invoke the Microsoft Build Engine (MSBuild).
  • 통합 인증을 사용 하 여 배치한에 데이터 관리자 데이터베이스를 배포 하 고 있습니다.You're using integrated authentication to deploy the ContactManager database to TESTDB1. MSBuild를 호출 하는 데 사용한 자격 증명을 사용 하 여 데이터베이스를 배포 합니다.The database will be deployed using the credentials you used to invoke 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>

결론Conclusion

이 시점에서 프로젝트 파일은 하나 이상의 대상 환경에 대해 Contact Manager 솔루션을 빌드하고 배포 하도록 완전히 구성 됩니다.At this point, your project files are fully configured to build and deploy the Contact Manager solution to one or more destination environments.

이 프로젝트 파일을 단일 단계의 반복 가능한 배포 프로세스의 일부로 사용 하려면 MSBuild를 사용 하 여 게시 proj 파일을 실행 하 고 환경 관련 프로젝트 파일의 위치를 매개 변수로 전달 해야 합니다.To use these project files as part of a single-step, repeatable deployment process, you need to execute the Publish.proj file using MSBuild and pass in the location of the environment-specific project file as a parameter. 다음과 같은 다양 한 방법으로이 작업을 수행할 수 있습니다.You can do this in various ways: