Visual Studio 또는 Visual Web Developer를 사용하여 SQL Server Compact ASP.NET 웹 애플리케이션 배포: 프로덕션 환경에 배포 - 12개 중 7개

작성자 : 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 참조하세요.

개요

이 자습서에서는 호스팅 공급자를 사용하여 계정을 설정하고 Visual Studio 원클릭 게시 기능을 사용하여 ASP.NET 웹 애플리케이션을 프로덕션 환경에 배포합니다.

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

호스팅 공급자 선택

Contoso University 애플리케이션 및 이 자습서 시리즈의 경우 ASP.NET 4 및 웹 배포를 지원하는 공급자가 필요합니다. 자습서에서 라이브 웹 사이트에 배포하는 전체 환경을 설명할 수 있도록 특정 호스팅 회사가 선택되었습니다. 각 호스팅 회사는 다양한 기능을 제공하며 서버에 배포하는 환경은 다소 다릅니다. 그러나 이 자습서에서 설명하는 프로세스는 전체 프로세스에 일반적입니다. 이 자습서에 사용되는 호스팅 공급자인 Cytanium.com 사용할 수 있는 많은 공급자 중 하나이며 이 자습서에서 사용하는 것이 보증 또는 권장 사항을 구성하지 않습니다.

자체 호스팅 공급자를 선택할 준비가 되면 Microsoft.com/web 사이트의 공급자 갤러리 에서 기능과 가격을 비교할 수 있습니다.

계정 만들기

선택한 공급자에서 계정을 만듭니다. 전체 SQL Server 데이터베이스에 대한 지원이 추가된 경우 이 자습서에서는 선택할 필요가 없지만 이 시리즈의 뒷부분에 있는 SQL Server 마이그레이션 자습서에 필요합니다.

이러한 자습서에서는 새 도메인 이름을 등록할 필요가 없습니다. 공급자가 사이트에 할당한 임시 URL을 사용하여 성공적인 배포를 확인하도록 테스트할 수 있습니다.

계정을 만든 후에는 일반적으로 사이트를 배포하고 관리하기 위해 필요한 모든 정보가 포함된 환영 전자 메일을 받게 됩니다. 호스팅 공급자가 보내는 정보는 여기에 표시된 것과 유사합니다. 새 계정 소유자에게 전송되는 Cytanium 환영 전자 메일에는 다음 정보가 포함됩니다.

  • 사이트의 설정을 관리할 수 있는 공급자의 제어판 사이트에 대한 URL입니다. 지정한 ID 및 암호는 간편한 참조를 위해 환영 전자 메일의 이 부분에 포함됩니다. (둘 다 이 그림의 데모 값으로 변경되었습니다.)

    Welcome_Email_Control_Panel_URL

  • 기본 .NET Framework 버전 및 변경 방법에 대한 정보입니다. 대부분의 호스팅 사이트는 기본적으로 2.0으로 설정되며, .NET Framework 2.0, 3.0 또는 3.5를 대상으로 하는 ASP.NET 애플리케이션에서 작동합니다. 그러나 Contoso University는 .NET Framework 4 애플리케이션이므로 이 설정을 변경해야 합니다. (ASP.NET 4.5 애플리케이션의 경우 .NET 4.0 설정을 사용합니다.)

    Welcome_Email_Framework_Version

  • 웹 사이트에 액세스하는 데 사용할 수 있는 임시 URL입니다. 이 계정을 만들 때 기존 도메인 이름으로 "contosouniversity.com"을 입력했습니다. 따라서 임시 URL은 입니다 http://contosouniversity.com.vserver01.cytanium.com.

    Welcome_Email_Temporary_URL

  • 데이터베이스를 설정하는 방법 및 데이터베이스에 액세스하기 위해 필요한 연결 문자열에 대한 정보:

    Welcome_Email_Database_Info

  • 사이트 배포를 위한 도구 및 설정에 대한 정보입니다. (Cytanium의 전자 메일에는 여기에 생략된 WebMatrix도 언급되어 있습니다.)

    Welcome_Email_Deploy_info

.NET Framework 버전 설정

Cytanium 환영 메일에는 .NET Framework 버전을 변경하는 방법에 대한 지침에 대한 링크가 포함되어 있습니다. 이러한 지침은 Cytanium 제어판을 통해 수행할 수 있음을 설명합니다. 다른 공급자에는 다르게 보이는 제어판 사이트가 있거나 다른 방식으로 이 작업을 수행하도록 지시할 수 있습니다.

제어판 URL로 이동합니다. 사용자 이름 및 암호로 로그인하면 제어판이 표시됩니다.

Cytanium_Control_Panel

호스팅 공간 상자의 웹 아이콘 위에 포인터를 놓고 메뉴에서 웹 사이트를 선택합니다.

Cytanium_Control_Panel_selecting_Web_Sites

웹 사이트 상자에서 contosouniversity.com(계정을 만들 때 사용한 사이트의 이름)을 클릭합니다.

Cytanium_Control_Panel_selecting_contosouniversity

웹 사이트 속성 상자에서 확장 탭을 선택합니다.

Cytanium_Control_Panel_Extensions_tab

ASP.NET 2.0 통합 파이프라인에서 4.0(통합 파이프라인)으로 변경한 다음 업데이트를 클릭합니다.

호스팅 공급자에 게시

호스팅 공급자의 환영 전자 메일에는 프로젝트를 게시하기 위해 필요한 모든 설정이 포함되어 있으며 해당 정보를 게시 프로필에 수동으로 입력할 수 있습니다. 그러나 더 쉽고 오류가 발생하기 쉬운 메서드를 사용하여 공급자에 대한 배포를 구성합니다. .publishsettings 파일을 다운로드하여 게시 프로필로 가져옵니다.

브라우저에서 Cytanium 제어판으로 이동하여 을 선택한 다음 웹 사이트를 선택합니다.

웹 사이트 선택 제어판

contosouniversity.com 웹 사이트를 선택합니다.

contosouniversity.com 선택하는 제어판

웹 게시 탭을 선택합니다.

제어판 웹 게시 탭

사용자 이름 및 암호를 입력하여 웹 게시에 사용할 자격 증명을 만듭니다. 제어판에 로그온하는 데 사용하는 것과 동일한 자격 증명을 입력할 수 있습니다. 그리고 사용을 클릭합니다.

게시 자격 증명 만들기 제어판

이 웹 사이트에 대한 게시 프로필 다운로드를 클릭합니다.

게시 프로필 다운로드 제어판

파일을 열거나 저장하라는 메시지가 표시되면 저장합니다.

게시 프로필 파일 저장

Visual Studio의 솔루션 탐색기 ContosoUniversity 프로젝트를 마우스 오른쪽 단추로 클릭하고 게시를 선택합니다. 마지막으로 사용한 프로필이므로 테스트 프로필이 선택된 웹 게시 대화 상자가 미리 보기 탭에서 열립니다.

프로필 탭을 선택한 다음 가져오기를 클릭합니다.

웹 게시 마법사 가져오기 단추

게시 설정 가져오기 대화 상자에서 다운로드한 .publishsettings 파일을 선택하고 열기를 클릭합니다. 마법사는 모든 필드가 채워진 연결 탭으로 이동합니다.

웹 게시 마법사 연결 탭

.publishsettings 파일은 사이트의 계획된 영구 URL을 대상 URL 상자에 배치하지만, 아직 해당 도메인을 구입하지 않은 경우 값을 임시 URL로 바꿉니다. 이 예제에서 URL은 http://contosouniversity.com.vserver01.cytanium.com 이 상자의 유일한 목적은 배포 후 브라우저가 자동으로 열리는 URL을 지정하는 것입니다. 비워 두면 브라우저가 배포 후에 자동으로 시작되지 않습니다.

연결 유효성 검사를 클릭하여 설정이 올바르고 서버에 연결할 수 있는지 확인합니다. 앞에서 본 것처럼 녹색 검사 표시는 연결이 성공했는지 확인합니다.

연결 유효성 검사를 클릭하면 인증서 오류 대화 상자가 표시될 수 있습니다. 이 경우 서버 이름이 예상한 이름인지 확인합니다. 이 경우 Visual Studio의 이후 세션에 대해 이 인증서 저장을 선택하고 수락을 클릭합니다. (이 오류는 호스팅 공급자가 배포하는 URL에 대한 SSL 인증서 구매 비용을 방지하기 위해 선택했음을 의미합니다. 유효한 인증서를 사용하여 보안 연결을 설정하려면 호스팅 공급자에게 문의하세요.)

인증서 오류

다음을 클릭합니다.

설정 탭의 데이터베이스 섹션에서 테스트 게시 프로필에 대해 입력한 것과 동일한 값을 입력합니다. 드롭다운 목록에서 필요한 연결 문자열을 찾을 수 있습니다.

  • SchoolContext에 대한 연결 문자열 상자에서Data Source=|DataDirectory|School-Prod.sdf
  • SchoolContext에서 적용 Code First 마이그레이션 선택합니다.
  • DefaultConnection에 대한 연결 문자열 상자에서Data Source=|DataDirectory|aspnet-Prod.sdf
  • DefaultConnection에서 데이터베이스 업데이트를 지워 둡니다.

웹 게시 마법사 설정 탭

다음을 클릭합니다.

미리 보기 탭에서 미리 보기 시작을 클릭하여 복사할 파일 목록을 확인합니다. 로컬 컴퓨터에서 IIS에 배포할 때 이전에 본 것과 동일한 목록이 표시됩니다.

게시하기 전에 Web.Production.config 변환 파일이 적용되도록 프로필 이름을 변경합니다. 프로필 탭을 선택하고 프로필 관리를 클릭합니다.

웹 게시 마법사 프로필 관리

웹 게시 프로필 편집 대화 상자에서 프로덕션 프로필을 선택하고 이름 바꾸기를 클릭한 다음 프로필 이름을 프로덕션으로 변경합니다. 그런 다음 닫기를 클릭합니다.

웹 게시 프로필 편집 대화 상자

게시를 클릭합니다.

애플리케이션이 호스팅 공급자에 게시됩니다. 결과는 출력 창에 표시됩니다.

배포 후 출력 창

웹 게시 마법사의 연결 탭에 있는 대상 URL 상자에 입력한 URL이 브라우저에서 자동으로 열립니다. 이제 제목 표시줄에 "(테스트)" 또는 "(Dev)" 환경 표시기가 없다는 점을 제외하고 Visual Studio에서 사이트를 실행할 때와 동일한 홈페이지가 표시됩니다. 이는 환경 표시기 Web.config 변환이 올바르게 작동했음을 나타냅니다.

참고

제목에 "(테스트)"가 계속 표시되면 ContosoUniversity 프로젝트에서 obj 폴더를 삭제하고 다시 배포합니다. 소프트웨어의 시험판 버전에서는 프로덕션 프로필을 사용하지만 이전에 적용된 변환 파일(Web.Test.config)이 다시 적용될 수 있습니다.

Home_page_Prod

데이터베이스 액세스를 유발하는 페이지를 실행하기 전에 Elmah가 발생하는 오류를 기록할 수 있는지 확인합니다.

Elmah에 대한 폴더 권한 설정

이 시리즈의 이전 자습서에서 기억하듯이 Elmah가 오류 로그 파일을 저장하는 애플리케이션의 폴더에 대한 쓰기 권한이 애플리케이션에 있는지 확인해야 합니다. 컴퓨터에서 IIS에 로컬로 배포한 경우 해당 권한을 수동으로 설정합니다. 이 섹션에서는 Cytanium에서 권한을 설정하는 방법을 알아보세요. (일부 호스팅 공급자는 이 작업을 수행할 수 없습니다. 쓰기 권한이 있는 미리 정의된 폴더를 하나 이상 제공할 수 있습니다. 이 경우 지정된 폴더를 사용하도록 애플리케이션을 수정해야 합니다.)

Cytanium 제어판에서 폴더 권한을 설정할 수 있습니다. 제어판 URL로 이동하여 파일 관리자를 선택합니다.

Cytanium_Control_Panel_with_File_Manager_selected

파일 관리자 상자에서 contosouniversity.com 선택한 다음 wwwroot를 선택하여 애플리케이션의 루트 폴더를 확인합니다. Elmah 옆에 있는 자물쇠 아이콘을 클릭합니다.

Cytanium_Control_Panel_File_Manager_at_root_folder

파일/폴더 권한 창에서 contosouniversity.com 대한 읽기쓰기 확인란을 선택하고 사용 권한 설정을 클릭합니다.

Cytanium_Control_Panel_File_Folder_Permissions_Elmah

Elmah에서 오류를 발생시킨 다음 Elmah 오류 보고서를 표시하여 Elmah 폴더에 대한 쓰기 권한이 있는지 확인합니다. Studentsxxx.aspx와 같은 잘못된 URL을 요청합니다. 이전과 마찬가지로 GenericErrorPage.aspx 페이지가 표시됩니다. 로그아웃 링크를 클릭한 다음 Elmah.axd를 실행합니다. 먼저 로그인 페이지가 표시됩니다. 그러면 Web.config 변환이 Elmah 권한 부여를 성공적으로 추가되었는지 확인합니다. 로그인하면 방금 발생한 오류를 보여 주는 보고서가 표시됩니다.

Elmah.axd_Prod

프로덕션 환경에서 테스트

학생 페이지를 실행합니다. 애플리케이션은 처음으로 School 데이터베이스에 액세스하려고 시도하여 데이터베이스를 만드는 Code First 마이그레이션 트리거합니다. 잠시 후 페이지가 표시되면 학생이 없음을 보여 줍니다.

Students_page_Prod

강사 페이지를 실행하여 시드 데이터가 데이터베이스에 강사 데이터를 성공적으로 삽입했는지 확인합니다.

Instructors_page_Prod

테스트 환경에서와 마찬가지로 데이터베이스 업데이트가 프로덕션 환경에서 작동하는지 확인하려고 하지만 일반적으로 프로덕션 데이터베이스에 테스트 데이터를 입력하지는 않습니다. 이 자습서에서는 테스트에서 했던 것과 동일한 메서드를 사용합니다. 그러나 실제 애플리케이션에서는 프로덕션 데이터베이스에 테스트 데이터를 도입하지 않고도 데이터베이스 업데이트가 성공적이라는 유효성을 검사하는 메서드를 찾을 수 있습니다. 일부 애플리케이션에서는 무언가를 추가한 다음 삭제하는 것이 실용적일 수 있습니다.

학생을 추가한 다음 학생 페이지에서 입력한 데이터를 확인하여 데이터베이스의 데이터를 업데이트할 수 있는지 확인합니다.

Add_Students_page_Prod

Students_page_with_new_student_Prod

과정 메뉴에서 크레딧 업데이트를 선택하여 권한 부여 규칙이 제대로 작동하는지 확인합니다. 로그인 페이지가 표시됩니다. 관리자 계정 자격 증명을 입력하고 로그인을 클릭하면 크레딧 업데이트 페이지가 표시됩니다.

Log_In_page_Prod

로그인에 성공하면 크레딧 업데이트 페이지가 표시됩니다. 이는 단일 관리자 계정으로 ASP.NET 멤버 자격 데이터베이스가 성공적으로 배포되었음을 나타냅니다.

Update_Credits_page_Prod

이제 사이트를 성공적으로 배포하고 테스트했으며 인터넷을 통해 공개적으로 사용할 수 있습니다.

보다 안정적인 테스트 환경 만들기

테스트 환경에 배포 자습서에 설명된 대로 가장 신뢰할 수 있는 테스트 환경은 프로덕션 계정과 같은 호스팅 공급자의 두 번째 계정입니다. 두 번째 호스팅 계정에 등록해야 하므로 로컬 IIS를 테스트 환경으로 사용하는 것보다 비용이 더 많이 듭니다. 그러나 프로덕션 사이트 오류 또는 중단을 방지하는 경우 비용 가치가 있다고 결정할 수 있습니다.

테스트 계정을 만들고 배포하는 프로세스의 대부분은 프로덕션에 배포하기 위해 이미 수행한 프로세스와 비슷합니다.

  • Web.config 변환 파일을 만듭니다.
  • 호스팅 공급자에서 계정을 만듭니다.
  • 새 게시 프로필을 만들고 테스트 계정에 배포합니다.

테스트 사이트에 대한 공용 액세스 방지

테스트 계정에 대한 중요한 고려 사항은 인터넷에서 라이브로 유지되지만 대중이 사용하지 않기를 원한다는 것입니다. 사이트를 비공개로 유지하려면 다음 방법 중 하나 이상을 사용할 수 있습니다.

  • 호스팅 공급자에게 문의하여 테스트에 사용하는 IP 주소에서만 테스트 사이트에 대한 액세스를 허용하는 방화벽 규칙을 설정합니다.
  • 공용 사이트의 URL과 유사하지 않도록 URL을 위장합니다.
  • robots.txt 파일을 사용하여 검색 엔진이 테스트 사이트를 크롤링하지 않고 검색 결과에 링크를 보고하지 않도록 합니다.

이러한 방법 중 첫 번째는 분명히 가장 안전하지만 해당 절차는 각 호스팅 공급자와 관련이 있으며 이 자습서에서는 다루지 않습니다. 호스팅 공급자와 정렬하여 IP 주소만 테스트 계정 URL로 이동하도록 허용하는 경우 이론적으로 검색 엔진이 크롤링하는 것에 대해 걱정할 필요가 없습니다. 그러나 이 경우에도 방화벽 규칙이 실수로 꺼진 경우 백업으로robots.txt 파일을 배포하는 것이 좋습니다.

robots.txt 파일은 프로젝트 폴더에 저장되며 그 안에 다음 텍스트가 있어야 합니다.

User-agent: *
Disallow: /

이 줄은 파일의 규칙이 모든 검색 엔진 웹 크롤러(로봇)에 적용되도록 검색 엔진에 알리고Disallow, 줄은 User-agent 사이트의 페이지를 크롤링하지 않음을 지정합니다.

검색 엔진이 프로덕션 사이트를 카탈로그화하려고 할 수 있으므로 프로덕션 배포에서 이 파일을 제외해야 합니다. 이렇게 하려면 ASP.NET 웹 애플리케이션 프로젝트 배포 FAQ에서 특정 파일 또는 폴더를 배포에서 제외할 수 있나요?를 참조하세요. 프로덕션 게시 프로필에 대해서만 제외를 지정해야 합니다.

두 번째 호스팅 계정을 만드는 것은 필수는 아니지만 추가 비용 가치가 있는 테스트 환경을 사용하는 방법입니다. 다음 자습서에서는 IIS를 테스트 환경으로 계속 사용합니다.

다음 자습서에서는 애플리케이션 코드를 업데이트하고 변경 내용을 테스트 및 프로덕션 환경에 배포합니다.