프로덕션 IIS 웹 사이트 소포를 어떻게 수행합니까?


15

따라서 이것이 스택 오버플로인지 또는 서버 오류 질문인지 확실하지 않습니다. 프로덕션 환경에 배포하려는 .NET 웹 사이트가있는 경우 가장 좋은 방법은 무엇입니까? MSI로 설치하고 설치해야합니까? nant를 사용하여 필요한 파일을 올리십시오. Beyond Compare를 사용하여 파일을 FTP하면됩니까?

프로덕션 코드를 어떻게 배포합니까? 이것은 내가보고있는 Windows 전용 사례입니다.

답변:


15

IIS는 xcopy 배포를 지원하므로 특별한 요구 사항이 없으면 파일을 복사하기 만하면됩니다.

이를 수행하는 한 가지 방법은 ROBOCOPY 를 사용 하여 새 파일을 서버에 복사 하는 간단한 스크립트입니다 .

사이트가 크고 이것이 너무 오래 걸리면 버전 관리 시스템을 사용하십시오. 버전 관리 시스템의 구성 파일이 대중에게 제공되지 않도록주의해야하지만 Mercurial 은이 목적을 좋아 합니다. 배포는 단순히 변경 사항을 커밋 한 다음 서버에서 최신 버전을 확인하는 것입니다. 효율적일뿐만 아니라 최신 및 최고 버전에 showtopper 버그가있는 경우 빠른 롤백 (마지막으로 좋은 버전에 태그를 지정한 경우)이 가능합니다.

가동 중지 시간을 최소화하기 위해 스크립트가 파일을 새 디렉토리에 복사 한 다음 신속하게 디렉토리 이름을 바꾸거나 IIS가 새 디렉토리를 가리키는 위치를 변경하도록 할 수 있습니다.


1
버전 관리 시스템은 매력적이지만 컴파일이 필요한 웹 사이트의 경우 제대로 작동하지 않을 수 있습니다. 컴파일 된 버전이 물론 버전 관리하에 있지 않는 한.
Jonathon Watney

1
나는 소스 제어 시스템을 생산에 내놓을 생각을 한 적이 없다. 재미있는 추가 비트는 수많은 추가 zip 파일을 유지해야합니다.
JoshBerke

나는 Subversion으로 항상 이것을합니다. Apache에서는 mod_rewrite를 사용하여 사용자가 .svn 디렉토리에 액세스 할 수 없도록합니다. 배포를 위해 버전 제어를 사용하는 것이 확실합니다.
Luke

13

Microsoft 의 웹 배포 도구 사용을 고려 하십시오. 웹 응용 프로그램 및 해당 웹 응용 프로그램에 대한 업데이트를 프로덕션 IIS 6 및 7 웹 서버에 배포 할 수 있도록 특별히 설계되었으며 IMHO MSI (Windows Installer)보다 작업을 더 잘 수행합니다.

일반적으로 어딘가에 "골드 마스터"사이트를 설정 한 다음 툴에서 변경 사항을 압축하도록 지시하여 사용합니다. 그런 다음 배포 할 대상 서버를보고 골드 마스터처럼 보이도록 변경합니다 (이는 이후 업데이트에 유용함). 하나 이상의 웹 서버 (예 : 팜)에 배포하고 파일 이상의 배포를 지원하는 경우 특히 유용합니다 (레지스트리 변경, 인증서 배포, SQL 데이터베이스 등을 처리 할 수도 있음).


+ 무한대. 이 도구는 생명의 은인이며 전체 부서 (라텍스)가보다 흥미로운 문제를 처리 할 수 ​​있도록 해줍니다.
포트만

4

지속적인 통합 서버가 소스 제어 시스템에서 변경 사항을 픽업하도록 제안함으로써 Joel의 답변을 더 얻고 싶습니다. 그런 다음 프로젝트를 빌드합니다. 그런 다음 빌드 결과를 새 폴더에 xcopy하십시오. 그런 다음 몇 가지 빠른 구성 변경 (web.config 및 app.config)을 수행 할 수 있습니다. Voila, Xcopy를위한 준비!

CruiseControl.NET을 확인하십시오


3

이전 고용주에서 내가 한 일은 기본적으로 많은 다운 타임을 허용 할 수없는 경매 / 전자 상거래 사이트였습니다.

  • 빌드 / 버전의 압축 빌드 버전을 빌드 서버에 배치하십시오.
  • 프로덕션 데이터베이스의 사본이 있고 프로덕션 소프트웨어와 동일한 버전의 소프트웨어가있는 스테이징 서버에서 테스트하십시오. 모든 것이 원활하게 진행되었는지 테스트하십시오. 스테이징 서버 배치를 다시 시작하지 않으면 (먼저 백업을 복원하십시오).
  • 모든 것이 제대로 된 경우 : 빌드 및 데이터베이스 업그레이드 스크립트를 프로덕션 서버에 로컬 폴더로 복사하십시오. 데이터베이스와 ASP.NET 파일의 특정 백업을 수행하십시오 (아직 문제가 발생하는 경우). 업그레이드 스크립트와 데이터베이스 파일 복사를 시작하기 위해 Enter를 클릭하기 만하면됩니다. 스크립트를 작성할 수 있습니다. 그런 다음 모든 것을 시작하십시오. 이것은 일반적으로 몇 초 만에 발생하며 사용자는 다운 타임이 있음을 많이 알지 못합니다.

웹 개발자로서해야 할 일이 많이 있습니다. 그러나 이것은 내 작업에서 가장 중요한 부분이었습니다.


1

오 jeeez, 직장에서 우리는 전체 팀이 있습니다. 여기에는 서버를 클러스터 / 팜에서 꺼내고 파일을 게시하고 NUnit을 실행 한 후 다시 클러스터 / 팜에 추가하는 사내 도구가 있습니다. 16 대의 서버 각각에 대해이 작업을 수행합니다. 몇 시간이 걸립니다. 우리 중 나머지는 "접근 둘러보기"조차하지 않습니다.

개인 프로젝트의 경우 VS2005에서 웹 서버로 직접 게시합니다. 킨다는 보안이 덜 엄격합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.