2010-06-18 8 views
4

저는 현재 5 대의 서버에 배포하고있는 python 프로그램, 클래스 및 패키지의 디렉토리가 있습니다. 그것은 계속해서 더 많은 서버를 추가하고있는 중이며 지금은 로컬 박스에서 서버로 기본적인 rsync를 수행하고있는 것 같습니다.서버간에 코드를 배포하는 가장 좋은 방법은 무엇입니까?

n 개의 서버에 코드를 배포하는 것이 더 나은 방법은 무엇입니까?

감사

답변

1

첫째, 확인 (당신이 이미 일을하지 않는 경우) 대신 복사 할 필요없이 저장소에서 코드의 새 버전을 확인할 수 있도록 개정 통제하에있는 모든 코드를 유지해야 워크 스테이션의 서버로 전송하십시오.

버전 관리를 사용하면 Capistrano과 같은 도구를 사용하여 각 시스템에 로그인하고 수동으로 체크 아웃 할 필요없이 각 서버의 코드를 자동으로 체크 아웃 할 수 있습니다. 모든 서버에 새 버전을 배포 이러한 설정으로

는 로컬 컴퓨터에서

$ cap deploy 

을 실행하는 것처럼 간단 할 수있다.

4

Mercurialfabric을 사용하여 모든 소스 코드를 배포합니다. 패브릭은 파이썬으로 작성 되었기 때문에 쉽게 시작할 수 있습니다. 프로덕션 서비스를 업데이트하는 것은 fab production deploy과 같이 간단합니다. 어떤 일이 이렇게 끝나는가 :

  1. 모든 서비스를 종료하고 "업그레이드 진행 중"페이지를 넣습니다.
  2. 소스 코드 디렉토리를 업데이트하십시오.
  3. 모든 마이그레이션을 실행하십시오.
  4. 모든 서비스를 시작하십시오.

이 모든 것이 자동으로 일어나는 것을 보면 정말 멋지 네요.

+0

'fabric' - 저는이 모든 성인 생활을 찾고있었습니다. –

0

또한 버전 제어를 사용하는 경우 호스트 시스템에서 사용하는 패키지 관리 (예 : RPM 또는 dpkg)를 사용하여 소스를 패키지화 한 다음 사용자 정의를 사용하도록 시스템을 설정하는 방법도 있습니다 repository 그러면 "apt-get upgrade"또는 "yum update"가 시스템의 소프트웨어를 업데이트합니다. 그런 다음 "mussh"와 같은 것을 사용하여 모든 도구에서 stop/update/start 명령을 실행할 수 있습니다.

이상적으로는 테스트 저장소에 먼저 푸시하고 준비 시스템에 설치 프로그램을 설치하고 프로덕션 리포지토리로 테스트를 마친 후에는 프로덕션 리포지토리로 옮길 수 있습니다.

일반적으로 패브릭 또는 버전 컨트롤을 사용하는 권장 사항과 비슷하지만 일부 사용자에게는 더 좋은 대안 일 수 있습니다.

패키지 사용의 단점은 어쨌든 버전 관리 기능을 사용하고 있으며 이러한 패키지의 버전 번호를 관리해야한다는 것입니다. 내 버전 제어 내에서 수정 태그를 사용하여이 작업을 수행하므로 대상 시스템에서 "svn 업데이트"또는 이와 유사한 작업을 쉽게 수행 할 수 있습니다.

어느 경우이든 한 버전에서 다음 버전으로의 마이그레이션을 고려해야 할 수도 있습니다. 사용자가 다른 요소에 대한 참조를 포함하는 페이지를로드하면 업데이트를 수행하고 해당 요소가 사라집니다. 어떻게해야합니까?배포 스크립팅 또는 새 페이지로 처음 버전을 푸는 코드에서 기존의 참조 된 요소를 유지하고 배포 한 다음 참조 된 요소를 제거한 다음 나중에 배포 할 수 있습니다.

이렇게하면 사용자가 페이지에서 깨진 요소를 볼 수 없습니다.

관련 문제