제 2과: Windows PowerShell을 사용한 주문 서비스 응용 프로그램 배포
완료 시간: 25분
목표: WCF 및/또는 WF 서비스가 포함된 응용 프로그램을 IIS에 배포하는 방법을 알아봅니다.
목적: 이 단원에서는 Windows PowerShell을 사용하여 웹 배포 도구를 통한 배포를 스크립팅하는 방법의 예를 보여 줍니다. Order Service 응용 프로그램을 OrderService_PS라는 웹 사이트에 다시 배포합니다.
사전 요구 사항
다음 필수 구성 요소에 유의하십시오.
https://go.microsoft.com/fwlink/?LinkId=160309(영문)에서 자습서 파일을 다운로드해야 합니다.
Windows Server AppFabric 인터페이스 사용 자습서에 대해 제 1과: 시작에 설명된 C:\ 디렉터리로 자습서 파일을 추출해야 합니다.
제 1과: Windows PowerShell용 Windows Server AppFabric Cmdlet 시작을 완료해야 합니다.
절차
Order Service 응용 프로그램에 대한 재배포 프로세스의 일부로 다음 단계를 진행합니다.
배포를 위해 구성 파일을 준비합니다.
Windows PowerShell과 함께 MSBuild를 사용하여 배포 패키지를 빌드합니다.
OrderService_PS 웹 사이트 및 응용 프로그램 풀을 만듭니다.
웹 배포 도구 및 Windows PowerShell을 사용하여 각 웹 서비스를 배포합니다.
Windows PowerShell을 사용하여 각 웹 서비스를 테스트합니다.
배포를 위해 구성 파일 준비
Windows PowerShell을 사용하여 Order Service 응용 프로그램을 포트 95를 사용하는 새 웹 사이트에 다시 배포합니다. 이 섹션에서는 배포하기 전에 구성 파일의 끝점 주소를 새 포트 정보로 업데이트합니다.
Windows PowerShell에서 다음 명령을 실행하여 주문 클라이언트에 대한 app.config 파일을 엽니다.
notepad C:\DublinTutorial\OrderServiceSolution\Completed\OrderClient\app.config
client 섹션을 다음 client 섹션으로 바꿉니다.
<client> <endpoint address="https://localhost:95/OrderWorkflowService/OrderWorkflow.xamlx" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_Microsoft.Samples.Dublin.Tutorials.OrderService.OrderWorkflowService.IOrderWorkflowService" contract="OrderWorkflowService.MicrosoftSamplesDublinTutorialsOrderServiceOrderWorkflowServiceIOrderWorkflowService" name="BasicHttpBinding_Microsoft.Samples.Dublin.Tutorials.OrderService.OrderWorkflowService.IOrderWorkflowService" /> </client>
메모장을 닫고 변경 내용 저장을 확인하는 메시지가 표시되면 저장을 클릭합니다.
Windows PowerShell에서 다음 명령을 실행하여 Order Processing Service에 대한 Web.config 파일을 엽니다.
notepad C:\DublinTutorial\OrderServiceSolution\Completed\OrderProcessingService\Web.config
client 섹션을 다음 client 섹션으로 바꿉니다.
<client> <endpoint address="https://localhost:95/OrderWorkflowService/OrderWorkflow.xamlx" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_Microsoft.Samples.Dublin.Tutorials.OrderService.OrderWorkflowService.IOrderWorkflowService" contract="OrderWorkflowService.MicrosoftSamplesDublinTutorialsOrderServiceOrderWorkflowServiceIOrderWorkflowService" name="BasicHttpBinding_Microsoft.Samples.Dublin.Tutorials.OrderService.OrderWorkflowService.IOrderWorkflowService" /> </client>
메모장을 닫고 변경 내용 저장을 확인하는 메시지가 표시되면 저장을 클릭합니다.
Windows PowerShell에서 다음 명령을 실행하여 OrderWorkflowService에 대한 Web.config 파일을 엽니다.
notepad C:\DublinTutorial\OrderServiceSolution\Completed\OrderWorkflowService\Web.config
client 섹션을 다음 client 섹션으로 바꿉니다.
<client> <endpoint address="https://localhost:95/OrderProcessingService/OrderProcessing.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IOrderProcessing" contract="IOrderProcessing" name="BasicHttpBinding_IOrderProcessing" /> <endpoint address="https://localhost:95/ShippingService/Shipping.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IShipping" contract="IShipping" name="BasicHttpBinding_IShipping" /> </client>
메모장을 닫고 변경 내용 저장을 확인하는 메시지가 표시되면 저장을 클릭합니다.
Windows PowerShell에서 다음 명령을 실행하여 배송 서비스에 대한 Web.config 파일을 엽니다.
notepad C:\DublinTutorial\OrderServiceSolution\Completed\ShippingService\Web.config
client 섹션을 다음 client 섹션으로 바꿉니다.
<client> <endpoint address="https://localhost:95/OrderWorkflowService/OrderWorkflow.xamlx" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_Microsoft.Samples.Dublin.Tutorials.OrderService.OrderWorkflowService.IOrderWorkflowService" contract="OrderWorkflowService.MicrosoftSamplesDublinTutorialsOrderServiceOrderWorkflowServiceIOrderWorkflowService" name="BasicHttpBinding_Microsoft.Samples.Dublin.Tutorials.OrderService.OrderWorkflowService.IOrderWorkflowService" /> </client>
메모장을 닫고 변경 내용 저장을 확인하는 메시지가 표시되면 저장을 클릭합니다.
Windows PowerShell과 함께 MSBuild를 사용하여 배포 패키지 빌드
MSBuild(Microsoft 빌드 엔진)는 Microsoft 및 Visual Studio에 대한 빌드 플랫폼입니다. MSBuild는 소프트웨어를 처리 및 빌드하는 방식 측면에서 완전히 투명하므로 Visual Studio가 설치되지 않은 경우 개발자가 빌드 랩 환경에서 제품을 오케스트레이션 및 빌드할 수 있습니다. MSBuild는 .NET Framework의 일부로 포함됩니다. 이 섹션의 단계에 따라 MSBuild를 사용하여 Order Service 응용 프로그램에 대한 새 배포 패키지를 빌드합니다. 이러한 명령을 Windows PowerShell 스크립트에 추가하여 빌드를 자동화할 수 있습니다. MSBuild에 대한 자세한 내용은 MSBuild 개요(영문)(https://go.microsoft.com/fwlink/?LinkId=123876)를 참조하십시오.
Windows PowerShell에서 다음 명령을 실행하여 MSBuildPath라는 변수를 .NET Framework 디렉터리에 있는 MSBuild 실행 파일의 전체 경로에 할당합니다. 이 명령은 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full 레지스트리 키 아래의 InstallPath 문자열 값의 값에 따라 경로를 결정합니다.
$MSBuildPath = "$($(gp -Path HKLM:\Software\Microsoft\'NET Framework Setup'\NDP\v4\Full).InstallPath)MSBuild.exe"
Windows PowerShell에서 다음 명령을 실행하여 OrderProcessingService 프로젝트에 대한 배포 패키지를 빌드합니다.
.$MSBuildPath 'C:\DublinTutorial\OrderServiceSolution\Completed\OrderProcessingService\OrderProcessingService.csproj' /T:Package /P:PackageLocation='C:\DublinTutorial\PS_DeploymentPackages\OrderProcessingService.zip'
Windows PowerShell에서 다음 명령을 실행하여 OrderWorkflowService 프로젝트에 대한 배포 패키지를 빌드합니다.
.$MSBuildPath 'C:\DublinTutorial\OrderServiceSolution\Completed\OrderWorkflowService\OrderWorkflowService.csproj' /T:Package /P:PackageLocation='C:\DublinTutorial\PS_DeploymentPackages\OrderWorkflowService.zip'
Windows PowerShell에서 다음 명령을 실행하여 ShippingService 프로젝트에 대한 배포 패키지를 빌드합니다.
.$MSBuildPath 'C:\DublinTutorial\OrderServiceSolution\Completed\ShippingService\ShippingService.csproj' /T:Package /P:PackageLocation='C:\DublinTutorial\PS_DeploymentPackages\ShippingService.zip'
3개 zip 파일이 모두 다음과 같이 C:\DublinTutorial\PS_DeploymentPackages 디렉터리에 만들어졌는지 확인합니다.
PS C:\> dir C:\DublinTutorial\PS_DeploymentPackages\*.zip Directory: C:\DublinTutorial\PS_DeploymentPackages Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 11/11/2009 5:40 PM 13836 OrderProcessingService.zip -a--- 11/11/2009 5:41 PM 22717 OrderWorkflowService.zip -a--- 11/11/2009 5:41 PM 25177 ShippingService.zip
서비스에 대한 클라이언트로 사용되는 OrderClient 응용 프로그램을 빌드하지 않은 경우에는 Windows PowerShell에서 다음 명령을 실행하여 OrderClient 응용 프로그램을 빌드합니다.
.$MSBuildPath 'C:\DublinTutorial\OrderServiceSolution\Completed\OrderClient\OrderClient.csproj'
OrderService_PS 웹 사이트 및 응용 프로그램 풀 만들기
이 섹션에서는 IIS의 Appcmd.exe 관리 도구를 사용하여 웹 사이트와 응용 프로그램 풀을 만듭니다. Windows PowerShell의 환경 공급자를 사용하여 SystemRoot 환경 변수를 사용하는 Appcmd.exe에 대한 경로를 참조합니다. 이 작동 방식을 확인하려면 Windows PowerShell에서 다음 명령을 입력합니다.
$env:SYSTEMROOT
결과 출력에는 시스템 루트 디렉터리가 표시되어야 합니다.
아래 단계에 따라 OrderService_PS 웹 사이트 및 OrderServiceAppPool_PS 응용 프로그램 풀을 만듭니다. 이러한 명령을 Windows PowerShell 배포 스크립트에 추가하여 자동화할 수도 있습니다.
Windows PowerShell에서 다음 명령을 입력하여 .NET Framework 버전 4를 사용하도록 구성된 OrderServiceAppPool_PS 응용 프로그램 풀을 만듭니다.
.$env:SystemRoot\System32\inetsrv\appcmd.exe add apppool /Name:OrderServiceAppPool_PS -managedRuntimeVersion:v4.0
명령에 따라 다음 출력이 오류 없이 표시되는지 확인합니다.
APPPOOL object "OrderServiceAppPool_PS" added
Windows PowerShell에서 다음 명령을 입력하여 포트 95를 사용하고 내용을 C:\DublinTutorial\OrderService_PS 디렉터리에 저장하도록 구성되는 OrderService_PS라는 새 웹 사이트를 만듭니다.
.$env:SystemRoot\System32\inetsrv\appcmd.exe add site /name:OrderService_PS /bindings:http/*:95: /physicalPath:C:\DublinTutorial\OrderService_PS
명령에 따라 다음 출력이 오류 없이 표시되는지 확인합니다.
SITE object "OrderService_PS" added APP object "OrderService_PS/" added VDIR object "OrderService_PS/" added
Windows PowerShell에서 다음 명령을 입력하여 OrderServiceAppPool_PS를 기본 응용 프로그램 풀로 사용하도록 OrderService_PS 웹 사이트를 구성합니다.
.$env:SystemRoot\System32\inetsrv\appcmd.exe set site OrderService_PS /applicationDefaults.applicationPool:OrderServiceAppPool_PS
명령에 따라 다음 출력이 오류 없이 표시되는지 확인합니다.
SITE object "OrderService_PS" changed
웹 배포 도구 및 Windows PowerShell을 사용하여 웹 서비스 배포
이 섹션에서는 웹 배포 도구를 사용하여 웹 서비스를 OrderService_PS라는 새 웹 사이트에 배포합니다. 이 자습서에서는 “_PS” 접미사를 사용하여 웹 사이트가 Windows PowerShell을 통해 만들어졌음을 나타냅니다. 이 섹션에 표시된 명령을 Windows PowerShell 배포 스크립트에 추가하여 Order Service 응용 프로그램을 배포할 수 있습니다. 웹 배포 도구에 대한 자세한 내용은 웹 배포 도구(영문)(https://go.microsoft.com/fwlink/?LinkId=154601)를 참조하십시오.
Windows PowerShell에서 다음 명령을 실행하여 MSDeployPath라는 변수를 웹 배포 도구의 전체 경로에 할당합니다.
$MSDeployPath = "$env:ProgramFiles\IIS\Microsoft Web Deploy\msdeploy.exe"
Windows PowerShell에서 다음 명령을 실행하여 OrderProcessingService 패키지를 OrderService_PS 웹 사이트에 배포합니다.
.$MSDeployPath -verb:sync -source:package=C:\DublinTutorial\PS_DeploymentPackages\OrderProcessingService.zip -dest:auto -setParam:Name=`"IIS Web Application Name`"`,value=OrderService_PS/OrderProcessingService
결과 출력이 오류 없이 다음과 같이 표시되는지 확인합니다.
Info: Updating createApp (OrderService_PS/OrderProcessingService). Info: Adding contentPath (OrderService_PS/OrderProcessingService). Info: Adding dirPath (OrderService_PS/OrderProcessingService). Info: Adding child dirPath (OrderService_PS/OrderProcessingService\bin). Info: Adding child filePath (OrderService_PS/OrderProcessingService\bin\OrderProcessingService.dll). Info: Adding child filePath (OrderService_PS/OrderProcessingService\OrderProcessing.svc). Info: Adding child filePath (OrderService_PS/OrderProcessingService\Web.config). Total changes: 7 (6 added, 0 deleted, 1 updated, 0 parameters changed, 22099 bytes copied)
Windows PowerShell에서 다음 명령을 실행하여 OrderWorkflowService 패키지를 OrderService_PS 웹 사이트에 배포합니다.
.$MSDeployPath -verb:sync -source:package=C:\DublinTutorial\PS_DeploymentPackages\OrderWorkflowService.zip -dest:auto -setParam:Name=`"IIS Web Application Name`"`,value=OrderService_PS/OrderWorkflowService
결과 출력이 오류 없이 다음과 같이 표시되는지 확인합니다.
Info: Updating createApp (OrderService_PS/OrderWorkflowService). Info: Adding contentPath (OrderService_PS/OrderWorkflowService). Info: Adding dirPath (OrderService_PS/OrderWorkflowService). Info: Adding child dirPath (OrderService_PS/OrderWorkflowService\bin). Info: Adding child filePath (OrderService_PS/OrderWorkflowService\bin\OrderWorkflowService.dll). Info: Adding child filePath (OrderService_PS/OrderWorkflowService\OrderWorkflow.xamlx). Info: Adding child filePath (OrderService_PS/OrderWorkflowService\Web.config). Total changes: 7 (6 added, 0 deleted, 1 updated, 0 parameters changed, 84412 bytes copied)
Windows PowerShell에서 다음 명령을 실행하여 ShippingService 패키지를 OrderService_PS 웹 사이트에 배포합니다.
.$MSDeployPath -verb:sync -source:package=C:\DublinTutorial\PS_DeploymentPackages\ShippingService.zip -dest:auto -setParam:Name=`"IIS Web Application Name`"`,value=OrderService_PS/ShippingService
결과 출력이 오류 없이 다음과 같이 표시되는지 확인합니다.
Info: Updating createApp (OrderService_PS/ShippingService). Info: Adding contentPath (OrderService_PS/ShippingService). Info: Adding dirPath (OrderService_PS/ShippingService). Info: Adding child dirPath (OrderService_PS/ShippingService\bin). Info: Adding child filePath (OrderService_PS/ShippingService\bin\ShippingService.dll). Info: Adding child filePath (OrderService_PS/ShippingService\bin\ShippingService.pdb). Info: Adding child filePath (OrderService_PS/ShippingService\Shipping.svc). Info: Adding child filePath (OrderService_PS/ShippingService\Web.config). Total changes: 8 (7 added, 0 deleted, 1 updated, 0 parameters changed, 68029 bytes copied)
Windows PowerShell을 사용하여 웹 서비스 테스트
이 섹션에서는 간단한 스크립트 함수를 사용하여 웹 서비스를 찾아볼 수 있는지 확인합니다.
Windows PowerShell에서 다음 명령을 입력하여 메모장을 통해 Utility.ps1이라는 새 유틸리티 스크립트를 만듭니다.
NotePad Utility.ps1
메모장이 시작되고 파일을 만들지 묻는 메시지가 표시되면 예를 클릭합니다.
다음 스크립트 함수를 복사하여 메모장에 붙여 넣습니다.
#=======================================================# #=== ===# #=== Performs a simple browse test to a web service. ===# #=== ===# #=======================================================# function BrowseWebService($address) { trap {return $false;} $WebClient = New-Object System.Net.WebClient $content = $WebClient.DownloadString($address) $content.Contains("You have created a service.") }
이 함수는 System.Net.WebClient 클래스를 사용하여 지정된 서비스 주소 요청에 대한 텍스트 응답을 구문 분석합니다. 응답에 “서비스를 만들었습니다”라는 문자열이 포함되어 있으면 찾아보기 테스트가 $true를 반환합니다. 그렇지 않으면 $false를 반환합니다.
메모장을 닫고 Utility.ps1 저장을 확인하는 메시지가 표시되면 저장을 클릭합니다.
Windows PowerShell에서 다음 명령을 실행하여 유틸리티 스크립트를 현재 Windows PowerShell 세션에 대한 모듈로 가져옵니다.
Import-Module .\Utility.ps1
Windows PowerShell에서 다음 3개 명령을 입력하여 세 가지 Order Service 웹 서비스를 모두 테스트합니다.
BrowseWebService "https://localhost:95/OrderProcessingService/OrderProcessing.svc"
BrowseWebService "https://localhost:95/OrderWorkflowService/OrderWorkflow.xamlx"
BrowseWebService "https://localhost:95/ShippingService/Shipping.svc"
각 BrowseWebService 명령이 다음과 같이 True를 보고했는지 확인합니다.
PS C:\> BrowseWebService "https://localhost:95/OrderWorkflowService/OrderWorkflow.xamlx" True PS C:\> BrowseWebService "https://localhost:95/OrderProcessingService/OrderProcessing.svc" True PS C:\> BrowseWebService "https://localhost:95/ShippingService/Shipping.svc" True
학습한 내용
이 단원에서는 새 끝점 주소를 사용하도록 각 프로젝트의 구성 파일을 업데이트했습니다. 그런 다음 Windows PowerShell에서 새 웹 사이트와 응용 프로그램 풀을 만들었습니다. 마지막으로 Windows PowerShell을 사용하여 각 서비스 프로젝트를 빌드하고 새 웹 사이트에 배포했습니다.
다음 단계
제 3과: Windows PowerShell을 사용한 주문 서비스 구성에서는 Windows PowerShell용 AppFabric cmdlet을 사용하여 이 단원에서 배포한 Order Service 응용 프로그램에 대한 모니터링 및 지속성 데이터베이스를 구성합니다.
참고 항목
개념
제 1과: Windows PowerShell용 Windows Server AppFabric Cmdlet 시작
제 3과: Windows PowerShell을 사용한 주문 서비스 구성
제 4과: Windows PowerShell을 사용한 주문 서비스 모니터링
제 5과: Windows PowerShell을 사용한 워크플로 추적
2011-12-05