FTP 클라이언트를 사용하여 사이트 배포(C#)

작성자 : Scott Mitchell

PDF 다운로드

ASP.NET 애플리케이션을 배포하는 가장 간단한 방법은 개발 환경에서 프로덕션 환경으로 필요한 파일을 수동으로 복사하는 것입니다. 이 자습서에서는 FTP 클라이언트를 사용하여 데스크톱에서 웹 호스트 공급자로 파일을 가져오는 방법을 보여 줍니다.

소개

이전 자습서에서는 몇 개의 ASP.NET 페이지, master 페이지, 사용자 지정 기본 Page 클래스, 여러 이미지 및 3개의 CSS 스타일시트로 구성된 간단한 Book Review ASP.NET 웹 애플리케이션을 소개했습니다. 이제 이 애플리케이션을 웹 호스트 공급자에 배포할 준비가 되었습니다. 이 시점에서 인터넷에 연결된 모든 사용자가 애플리케이션에 액세스할 수 있습니다.

배포해야 할 파일 결정 자습서의 논의에서 웹 호스트 공급자에게 복사해야 하는 파일을 알고 있습니다. (복사되는 파일은 애플리케이션이 명시적으로 컴파일되는지 또는 자동으로 컴파일되는지에 따라 달라집니다.) 그러나 개발 환경(데스크톱)에서 프로덕션 환경(웹 호스트 공급자가 관리하는 웹 서버)까지 파일을 어떻게 가져올 수 있을까요? FileT ransfer P rotocol(FTP)은 네트워크를 통해 한 컴퓨터에서 다른 컴퓨터로 파일을 복사하는 데 일반적으로 사용되는 프로토콜입니다. 또 다른 옵션은 FPSE(FrontPage Server Extensions)입니다. 이 자습서에서는 독립 실행형 FTP 클라이언트 소프트웨어를 사용하여 개발 환경에서 프로덕션 환경으로 필요한 파일을 배포하는 데 중점을 둡니다.

참고

Visual Studio에는 FTP를 통해 웹 사이트를 게시하는 도구가 포함되어 있습니다. 이러한 도구와 FPSE를 사용하는 도구는 다음 자습서에서 다룹니다.

FTP를 사용하여 파일을 복사하려면 개발 환경에서 FTP 클라이언트 가 필요합니다. FTP 클라이언트는 설치된 컴퓨터에서 FTP 서버를 실행하는 컴퓨터로 파일을 복사하도록 설계된 애플리케이션입니다. (웹 호스트 공급자가 FTP를 통해 파일 전송을 지원하는 경우 대부분처럼 해당 웹 서버에서 실행되는 FTP 서버가 있습니다.) 사용할 수 있는 FTP 클라이언트 애플리케이션이 많이 있습니다. 웹 브라우저는 FTP 클라이언트로도 두 배가 될 수 있습니다. 제가 가장 좋아하는 FTP 클라이언트와 이 자습서에 사용할 클라이언트는 Windows, Linux 및 Mac에서 사용할 수 있는 무료 오픈 소스 FTP 클라이언트인 FileZilla입니다. 그러나 모든 FTP 클라이언트가 작동하므로 가장 편안한 클라이언트를 자유롭게 사용할 수 있습니다.

따라가는 경우 이 자습서 또는 후속 자습서를 완료하기 전에 웹 호스트 공급자를 사용하여 계정을 만들어야 합니다. 이전 자습서에서 설명한 것처럼 다양한 가격, 기능 및 서비스 품질을 갖춘 웹 호스트 공급자 회사의 개그가 있습니다. 이 자습서 시리즈의 경우 할인 ASP.NET 웹 호스트 공급자로 사용하지만 사이트가 개발된 ASP.NET 버전을 지원하는 한 모든 웹 호스트 공급자와 함께 팔로우할 수 있습니다. (이 자습서는 ASP.NET 3.5를 사용하여 만들어졌습니다.) 또한 이 자습서에서는 FTP를 사용하여 웹 호스트 공급자에 파일을 복사할 예정이므로 향후 웹 호스트 공급자가 웹 서버에 대한 FTP 액세스를 지원하는 것이 필수적입니다. 거의 모든 웹 호스트 공급자는 이 기능을 제공하지만 등록하기 전에 두 번 검사 합니다.

Book Review 웹 애플리케이션 프로젝트 배포

두 가지 버전의 Book Review 웹 애플리케이션이 있습니다. 하나는 웹 애플리케이션 프로젝트 모델(BookReviewsWAP)을 사용하여 구현되고 다른 하나는 웹 사이트 프로젝트 모델(BookReviewsWSP)을 사용하여 구현되었습니다. 프로젝트 형식은 사이트가 자동으로 또는 명시적으로 컴파일되는지 여부에 영향을 줍니다. 컴파일 모델은 배포해야 하는 파일을 지정합니다. 따라서 BookReviewsWAP부터 BookReviewsWAP 및 BookReviewsWSP 프로젝트를 별도로 배포하는 것을 검토합니다. 아직 다운로드하지 않은 경우 이 두 ASP.NET 애플리케이션을 다운로드해 보세요.

폴더로 이동하고 BookReviewsWAP 파일을 두 번 클릭하여 BookReviewsWAP 프로젝트를 시작합니다 BookReviewsWAP.sln . 프로젝트를 배포하기 전에 소스 코드의 변경 내용이 컴파일된 어셈블리에 포함되도록 빌드하는 것이 중요합니다. 프로젝트를 빌드하려면 빌드 메뉴로 이동하여 BookReviewsWAP 빌드 메뉴 옵션을 선택합니다. 이렇게 하면 프로젝트의 소스 코드가 폴더에 배치 Bin 되는 단일 어셈블리 BookReviewsWAP.dll로 컴파일됩니다.

이제 필요한 파일을 배포할 준비가 되었습니다. FTP 클라이언트를 시작하고 웹 호스트 공급자의 웹 서버에 연결합니다. (웹 호스팅 회사에 등록하면 FTP 서버에 연결하는 방법에 대한 정보를 이메일로 보내드립니다. 여기에는 FTP 서버의 주소와 사용자 이름 및 암호가 포함됩니다.)

데스크톱에서 웹 호스트 공급자의 루트 웹 사이트 폴더로 다음 파일을 복사합니다. 웹 호스트 공급자의 웹 서버에 FTP를 설치하면 루트 웹 사이트 디렉터리에 있을 수 있습니다. 그러나 일부 웹 호스트 공급자에는 웹 사이트 파일의 루트 폴더 역할을 하는 또는 wwwroot 라는 www 하위 폴더가 있습니다. 마지막으로, 파일을 FTPing할 때 프로덕션 환경에서 해당 폴더 구조( Bin 폴더, 폴더, FictionImages 폴더 등)를 만들어야 할 수 있습니다.

  • ~/Default.aspx
  • ~/About.aspx
  • ~/Site.master
  • ~/Web.config
  • ~/Web.sitemap
  • 폴더의 Styles 전체 내용
  • 폴더의 Images 전체 내용(및 해당 하위 폴더) BookCovers
  • ~/Fiction/Default.aspx
  • ~/Fiction/Blaze.aspx
  • ~/Tech/Default.aspx
  • ~/Tech/CYOW.aspx
  • ~/Tech/TYASP35.aspx
  • ~/Bin/BookReviewsWAP.dll

그림 1은 필요한 파일이 복사된 후 FileZilla를 보여 줍니다. FileZilla는 왼쪽의 로컬 컴퓨터에 파일을 표시하고 오른쪽에는 원격 컴퓨터의 파일을 표시합니다. 그림 1에서 보여 주듯이 과 같은 About.aspx.csASP.NET 소스 코드 파일은 로컬 컴퓨터(개발 환경)에 있지만 명시적 컴파일을 사용할 때 코드 파일을 배포할 필요가 없으므로 웹 호스트 공급자(프로덕션 환경)에 복사되지 않았습니다.

참고

소스 코드 파일이 무시되므로 프로덕션 서버에 소스 코드 파일이 있으면 아무런 해가 되지 않습니다. ASP.NET 소스 코드 파일이 프로덕션 서버에 있는 경우에도 웹 사이트 방문자에게 액세스할 수 없도록 기본적으로 소스 코드 파일에 대한 HTTP 요청을 금지합니다. 즉, 사용자가 방문 http://www.yoursite.com/Default.aspx.cs 하려고 하면 이러한 유형의 파일( .cs 파일)이 금지되어 있음을 설명하는 오류 페이지가 표시됩니다.

일부 ASP 점 Net 소스 코드 파일이 원격 서버에 복사되지 않은 것을 보여 주는 FileZilla FTP 클라이언트의 스크린샷

그림 1: FTP 클라이언트를 사용하여 바탕 화면에서 웹 호스트 공급자의 웹 서버로 필요한 파일을 복사합니다(전체 크기 이미지를 보려면 클릭).

사이트를 배포한 후 잠시 시간을 내어 사이트를 테스트합니다. 도메인 이름을 구입하고 DNS 설정을 올바르게 구성한 경우 도메인 이름을 입력하여 사이트를 방문할 수 있습니다. 또는 웹 호스트 공급자가 계정에 대한 URL을 제공했어야 합니다. 이 URL은 계정 이름과 유사하게 표시됩니다. webhostprovider.com 또는 webhostprovider.com/accountname. 예를 들어 할인 ASP.NET 내 계정의 URL은 입니다 http://httpruntime.web703.discountasp.net.

그림 2는 배포된 책 리뷰 사이트를 보여줍니다. 할인 ASP에서 확인합니다. NET의 서버().http://httpruntime.web703.discountasp.net 이 시점에서 인터넷에 연결되어있는 사람은 내 웹 사이트를 볼 수 있습니다! 예상대로 사이트는 개발 환경에서 테스트할 때와 마찬가지로 모양과 동작을 수행합니다.

참고

애플리케이션을 볼 때 오류가 발생하면 잠시 시간을 내어 올바른 파일 집합을 배포했는지 확인합니다. 다음으로 오류 메시지를 검사 문제에 대한 단서를 표시할지 확인합니다. 그런 다음 웹 호스트 회사의 기술 지원팀으로 전환하거나 ASP.NET 포럼에서 해당 포럼에 질문을 게시할 수 있습니다.

이제 인터넷 연결이 있는 모든 사용자가 책 리뷰 사이트에 액세스할 수 있습니다.

그림 2: 이제 인터넷 연결이 있는 모든 사용자가 책 리뷰 사이트에 액세스할 수 있습니다(전체 크기 이미지를 보려면 클릭).

Book Review 웹 사이트 프로젝트 배포

BookReviewsWSP 웹 사이트 프로젝트와 같은 자동 컴파일을 사용하는 ASP.NET 애플리케이션을 배포하는 경우 폴더에 컴파일된 어셈블리가 Bin 없습니다. 따라서 웹 애플리케이션의 소스 코드 파일을 프로덕션 환경에 배포해야 합니다. 이 프로세스를 살펴보겠습니다.

웹 애플리케이션 프로젝트와 마찬가지로 먼저 애플리케이션을 배포하기 전에 빌드하는 것이 현명합니다. 웹 사이트 프로젝트를 빌드해도 어셈블리가 만들어지지는 않지만 페이지의 컴파일 시간 오류에 대한 검사. 사이트에 방문자가 당신을 위해 그들을 검색하는 것보다 지금 이러한 오류를 찾는 것이 좋습니다!

프로젝트를 성공적으로 빌드한 후에는 FTP 클라이언트를 사용하여 다음 파일을 웹 호스트 공급자의 루트 웹 사이트 폴더에 복사합니다. 프로덕션 환경에서 해당 폴더 구조를 만들어야 할 수도 있습니다.

참고

BookReviewsWAP 프로젝트를 이미 배포했지만 BookReviewsWSP 프로젝트를 배포하려는 경우 먼저 BookReviewsWAP를 배포할 때 업로드된 웹 서버의 모든 파일을 삭제한 다음 BookReviewsWSP용 파일을 배포합니다.

  • ~/Default.aspx
  • ~/Default.aspx.cs
  • ~/About.aspx
  • ~/About.aspx.cs
  • ~/Site.master
  • ~/Site.master.cs
  • ~/Web.config
  • ~/Web.sitemap
  • 폴더의 Styles 전체 내용
  • 폴더의 Images 전체 내용(및 해당 하위 폴더) BookCovers
  • ~/App_Code/BasePage.cs
  • ~/Fiction/Default.aspx
  • ~/Fiction/Default.aspx.cs
  • ~/Fiction/Blaze.aspx
  • ~/Fiction/Blaze.aspx.cs
  • ~/Tech/Default.aspx
  • ~/Tech/Default.aspx.cs
  • ~/Tech/CYOW.aspx
  • ~/Tech/CYOW.aspx.cs
  • ~/Tech/TYASP35.aspx
  • ~/Tech/TYASP35.aspx.cs

그림 3은 필요한 파일을 복사한 후 FileZilla를 보여 줍니다. 보듯이 과 같은 About.aspx.csASP.NET 소스 코드 파일은 자동 컴파일을 사용할 때 코드 파일을 배포해야 하므로 로컬 컴퓨터(개발 환경)와 웹 호스트 공급자(프로덕션 환경) 모두에 있습니다.

ASP 점 Net 소스 코드 파일이 서버에 성공적으로 업로드되었음을 보여주는 FileZilla FTP 클라이언트 창의 스크린샷

그림 3: FTP 클라이언트를 사용하여 바탕 화면에서 웹 호스트 공급자의 웹 서버로 필요한 파일을 복사합니다(전체 크기 이미지를 보려면 클릭).

사용자 환경은 애플리케이션의 컴파일 모델의 영향을 받지 않습니다. 동일한 ASP.NET 페이지에 액세스할 수 있으며 웹 애플리케이션 프로젝트 모델 또는 웹 사이트 프로젝트 모델을 사용하여 웹 사이트를 만들었는지 여부에 관계없이 동일한 모양과 동작을 수행합니다.

프로덕션 환경에서 웹 애플리케이션 업데이트

웹 애플리케이션 개발 및 배포는 일회성 프로세스가 아닙니다. 예를 들어 Book Review 웹 사이트를 만들 때 다양한 페이지를 빌드하고 개인용 컴퓨터(개발 환경)에 함께 제공되는 코드를 작성했습니다. 안정적인 상태에 도달한 후 다른 사용자가 사이트를 방문하여 내 리뷰를 읽을 수 있도록 애플리케이션을 배포했습니다. 그러나 배포는 이 사이트의 개발 종료를 표시하지 않습니다. 더 많은 책 리뷰를 추가하거나 방문자가 책을 평가하거나 자신의 의견을 남길 수 있도록 하는 것과 같은 새로운 기능을 구현할 수 있습니다. 이러한 향상된 기능은 개발 환경에서 개발되며, 완료되면 배포해야 합니다. 따라서 개발 및 배포는 순환적입니다. 애플리케이션을 개발한 다음 배포합니다. 사이트가 라이브 상태이고 프로덕션 상태인 동안 새 기능이 추가되고 시간이 지남에 따라 버그가 수정되므로 애플리케이션을 다시 배포해야 합니다. 등등.

예상대로 웹 애플리케이션을 다시 배포할 때는 새 파일과 변경된 파일만 복사하면 됩니다. 변경되지 않은 페이지 또는 서버 또는 클라이언트 쪽 지원 파일을 다시 배포할 필요가 없습니다(아무런 해가 없더라도).

참고

명시적 컴파일을 사용할 때 유의해야 할 한 가지 사항은 프로젝트에 새 ASP.NET 페이지를 추가하거나 코드 관련 변경 작업을 수행할 때마다 폴더의 Bin 어셈블리를 업데이트하는 프로젝트를 다시 빌드해야 한다는 것입니다. 따라서 프로덕션에서 웹 애플리케이션을 업데이트할 때(다른 새 콘텐츠 및 업데이트된 콘텐츠와 함께) 이 업데이트된 어셈블리를 프로덕션에 복사해야 합니다.

또한 디렉터리의 또는 파일에 Bin 대한 변경 내용 Web.config 이 웹 사이트의 애플리케이션 풀을 중지하고 다시 시작한다는 것을 이해합니다. 세션 상태가 모드(기본값)를 사용하여 InProc 저장되면 이러한 키 파일이 수정될 때마다 사이트의 방문자가 세션 상태를 잃게 됩니다. 이 문제를 방지하려면 또는 SQLServer 모드를 사용하여 StateServer 세션을 저장하는 것이 좋습니다. 이 항목에 대한 자세한 내용은 세션 상태 모드를 참조하세요.

마지막으로, 애플리케이션을 다시 배포하는 데는 프로덕션 환경에 복사해야 하는 파일의 수와 크기에 따라 몇 초에서 몇 분 정도 걸릴 수 있습니다. 이 시간 동안 사이트를 방문하는 사용자에게 오류 또는 이상한 동작이 발생할 수 있습니다. 사용자에게 사이트가 유지 관리(또는 무엇이든)를 위해 중단되고 곧 백업될 것임을 설명하는 애플리케이션의 루트 디렉터리에 라는 App_Offline.htm 페이지를 추가하여 전체 애플리케이션을 "해제"할 수 있습니다. App_Offline.htm 파일이 있으면 ASP.NET 런타임은 들어오는 모든 요청을 해당 페이지로 리디렉션합니다.

요약

웹 애플리케이션을 배포하려면 개발 환경에서 프로덕션 환경으로 필요한 파일을 복사해야 합니다. 네트워크를 통해 파일을 전송하는 가장 일반적인 방법은 FTP(파일 전송 프로토콜)이며 대부분의 웹 호스트 공급자는 해당 웹 서버에 대한 FTP 액세스를 지원합니다. 이 자습서에서는 FTP 클라이언트를 사용하여 필요한 파일을 웹 서버에 배포하는 방법을 알아보았습니다. 일단 배포되면 인터넷에 연결된 모든 사람이 웹 사이트를 방문 할 수 있습니다!

행복한 프로그래밍!

추가 정보

이 자습서에서 설명하는 topics 대한 자세한 내용은 다음 리소스를 참조하세요.