2011-10-08 2 views
10

저는 다단계 서버 설치가 필요한 클라이언트, 즉 개발 서버, 스테이지 서버 및 프로덕션/라이브 서버로 작업하고 있습니다.장고 및 다단계 서버

스테이지는 개발 서버에서 개발 한 모든 새로운 기능을 테스트하고이를 최종 라이브 서버로 가져올 수있는만큼 안정적이어야합니다.

버전 관리에는 git 및 github을 사용합니다. 나는 우분투 서버 에디션을 OS로 사용한다.

문제는 내가 다단계 서버 계획에서 일한 적이 없다는 것입니다. 그러한 설정을 처리하는 적절한 방법, 특히 스테이지로 개발 된 다음 라이브 서버로 배포되는 새로운 기능을 배포하고 이동하는 데 어떤 소프트웨어/프로젝트를 권장 하시겠습니까?

+0

투표를 완료 한 사람들은 소프트웨어 개발과 관련이없는 배포와 관련된 도구 및 프로세스는 어떻게 사용합니까? –

+0

또한 배포 및 관련 도구가 소프트웨어 수명주기의 필수적인 부분이라는 것을 알게되었습니다. – Hellnar

+0

Josh : 불행히도이 질문에는 단 하나의 좋은 대답이 없습니다 (열어야 함). 이것이 사람들이 투표를 마감하는 이유입니다. 이런 종류의 질문은 어떤 종류의 포럼에서는 더 좋지만 stackoverflow에서는 그렇지 않습니다. –

답변

7

우리는 환경에서 환경으로 코드를 이동하는 두 가지 다른 방법을 사용합니다. 첫 번째 방법은 우리의 소스 제어 시스템 (우리의 경우에는 수은 같은)을 사용하여 브랜치와 트리거를 사용하는 것이다. 다른 하나는 여러 서버에서 쉘 코드를 실행하기위한 파이썬 라이브러리 인 fabric을 사용하는 것입니다.

소스 컨트롤을 사용하면 productiondevelopmentstaging과 같은 몇 가지 주요 분기를 가질 수 있습니다. 새 기능을 준비로 옮기고 싶다고합시다. 나는 수은의 관점에서 설명 하겠지만 명령을 git에 이식 할 수 있으며 괜찮을 것이다.

hg update staging 
hg merge my-new-feature 
hg commit -m 'my-new-feature > staging' 
hg push 

그러면 원격 소스 제어 서버가 트리거를 사용하여 모든 웹 서버에 푸시됩니다. 그러면 각 웹 서버의 트리거가 업데이트를 수행하고 웹 서버를 다시로드합니다.

스테이징에서 프로덕션으로 전환하는 것도 쉽습니다.

배포 방법이 가장 좋지 않으며 롤백이 아주 어렵습니다. 그러나 설정이 빠르고 쉽고 각 변경 사항을 각 서버에 수동으로 배포하는 것보다 훨씬 낫습니다.

상당히 복잡해 질 수 있으므로 직물을 통과하지 않겠습니다. 무엇이 가능한지 이해하려면 their documentation을 읽어야합니다. 직물과 django에 대한 튜토리얼이 많이 있습니다. 나는 당신에게 훨씬 더 많은 통제력을 제공하고, 단지 파이썬을 작성하는 것과 관련하여 패브릭 경로를 강력하게 추천한다.

2

Gondor.io 또는 Ep.io를 사용해보십시오. VCS에서 매우 유사한 코드를 가진 두 개의 인스턴스가 있고 데이터를 앞뒤로 이동하는 것이 매우 쉽습니다 (이 분야에서 특히 뛰어납니다). (초대장이 필요하다면 IRC에 요청하십시오.하지만 지금 모두 열려 있습니다)

4

nice branching model for git (예 : github 자체에서 사용하기 때문에)이 있습니다. 이 분기 모델은 git-flow을 사용하여 쉽게 적용 할 수 있습니다.이 모델은 git 확장으로이 모델에 맞는 몇 가지 고수준 저장소 작업을 적용 할 수 있습니다. 이것에 대해서도 nice blogpost이 있습니다.

배포 워크 플로에서 정확히 자동화 할 항목을 모르지만 위에서 언급 한 모델을 적용하면 대부분의 올바른 버전 처리가 git에 의해 수행됩니다.

추가로 자동 ​​처리를 추가하려면 fabric은 간단하지만 훌륭한 도구이며 many tutorials about its usage (또는 git과 함께 사용)을 찾을 수 있습니다.

virtualenv and pip을 사용하여 파이썬 의존성을 처리하는 것은 확실히 좋은 방법입니다.

좀 더 복잡한 것이 필요한 경우 하나의 머신에서 하나 이상의 django 인스턴스를 처리하고 시스템 전체 종속성 등을 처리하기위한 체크 아웃 puppet 또는 chef.