다음을 통해 공유


Visual Studio 또는 Visual Web Developer를 사용하여 SQL Server Compact ASP.NET 웹 애플리케이션 배포: IIS에 테스트 환경으로 배포 - 12개 중 5개

작성자: Tom Dykstra

시작 프로젝트 다운로드

이 자습서 시리즈에서는 Visual Studio 2012 RC 또는 Visual Studio Express 2012 RC for Web을 사용하여 SQL Server Compact 데이터베이스를 포함하는 ASP.NET 웹 애플리케이션 프로젝트를 배포(게시)하는 방법을 보여 줍니다. 웹 게시 업데이트를 설치하는 경우 Visual Studio 2010을 사용할 수도 있습니다. 시리즈에 대한 소개는 시리즈의 첫 번째 자습서를 참조하세요.

Visual Studio 2012의 RC 릴리스 이후 도입된 배포 기능을 보여 주는 자습서에서는 SQL Server Compact 이외의 SQL Server 버전을 배포하는 방법을 보여 줍니다. Azure App Service Web Apps 배포하는 방법을 보여 주는 자습서는 Visual Studio를 사용하여 ASP.NET 웹 배포를 참조하세요.

개요

이 자습서에서는 로컬 컴퓨터의 IIS에 ASP.NET 웹 애플리케이션을 배포하는 방법을 보여 줍니다.

애플리케이션을 개발할 때 일반적으로 Visual Studio에서 실행하여 테스트합니다. 기본적으로 Visual Studio 개발 서버(Cassini라고도 함)를 사용하고 있습니다. Visual Studio 개발 서버를 사용하면 Visual Studio에서 개발하는 동안 쉽게 테스트할 수 있지만 IIS와 동일하게 작동하지는 않습니다. 따라서 Visual Studio에서 테스트할 때 애플리케이션이 올바르게 실행되지만 호스팅 환경의 IIS에 배포될 때 실패할 수 있습니다.

다음과 같은 방법으로 애플리케이션을 보다 안정적으로 테스트할 수 있습니다.

  1. 개발 중에 Visual Studio에서 테스트할 때 Visual Studio 개발 서버 대신 IIS Express 또는 전체 IIS를 사용합니다. 이 메서드는 일반적으로 IIS에서 사이트를 실행하는 방법을 보다 정확하게 에뮬레이트합니다. 그러나 이 메서드는 배포 프로세스를 테스트하거나 배포 프로세스의 결과가 올바르게 실행되는지 확인하지 않습니다.
  2. 나중에 프로덕션 환경에 배포하는 데 사용할 것과 동일한 프로세스를 사용하여 개발 컴퓨터의 IIS에 애플리케이션을 배포합니다. 이 메서드는 IIS에서 애플리케이션이 올바르게 실행되는지 확인하는 것 외에도 배포 프로세스의 유효성을 검사합니다.
  3. 프로덕션 환경에 최대한 가까운 테스트 환경에 애플리케이션을 배포합니다. 이러한 자습서의 프로덕션 환경은 타사 호스팅 공급자이므로 이상적인 테스트 환경은 호스팅 공급자를 사용하는 두 번째 계정입니다. 이 두 번째 계정은 테스트에만 사용하지만 프로덕션 계정과 동일한 방식으로 설정됩니다.

이 자습서에서는 옵션 2의 단계를 보여줍니다. 옵션 3에 대한 지침은 프로덕션 환경에 배포 자습서의 끝에 제공되며, 이 자습서의 끝에는 옵션 1에 대한 리소스에 대한 링크가 있습니다.

미리 알림: 자습서를 진행하는 동안 오류 메시지가 표시되거나 문제가 해결되지 않으면 문제 해결 페이지를 검사 합니다.

중간 신뢰에서 실행되도록 애플리케이션 구성

IIS를 설치하고 배포하기 전에 일반적인 공유 호스팅 환경에서처럼 사이트를 실행하도록 Web.config 파일 설정을 변경합니다.

호스팅 공급자는 일반적으로 중간 신뢰로 웹 사이트를 실행합니다. 즉, 수행할 수 없는 몇 가지 작업이 있습니다. 예를 들어 애플리케이션 코드는 Windows 레지스트리에 액세스할 수 없으며 애플리케이션의 폴더 계층 구조 외부에 있는 파일을 읽거나 쓸 수 없습니다. 기본적으로 애플리케이션은 로컬 컴퓨터에서 높은 신뢰 로 실행됩니다. 즉, 애플리케이션이 프로덕션 환경에 배포할 때 실패하는 작업을 수행할 수 있습니다. 따라서 테스트 환경이 프로덕션 환경을 보다 정확하게 반영하도록 하려면 중간 신뢰도로 실행되도록 애플리케이션을 구성합니다.

이 예제와 같이 애플리케이션 Web.config 파일에서 system.web 요소에 trust 요소를 추가합니다.

<configuration>
  <!-- Settings -->
  <system.web>
    <trust level="Medium" />
    <!-- Settings -->
  </system.web>
</configuration>

이제 애플리케이션은 로컬 컴퓨터에서도 IIS에서 중간 신뢰로 실행됩니다. 이 설정을 사용하면 애플리케이션 코드에서 프로덕션에서 실패할 수 있는 작업을 수행하려는 시도를 가능한 한 빨리 catch할 수 있습니다.

참고

Entity Framework Code First 마이그레이션 사용하는 경우 버전 5.0 이상이 설치되어 있는지 확인합니다. Entity Framework 버전 4.3에서 마이그레이션은 데이터베이스 스키마를 업데이트하기 위해 완전한 신뢰가 필요합니다.

IIS 및 웹 배포 설치

개발 컴퓨터에서 IIS에 배포하려면 IIS 및 웹 배포가 설치되어 있어야 합니다. 이러한 구성은 기본 Windows 7 구성에 포함되지 않습니다. IIS 및 웹 배포를 모두 이미 설치한 경우 다음 섹션으로 건너뜁니다.

웹 플랫폼 설치 관리자는 IIS에 권장 구성을 설치하고 필요한 경우 IIS 및 웹 배포에 대한 필수 구성 요소를 자동으로 설치하므로 웹 플랫폼 설치 관리자를 사용하는 것이 IIS 및 웹 배포를 설치하는 데 선호되는 방법입니다.

웹 플랫폼 설치 관리자를 실행하여 IIS 및 웹 배포를 설치하려면 다음 링크를 사용합니다. IIS, 웹 배포 또는 필요한 구성 요소를 이미 설치한 경우 웹 플랫폼 설치 관리자는 누락된 구성 요소만 설치합니다.

기본 애플리케이션 풀을 .NET 4로 설정

IIS를 설치한 후 IIS 관리자를 실행하여 .NET Framework 버전 4가 기본 애플리케이션 풀에 할당되었는지 확인합니다.

Windows 시작 메뉴에서 실행을 선택하고 "inetmgr"을 입력한 다음 확인을 클릭합니다. 실행 명령이 시작 메뉴에 없는 경우 Windows 키 및 R을 눌러 열 수 있습니다. 또는 작업 표시줄을 마우스 오른쪽 단추로 클릭하고 속성을 클릭하고 시작 메뉴 탭을 선택하고 사용자 지정을 클릭한 다음 명령 실행을 선택합니다.)

Connections 창에서 서버 노드를 확장하고 애플리케이션 풀을 선택합니다. 다음 그림 과 같이 Application Pools 창에서 DefaultAppPool 이 .NET Framework 버전 4에 할당된 경우 다음 섹션으로 건너뜁니다.

Inetmgr_showing_4.0_app_pools

두 개의 애플리케이션 풀만 표시되고 둘 다 .NET Framework 2.0으로 설정된 경우 IIS에 ASP.NET 4를 설치해야 합니다.

  • Windows 시작 메뉴에서 명령 프롬프트를 마우스 오른쪽 단추로 클릭하고 관리자 권한으로 실행을 선택하여 명령 프롬프트 창을 엽니다. 그런 다음 aspnet_regiis.exe 실행하여 다음 명령을 사용하여 IIS에 ASP.NET 4를 설치합니다. (64비트 시스템에서는 "Framework"를 "Framework64"로 대체합니다.)

    cd %windir%\Microsoft.NET\Framework\v4.0.30319
    aspnet_regiis.exe –iru
    

    aspnet_regiis_installing_ASP.NET_4

    이 명령은 .NET Framework 4에 대한 새 애플리케이션 풀을 만들지만 기본 애플리케이션 풀은 여전히 2.0으로 설정됩니다. .NET 4를 대상으로 하는 애플리케이션을 해당 애플리케이션 풀에 배포하므로 애플리케이션 풀을 .NET 4로 변경해야 합니다.

IIS 관리자를 닫은 경우 다시 실행하고 서버 노드를 확장한 다음 애플리케이션 풀을 클릭하여 애플리케이션 풀 창을 다시 표시합니다.

애플리케이션 풀 창에서 DefaultAppPool을 클릭한 다음 작업 창에서 기본 설정을 클릭합니다.

Inetmgr_selecting_Basic_Settings_for_app_pool

애플리케이션 풀 편집 대화 상자에서 .NET Framework 버전을.NET Framework v4.0.30319로 변경하고 확인을 클릭합니다.

Selecting_.NET_4_for_DefaultAppPool

이제 IIS에 게시할 준비가 되었습니다.

IIS에 게시

Visual Studio 2010 및 웹 배포를 사용하여 배포할 수 있는 방법에는 여러 가지가 있습니다.

  • Visual Studio 한 번 클릭 게시를 사용합니다.
  • 배포 패키지를 만들고 IIS 관리자 UI를 사용하여 설치합니다. 배포 패키지는 IIS에 사이트를 설치하는 데 필요한 모든 파일 및 메타데이터를 포함하는 .zip 파일로 구성됩니다.
  • 배포 패키지를 만들고 명령줄을 사용하여 설치합니다.

배포 작업을 자동화하기 위해 Visual Studio를 설정하기 위해 이전 자습서에서 진행한 프로세스는 이러한 세 가지 방법 모두에 적용됩니다. 이 자습서에서는 이러한 메서드 중 첫 번째 메서드를 사용합니다. 배포 패키지 사용에 대한 자세한 내용은 ASP.NET 배포 콘텐츠 맵을 참조하세요.

게시하기 전에 관리자 모드에서 Visual Studio를 실행하고 있는지 확인합니다. (Windows 7 시작 메뉴에서 사용 중인 Visual Studio 버전 아이콘을 마우스 오른쪽 단추 로 클릭하고 관리자 권한으로 실행을 선택합니다.) 관리자 모드는 로컬 컴퓨터에서 IIS에 게시하는 경우에만 게시하는 데 필요합니다.

솔루션 탐색기 ContosoUniversity 프로젝트(ContosoUniversity.DAL 프로젝트가 아님)를 마우스 오른쪽 단추로 클릭하고 게시를 선택합니다.

웹 게시 마법사가 나타납니다.

Publish_Web_wizard_Profile_tab

드롭다운 목록에서 새로 만들기...>를 선택합니다<.

새 프로필 대화 상자에서 "테스트"를 입력한 다음 확인을 클릭합니다.

New_Profile_dialog_box

이 이름은 이전에 만든 Web.Test.config 변환 파일의 중간 노드와 동일합니다. 이 대응으로 인해 이 프로필을 사용하여 게시할 때 Web.Test.config 변환이 적용됩니다.

마법사가 자동으로 연결 탭으로 이동합니다.

서비스 URL 상자에 localhost를 입력합니다.

사이트/애플리케이션 상자에 기본 웹 사이트/ContosoUniversity를 입력합니다.

대상 URL 상자에 를 입력합니다http://localhost/ContosoUniversity.

대상 URL 설정은 필요하지 않습니다. Visual Studio에서 애플리케이션 배포를 마치면 기본 브라우저가 이 URL로 자동으로 열립니다. 배포 후 브라우저를 자동으로 열지 않으려면 이 상자를 비워 둡니다.

Publish_Web_wizard_Connection_tab_Test

연결 유효성 검사를 클릭하여 설정이 올바른지 확인하고 로컬 컴퓨터에서 IIS에 연결할 수 있습니다.

녹색 검사 표시는 연결이 성공했음을 확인합니다.

Publish_Web_wizard_Connection_tab_validated

다음을 클릭하여 설정 탭으로 이동합니다.

구성 드롭다운 상자는 배포할 빌드 구성을 지정합니다. 기본값은 원하는 릴리스입니다.

대상 검사 추가 파일 제거 상자를 선택 취소한 상태로 둡니다. 첫 번째 배포이므로 아직 대상 폴더에 파일이 없습니다.

데이터베이스 섹션의 SchoolContext에 대한 연결 문자열 상자에 다음 값을 입력합니다.

Data Source=|DataDirectory|School-Prod.sdf

런타임에 이 연결 문자열 사용이 선택되었으므로 배포 프로세스는 배포된 Web.config 파일에 이 연결 문자열 배치합니다.

또한 SchoolContext에서 Code First 마이그레이션 적용을 선택합니다. 이 옵션을 사용하면 배포 프로세스가 배포된 Web.config 파일을 구성하여 이니셜라이저를 MigrateDatabaseToLatestVersion 지정합니다. 이 이니셜라이저는 애플리케이션이 배포 후 처음으로 데이터베이스에 액세스할 때 데이터베이스를 최신 버전으로 자동으로 업데이트합니다.

DefaultConnection에 대한 연결 문자열 상자에 다음 값을 입력합니다.

Data Source=|DataDirectory|aspnet-Prod.sdf

업데이트 데이터베이스를 지워 둡니다. 멤버 자격 데이터베이스는 App_Data .sdf 파일을 복사하여 배포되며 배포 프로세스에서 이 데이터베이스를 사용하여 다른 작업을 수행하지 않도록 합니다.

Publish_Web_wizard_Settings_tab_Test

다음을 클릭하여 미리 보기 탭으로 이동합니다.

미리 보기 탭에서 미리 보기 시작을 클릭하여 복사할 파일 목록을 확인합니다.

Publish_Web_wizard_Preview_tab_Test

Publish_Web_wizard_Preview_tab_Test_with_file_list

게시를 클릭합니다.

Visual Studio가 관리자 모드가 아닌 경우 권한 오류를 나타내는 오류 메시지가 표시될 수 있습니다. 이 경우 Visual Studio를 닫고 관리자 모드에서 열고 다시 게시해 봅니다.

Visual Studio가 관리자 모드인 경우 출력 창은 성공적인 빌드 및 게시를 보고합니다.

Output_window_publish_Test

브라우저는 로컬 컴퓨터의 IIS에서 실행되는 Contoso University 홈페이지로 자동으로 열립니다.

Contoso University 환경 표시기가 개발 대신 테스트임을 보여 주는 인터넷 Explorer 창의 스크린샷

테스트 환경에서 테스트

환경 표시기는 환경 표시기의 Web.config 변환이 성공했음을 보여 주는 "(Dev)" 대신 "(테스트)"를 표시합니다.

Contoso University 환경 표시기가 개발 대신 테스트임을 보여주는 인터넷 Explorer 창의 스크린샷.

학생 페이지를 실행하여 배포된 데이터베이스에 학생이 없는지 확인합니다. 이 페이지를 선택하면 Code First가 데이터베이스를 만든 다음 메서드를 실행 Seed 하기 때문에 로드하는 데 몇 분 정도 걸릴 수 있습니다. (애플리케이션이 아직 데이터베이스에 액세스하려고 하지 않았기 때문에 홈페이지에 있을 때는 그렇게 하지 않았습니다.)

Students_page_Test

강사 페이지를 실행하여 Code First가 강사 데이터를 사용하여 데이터베이스를 시드했는지 확인합니다.

Instructors_page_Test

학생 메뉴에서 학생 추가를 선택하고 학생을 추가한 다음 학생 페이지에서 새 학생을 확인하여 데이터베이스에 성공적으로 쓸 수 있는지 확인합니다.

Add_Students_page_Test

Students_page_with_new_student_Test

과정 메뉴에서 크레딧 업데이트를 선택합니다. 크레딧 업데이트 페이지에는 관리자 권한이 필요하므로 로그인 페이지가 표시됩니다. 이전에 만든 관리자 계정 자격 증명("admin" 및 "Pas$w0rd")을 입력합니다. 이전 자습서에서 만든 관리자 계정이 테스트 환경에 올바르게 배포되었는지 확인하는 크레딧 업데이트 페이지가 표시됩니다.

Log_In_page_Test

Update_Credits_page_Test

Elmah 폴더에 자리 표시자 파일만 있는지 확인합니다.

Elmah_folder_Test

Code First 마이그레이션 대한 자동 Web.config 변경 내용 검토

배포된 애플리케이션의 C:\inetpub\wwwroot\ContosoUniversity에서Web.config 파일을 열고 데이터베이스를 최신 버전으로 자동으로 업데이트하도록 Code First 마이그레이션 배포 프로세스가 구성된 위치를 확인할 수 있습니다.

데이터베이스를 최신 버전으로 자동으로 업데이트하도록 Code First 마이그레이션 배포 프로세스가 구성된 위치를 강조 표시하는 스크린샷

또한 배포 프로세스는 데이터베이스 스키마 업데이트에만 사용할 Code First 마이그레이션 대한 새 연결 문자열 만들었습니다.

DatabasePublish_connection_string

이 추가 연결 문자열 사용하면 데이터베이스 스키마 업데이트에 대해 하나의 사용자 계정과 애플리케이션 데이터 액세스를 위한 다른 사용자 계정을 지정할 수 있습니다. 예를 들어 Code First 마이그레이션 db_owner 역할을 할당하고 db_datareader 및 db_datawriter 역할을 애플리케이션에 할당할 수 있습니다. 이는 애플리케이션에서 잠재적으로 악성 코드가 데이터베이스 스키마를 변경하지 못하도록 하는 일반적인 심층 방어 패턴입니다. (예를 들어 이는 성공적인 SQL 삽입 공격에서 발생할 수 있습니다.) 이 패턴은 이러한 자습서에서 사용되지 않습니다. SQL Server Compact 적용되지 않으며 이 시리즈의 이후 자습서에서 SQL Server 마이그레이션할 때 적용되지 않습니다. Cytanium 사이트는 Cytanium에서 만든 SQL Server 데이터베이스에 액세스하기 위한 하나의 사용자 계정만 제공합니다. 시나리오에서 이 패턴을 구현할 수 있는 경우 다음 단계를 수행하여 이 패턴을 구현할 수 있습니다.

  1. 웹 게시 마법사의 설정 탭에서 전체 데이터베이스 스키마 업데이트 권한이 있는 사용자를 지정하는 연결 문자열 입력하고 런타임에 이 연결 문자열 사용 검사 상자의 선택 취소를 선택합니다. 배포된 Web.config 파일에서 연결 문자열 됩니다 DatabasePublish .
  2. 런타임에 애플리케이션에서 사용할 연결 문자열 대한 Web.config 파일 변환을 만듭니다.

이제 개발 컴퓨터의 IIS에 애플리케이션을 배포하고 테스트했습니다. 이렇게 하면 배포 프로세스에서 애플리케이션의 콘텐츠를 올바른 위치(배포하지 않으려는 파일 제외)에 복사하고 배포 중에 웹 배포가 IIS를 올바르게 구성했는지 확인합니다. 다음 자습서에서는 아직 완료되지 않은 배포 작업을 찾는 테스트를 한 번 더 실행합니다. Elmah 폴더에 대한 폴더 권한 설정.

추가 정보

Visual Studio에서 IIS 또는 IIS Express 실행하는 방법에 대한 자세한 내용은 다음 리소스를 참조하세요.