연습: XCOPY를 사용하여 ASP.NET 웹 응용 프로그램 배포
업데이트: 2007년 11월
ASP.NET 응용 프로그램 배포는 아주 간단합니다. 개발 컴퓨터에서 만든 응용 프로그램 파일을 응용 프로그램을 호스팅할 프로덕션 웹 서버에 복사해야 합니다. 파일을 한 곳에서 다른 곳으로 복사할 때는 XCOPY 명령줄 도구나 선호하는 FTP 응용 프로그램을 사용할 수 있습니다. 일반적인 배포에 대한 자세한 내용은 .NET Framework 배포 기본 사항을 참조하십시오.
참고: |
---|
모든 버전의 .NET Framework에서 지원되는 XCOPY 명령줄 도구를 사용하는 대신 %SystemRoot%\Microsoft.NET\Framework\version 2 or later\Aspnet_compiler.exe에 있는 새 .NET Framework 2.0 도구를 사용하여 웹 응용 프로그램을 컴파일하고 배포할 수 있습니다. 자세한 내용은 ASP.NET 컴파일 도구(Aspnet_compiler.exe)를 참조하십시오. |
웹 응용 프로그램 간에 공유할 어셈블리(예: 사용자 지정 ASP.NET 서버 컨트롤이 포함된 어셈블리)는 원격 서버의 GAC(전역 어셈블리 캐시)에 배포해야 합니다.
로컬 서버의 전역 어셈블리 캐시에 등록된 사용자 지정 구성 요소에 대한 참조를 포함하는 응용 프로그램을 배포하는 경우 이 구성 요소는 응용 프로그램과 함께 원격 서버에 배포되지 않습니다. 원격 서버의 전역 어셈블리 캐시에 구성 요소를 설치하거나 사용자 지정 구성 요소를 로컬 웹 응용 프로그램의 Bin 폴더에 복사한 후 배포해야 합니다.
자세한 내용은 전역 어셈블리 캐시를 참조하십시오. 어셈블리에 대한 자세한 내용은 어셈블리를 사용한 프로그래밍을 참조하십시오.
Visual Web Developer와 같은 일부 개발 도구에 포함된 도구를 사용하면 응용 프로그램을 쉽게 배포할 수 있습니다.
사전 요구 사항
이 연습을 완료하려면 다음과 같은 요건을 갖추어야 합니다.
.NET Framework가 있어야 합니다.
기존 ASP.NET 웹 사이트가 있어야 합니다. 사이트가 이미 구성되어 있으면 이 연습의 시작 지점으로 해당 사이트를 사용할 수 있습니다. 사이트가 없는 경우에는 방법: IIS 5.0 및 6.0에서 가상 디렉터리 만들기 및 구성에서 가상 디렉터리나 사이트를 만드는 방법에 대한 자세한 내용을 확인하십시오.
파일 경로 또는 UNC 경로를 사용하여 액세스할 수 있는 대상이 있어야 합니다.
참고: |
---|
이 연습에서는 Visual Web Developer 또는 Visual Studio와 같은 디자이너를 사용하지 않는 것으로 가정합니다. |
준비
대규모 웹 사이트를 배포 중인 경우 파일을 복사하는 동안 대상 웹 사이트를 오프라인으로 설정하려면 아래의 절차를 사용하십시오.
배포하기 전에 웹 응용 프로그램을 오프라인으로 설정하려면
App_offline.htm이라는 파일을 만들어 대상 웹 사이트의 루트에 넣습니다.
App_offline.htm 파일에 메시지를 추가하여 사이트가 업데이트되고 있음을 클라이언트에 알려 줍니다.
App_offline.htm 파일이 있는 동안에는 웹 사이트에 대한 모든 요청이 이 파일로 리디렉션됩니다.
중요: 파일 복사가 끝나면 App_offline.htm 파일을 제거해야 합니다.
일부 파일 형식 및 폴더가 변경되면 응용 프로그램 도메인이 다시 시작됩니다. 응용 프로그램 도메인을 다시 시작하기 전에 다른 파일 변경 알림을 받을 때까지 응용 프로그램이 기다리는 시간(초)을 구성할 수 있습니다.
응용 프로그램 도메인의 다시 시작 횟수를 최소화하려면
웹 응용 프로그램의 Web.config 파일을 엽니다. Web.config 파일이 없는 경우에는 다음 코드를 사용하여 새로 만들 수 있습니다.
<?xml version="1.0"?> <configuration xmlns="https://schemas.microsoft.com/.NetConfiguration/v2.0"> <system.web> </system.web> </configuration>
자세한 내용은 ASP.NET 구성 파일을 참조하십시오.
Web.config 파일에 httpRuntime 요소(ASP.NET 설정 스키마) 요소를 추가하고 waitChangeNotification 특성의 값을 두 개의 파일 복사에 대한 변경 알림 업데이트 간격을 초과하는 시간(초)으로 설정합니다. 예를 들어 httpRuntime 요소는 다음 코드와 같습니다.
<?xml version="1.0"?> <configuration xmlns="https://schemas.microsoft.com/.NetConfiguration/v2.0"> <system.web> <httpRuntime waitChangeNotification="5" /> </system.web> </configuration>
httpRuntime 요소에 maxWaitChangeNotification 특성을 추가하고 이 값을 첫 번째 파일에 대한 변경 알림을 받은 이후에 응용 프로그램 도메인이 다시 시작될 때까지 기다리는 최대 시간(초)으로 설정합니다. 이때 모든 파일 복사 프로세스를 완료하는 데 필요한 시간을 초과하는 값으로 설정하십시오. 파일 변경 알림은 이 특성과 waitChangeNotification 특성의 값을 기준으로 결합됩니다. 예를 들어 httpRuntime 요소는 다음 코드와 같습니다.
<?xml version="1.0"?> <configuration xmlns="https://schemas.microsoft.com/.NetConfiguration/v2.0"> <system.web> <httpRuntime waitChangeNotification="5" maxWaitChangeNotification="10" /> </system.web> </configuration>
명령줄에서 XCOPY를 사용하여 ASP.NET 웹 응용 프로그램을 배포하려면
시작을 클릭한 다음 실행을 클릭합니다.
실행 대화 상자의 열기 상자에 cmd를 입력한 다음 확인을 클릭합니다.
명령 프롬프트에 다음 명령을 입력합니다.
xcopy /I /S<source path> <destination path>
이 명령에서 <source path>는 웹 응용 프로그램의 전체 경로이고 <destination path>는 응용 프로그램이 배포되는 디렉터리의 전체 경로입니다.
참고: XCOPY 도구에는 실제 디렉터리 이름을 사용해야 합니다. 가상 디렉터리 이름은 사용할 수 없습니다.
/S 매개 변수는 모든 하위 디렉터리 및 해당 디렉터리에 포함된 파일을 복사합니다.
/I 매개 변수는 디렉터리가 복사되고 있음을 나타냅니다. 대상 폴더가 없는 경우에는 XCOPY에서 새로 만듭니다.
다음 예제 명령을 실행하면 c:\inetpub\wwwroot\devapp디렉터리의 모든 파일이 d:\publicsites\liveapp 디렉터리에 복사됩니다.
Xcopy /I /Sc:\inetpub\wwwroot\devapp d:\publicsites\liveapp
"filename을(를) 덮어쓰시겠습니까(Yes/No/All)?"와 같은 질문에 사용자가 대답을 입력할 수 있도록 명령이 일시 중지될 수 있습니다.
XCOPY /EXCLUDE 옵션을 사용하면 하위 디렉터리, 특정 확장명을 가진 파일 또는 특정 파일 이름을 제외하고 복사할 수 있습니다. 매개 변수에 대한 자세한 내용을 보려면 시작 메뉴의 도움말 및 지원 창에서 Xcopy를 참조하거나 명령줄에서 xcopy /?를 입력하십시오.
명령줄에서 ASP.NET 웹 응용 프로그램의 개별 파일을 배포하거나 업데이트하려면
시작을 클릭한 다음 실행을 클릭합니다.
실행 대화 상자의 열기 상자에 cmd를 입력한 다음 확인을 클릭합니다.
명령 프롬프트에 다음 명령을 입력합니다.
xcopy <source path> <destination path>
이 명령에서 <source path>는 복사할 소스 파일의 전체 경로이고 <destination path>는 복사된 파일을 넣을 디렉터리의 전체 경로입니다.
다음 예제 명령은 특정 드라이브의 \Bin 디렉터리에 포함된 단일 DLL을 다른 드라이브의 \Bin 디렉터리에 복사합니다.
Xcopy c:\inetpub\wwwroot\devapp\bin\sampleAssembly.dll d:\publicsites\liveapp\bin
다음 예제 명령은 특정 드라이브의 Bin 디렉터리에 포함된 모든 DLL 파일을 다른 드라이브의 Bin 디렉터리에 복사합니다.
Xcopy c:\inetpub\wwwroot\devapp\bin\*.dll d:\publicsites\liveapp\bin
"filename을(를) 덮어쓰시겠습니까(Yes/No/All)?"와 같은 질문에 사용자가 대답을 입력할 수 있도록 명령이 일시 중지될 수 있습니다.
참고 항목
작업
연습: IIS 6.0을 사용하여 ASP.NET 웹 응용 프로그램 루트 디렉터리 만들기