연습: 웹 배포 패키지를 사용하여 웹 응용 프로그램 프로젝트 배포(2/4부)
이 연습은 배포 패키지를 사용하여 웹 응용 프로그램 프로젝트를 배포하는 방법을 보여 주는 시리즈 중 두 번째 연습입니다. 시리즈에 대한 자세한 내용은 연습: 웹 배포 패키지를 사용하여 웹 응용 프로그램 프로젝트 배포(1/4부)를 참조하십시오.
이 연습에서는 AdventureWorksLT 데이터베이스를 변경하고 변경 내용을 배포합니다. 그런 다음 웹 페이지를 변경하고 변경 내용을 배포하지만 데이터베이스 변경 내용은 배포하지 않습니다. 이 연습에서는 다음 작업을 수행합니다.
이미 배포된 데이터베이스 다시 배포
배포에서 이미 배포된 데이터베이스 제외
디버그 빌드 구성에 대한 패키지 만들기
IIS 관리자를 사용하여 로컬 컴퓨터에 패키지 설치
사전 요구 사항
필수 구성 요소 목록은 연습: 웹 배포 패키지를 사용하여 웹 응용 프로그램 프로젝트 배포(1/4부)를 참조하십시오.
데이터베이스 변경 내용에 대한 배포 구성
데이터베이스 변경 내용(구조 또는 데이터)을 이미 배포된 웹 응용 프로그램에 배포하려는 경우 배포된 데이터베이스에 입력된 데이터를 보존할 필요가 없으면 자동으로 생성된 스크립트를 사용하여 데이터베이스를 다시 배포할 수 있습니다. 그러나 기본적으로 자동으로 생성된 스크립트에서는 데이터베이스 개체를 대상 컴퓨터에 만들거나 다시 만들기 전에 삭제하지 않습니다. 따라서 스크립트에서 이미 있는 데이터베이스 개체를 만들려고 할 때 발생하는 오류를 방지하려면 Drop 문이 포함되도록 지정해야 합니다.
연습의 이 섹션에서는 AdventureWorksLT 데이터베이스의 구조를 변경한 다음 웹 응용 프로그램을 다시 배포합니다. AdventureWorksLT 데이터베이스에 대해 자동으로 생성된 스크립트에 Drop 문이 포함되고 다른 데이터베이스 스크립트가 배포 중에 실행되도록 데이터베이스 배포 설정을 변경합니다.
다음 절차에서는 데이터베이스와 Default.aspx 파일에서 Color 필드의 이름을 Appearance로 변경합니다.
데이터베이스 필드의 이름을 변경하려면
서버 탐색기에서 App_Data 폴더를 확장하고 AdventureWorksLT2008_Data.mdf를 두 번 클릭합니다.
데이터베이스가 서버 탐색기 창에서 열립니다.
서버 탐색기에서 테이블 폴더를 확장합니다.
Product (SalesLT) 테이블을 마우스 오른쪽 단추로 클릭한 다음 테이블 정의 열기를 클릭합니다.
다음 예제와 같이 Color 열의 이름을 Appearance로 변경합니다.
테이블을 저장하고 테이블 정의 창을 닫습니다.
Default.aspx 파일을 엽니다.
다음 예제와 같이 GridView 컨트롤에서 Color 열에 대한 BoundField 요소를 찾고 DataField, SortExpression 및 HeaderText 속성의 값을 Color에서 Appearance로 변경합니다.
<asp:BoundField DataField="Appearance" HeaderText="Appearance" SortExpression="Appearance" />
Default.aspx를 저장한 다음 닫습니다.
Ctrl+F5를 눌러 변경 사항을 테스트합니다.
홈 페이지가 표시되고, 다음 그림과 같이 Color 열의 이름이 Appearance로 변경되었습니다.
다음 절차에서는 AdventureWorksLT 데이터베이스에 대한 Drop 문을 생성하도록 배포를 구성합니다. 해당 설정을 Visual Studio UI에서 사용할 수 없기 때문에 이 작업을 수행하려면 프로젝트 파일을 수정해야 합니다.
Drop 문이 포함되도록 지정하려면
솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 Windows 탐색기에서 폴더 열기를 클릭합니다.
Windows 탐색기 창이 열리고 프로젝트 폴더가 표시됩니다.
메모장과 같은 텍스트 편집기를 사용하여 AdventureWorks.csproj 또는 AdventureWorks.vbproj를 엽니다.
Debug 빌드 구성 및 AnyCPU 플랫폼에 대한 PropertyGroup 요소를 찾습니다.
이 요소에는 프로젝트에 대한 속성 설정에 있는 웹 패키지 및 게시 탭과 SQL 패키지 및 게시 탭에 입력한 설정이 포함되어 있습니다.
PropertyGroup 요소에서 이름이 AWLTConnectionString-Deployment인 ObjectGroup 요소를 찾습니다.
이 요소에는 AdventureWorksLT 데이터베이스와 관련된 SQL 패키지 및 게시 탭의 설정이 포함되어 있습니다.
ObjectGroup 요소에서 첫 번째 Object 요소에 있는 PreSource 요소에 ScriptDropsFirst="True" 특성을 추가합니다.
다음 예제에서는 변경된 PreSource 요소가 포함된 PropertyGroup 요소를 보여 줍니다. 프로젝트 파일에 있는 요소의 일부 정보는 이 예제와 약간 다릅니다.
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> ... <PublishDatabaseSettings> ... <Objects> ... <ObjectGroup Name="AWLTConnectionString-Web.config" Order="2"> <Destination Path="..." /> <Object Type="dbFullSql"> <PreSource Path="..." ScriptSchema="True" ScriptData="True" CopyAllFullTextCatalogs="False" ScriptDropsFirst="True"/> <Source Path="..." Transacted="True" /> </Object> <Object Type="dbFullSql" Enabled="True"> <Source Path="...AdventureWorksGrant.sql" Transacted="True" /> </Object> </ObjectGroup> </Objects> </PublishDatabaseSettings> </PropertyGroup>
AdventureWorks.csproj 또는 AdventureWorks.vbproj 파일을 저장한 다음 닫습니다.
다음 그림과 같이 파일 수정 감지 대화 상자가 표시되면 다시 로드 단추를 클릭합니다.
다음 절차에서는 데이터베이스 스크립트가 실행되지 않도록 지정합니다. 여기에는 ApplicationServices 데이터베이스에 대해 자동으로 생성된 스크립트와 AdventureWorksGrant.sql 스크립트가 포함됩니다.
배포 중에 다른 스크립트가 실행되지 않도록 지정하려면
프로젝트 속성 페이지에서 SQL 패키지 및 게시 탭을 클릭합니다.
구성 목록에서 **활성(Debug)**이 선택되어 있는지 확인합니다.
데이터베이스 항목 표에서 ApplicationServices-Deployment 행이 선택되어 있는지 확인합니다.
다음 그림과 같이 데이터베이스 스크립트 표에서 스크립트 경로 열에 **[자동으로 생성된 스키마 및 데이터]**가 있는 행에 대한 포함 확인란의 선택을 취소합니다.
데이터베이스 항목 표에서 AWLTConnectionString-Deployment 행을 선택합니다.
데이터베이스 스크립트 표에서 AdventureWorksGrant.sql 스크립트가 있는 행에 대한 포함 확인란의 선택을 취소합니다.
속성 페이지를 저장한 다음 닫습니다.
데이터베이스 변경 내용 배포
다음 절차에서는 패키지를 만든 다음 IIS 관리자를 사용하여 패키지를 IIS로 가져와서 프로젝트를 배포합니다.
패키지를 만들어 IIS로 가져오려면
프로젝트 메뉴에서 배포 패키지 빌드를 클릭합니다.
Visual Studio에서 프로젝트가 빌드된 다음 배포 패키지가 만들어집니다. Drop 문이 포함된 스크립트가 AdventureWorksLT 데이터베이스에 대해 만들어집니다. ApplicationServices 데이터베이스에 대해서는 스크립트가 만들어지지 않습니다.
다음 단계를 수행하여 배포 패키지의 경로를 Windows 클립보드로 복사합니다.
obj 폴더가 표시되지 않는 경우 솔루션 탐색기에서 모든 파일 표시 단추를 클릭합니다.
obj 폴더, Debug 폴더, Package 폴더를 차례로 확장합니다.
AdventureWorks.zip 파일을 선택합니다.
속성 창에서 전체 경로 필드의 값을 복사합니다.
Windows 제어판에서 관리 도구를 클릭한 다음 인터넷 정보 서비스(IIS) 관리자를 클릭합니다.
IIS 관리자의 연결 패널에서 컴퓨터의 노드를 확장하고 사이트 폴더를 확장한 다음 기본 웹 사이트를 선택합니다.
작업 패널에서 응용 프로그램 가져오기 하이퍼링크를 클릭합니다.
패키지 선택 대화 상자의 패키지 경로 상자에 배포 패키지 경로를 붙여 넣습니다.
다음을 클릭합니다.
패키지 콘텐츠 선택 대화 상자에서 다음을 클릭합니다.
응용 프로그램 패키지 정보 입력 대화 상자에서 다음을 클릭합니다.
기존 파일 덮어쓰기 대화 상자에서 다음을 클릭합니다.
패키지 설치가 완료된 후 다음 그림과 같이 설치 진행률 및 요약 대화 상자에 한 데이터베이스만 업데이트되었다고 표시됩니다.
브라우저를 열고 다음 URL로 이동하여 응용 프로그램을 테스트합니다.
https://localhost/AdventureWorks
Default.aspx 페이지가 표시됩니다. 이 페이지는 Visual Studio에서 프로젝트를 실행했을 때 표시된 것과 동일하게 나타납니다. 제품 테이블에 Color 열 대신 Appearance 열이 표시됩니다. 이를 통해 AdventureWorksLT 데이터베이스 변경 내용이 성공적으로 배포되었음을 알 수 있습니다.
데이터베이스 변경 없이 다시 배포
일반적으로 데이터베이스 구조가 변경되는 빈도는 웹 응용 프로그램의 다른 부분이 변경되는 빈도보다 낮습니다. 연습의 이 섹션에서는 웹 페이지를 변경하고 웹 응용 프로그램을 다시 배포하지만 데이터베이스 변경 내용을 배포하지는 않습니다.
다음 절차에서는 Default.aspx 페이지에서 AdventureWorksLT 제품 테이블의 첫 번째 열 머리글을 Name에서 Product로 변경합니다.
응용 프로그램을 변경하려면
Default.aspx 파일을 엽니다.
다음 예제와 같이 Name 열에 대한 BoundField.HeaderText 속성을 Product로 변경합니다.
<asp:BoundField DataField="Name" HeaderText="Product" SortExpression="Name" />
파일을 저장한 후 닫습니다.
다음 절차에서는 데이터베이스 배포 설정을 변경하여 Visual Studio에서 데이터베이스 스크립트를 생성하지 않도록 합니다.
데이터베이스를 배포하지 않도록 설정하려면
솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 속성을 클릭합니다.
웹 패키지 및 게시 탭을 선택합니다.
SQL 패키지 및 게시 탭에서 구성된 모든 데이터베이스 포함 확인란의 선택을 취소합니다.
속성 페이지를 저장한 다음 닫습니다.
다음 절차에서는 응용 프로그램을 다시 배포하고 변경 사항을 테스트합니다.
응용 프로그램을 다시 배포하고 테스트하려면
프로젝트 메뉴에서 배포 패키지 빌드를 클릭합니다.
배포 패키지 경로를 Windows 클립보드로 복사합니다.
인터넷 정보 서비스(IIS) 관리자를 실행합니다.
IIS 관리자에서 기본 웹 사이트를 선택합니다.
작업 패널에서 응용 프로그램 가져오기 하이퍼링크를 클릭합니다.
패키지 선택 대화 상자의 패키지 경로 상자에 배포 패키지 경로를 붙여 넣습니다.
다음을 클릭합니다.
패키지 콘텐츠 선택 대화 상자에서 다음을 클릭합니다.
응용 프로그램 패키지 정보 입력 대화 상자에서 다음을 클릭합니다.
기존 파일 덮어쓰기 대화 상자에서 다음을 클릭합니다.
이번에는 설치 진행률 및 요약 대화 상자에 데이터베이스가 업데이트되지 않았고 한 파일만 업데이트되었다고 표시됩니다.
브라우저를 열고 다음 URL로 이동하여 응용 프로그램을 테스트합니다.
https://localhost/AdventureWorks
Default.aspx 페이지가 Visual Studio에서 프로젝트를 실행했을 때 표시된 것과 동일하게 나타납니다. 제품 테이블의 첫 번째 열에 있는 Product 머리글은 Default.aspx의 변경 내용이 성공적으로 배포되었음을 보여 줍니다.
다음 단계
이 시리즈의 첫 번째 연습에서는 개발 컴퓨터에서 테스트하기 위해 파일 시스템 웹 응용 프로그램 프로젝트를 IIS 웹 응용 프로그램에 배포했습니다. 이 연습에서는 데이터베이스 중 하나의 구조를 변경하고 웹 페이지를 변경한 다음 변경 내용을 배포했습니다.
이 시리즈의 다음 연습은 연습: 웹 배포 패키지를 사용하여 웹 응용 프로그램 프로젝트 배포(3/4부)입니다. 다음 연습에서는 스테이징 환경과 프로덕션 서버에 배포하는 데 사용할 수 있는 배포 패키지를 만듭니다.