it-gundan.com

Linux 기반 웹 서버에 대한 코드 배포를 관리하는 방법을 추천 할 수 있습니까?

나는 항상 매우 간단한 bash 스크립트를 사용하여 코드를 배포했습니다. Subversion을 Mercurial로 옮기는 것이 아니라 실제로 개정 관리 소프트웨어가 배포에 중요하다고 생각하지 않습니다.

이 작업을 수행하는 더 좋은 방법은 무엇입니까?

#!/bin/sh
date=`date +%Y%m%d_%H%M%S`
tar -zcvf app-dir-$date.tar.gz app/dir 
tar -zcvf app-templates-$date.tar.gz app/templates
tar -zcvf app-media-$date.tar.gz app/media
svn export http://example.com/somepath/trunk hh/ --force
7
citadelgrad

정적 HTML 페이지를 포함하여 모든 것을 관리하기 위해 머큐리얼 을 사용합니다. 인생을 정말, 정말 쉽게 만들어줍니다.

장점은 다음과 같습니다

  • 모든 특전 버전 관리 제공 (롤백, 마일스톤 태그 등)
  • 서둘러 사이트를 복제 할 수 있음
  • 당신은 항상 작동 로컬 백업/복사가
  • 서버 내에서 제자리에서 변경하는 경향이있는 경우 쉽게 동기화
  • 대부분의 공유 호스트 (호스트를 다루는 경우)는 설치에 신경 쓰지 않습니다

면책 조항, 나는 튜토리얼을 썼습니다. 예, 사용하는 VCS의 종류는 어느 정도 중요합니다. 예를 들어, 나는이 시나리오에서 로컬로 커밋 할 수 없으며 큰 푸시/업데이트를 만들 수없는 것을 사용하지 않을 것입니다. 이로 인해 잠재적으로 문제가 많은 변경 사항을 하나의 약속으로 묶을 수 있습니다.

나는 Could Subversion으로 할 수 있으며 SVN을 전혀 두드리지 않습니다. 나는 머큐리얼이 해결하려는 문제에 대해 훨씬 더 나은 도구라고 생각합니다.

다른 선택이 없다면 도구를 '해결'할 필요가 없다고 생각합니다. 그렇게하는 것은 그것들을 갖는 목적을 무너 뜨리고, 선택의 여지가 있습니다 :)

5
Tim Post

다른 답변의 훌륭한 제안 외에도 원자 업데이트를 수행하는 것이 중요한지 고려할 수 있습니다.

내 FreeBSD 서버에서는 두 가지 메커니즘을 통해이 작업을 수행합니다.

  • 모든 정적 리소스의 버전을 관리합니다. (예 : http://static.example.com/images/logo.1.png 또는 http://static.example.com/style/main.3.css). 이렇게하면 사용자가 이전 페이지에서 새 파일을 볼까 걱정할 필요없이 동적 사이트를 업데이트하기 전에 직접 정적 사이트를 svn update 할 수 있습니다.

  • 전체 동적 웹 사이트 버전 관리. 필자의 경우 문서 루트가 심볼릭 링크를 가리키고 있습니다. 저의 전략은 새로운 버전의 프로덕션을 제자리에두고 한 번의 명령으로 실행하십시오. .지. 이 같은:

    cp -Rp www.site1.com.1 www.site1.com.2 (또는 svn checkout)

    svn update site1.com.2 (먼저 svn switch가 필요할 수 있음)

    ln -sf site1.com.2 www.site1.com (원자 적으로 변경 사항을 프로덕션으로 이동)

이렇게하면 내 사용자 중 절반이 구운 페이지가 표시되지 않습니다. 이전 버전이 아직 캐시에 있으면 새 버전을 보게됩니다.

이 전략은 사용자가 업로드 한 콘텐츠를 동적 사이트와 혼합하지 않는 경우에만 효과적입니다.

1
JasonBirch

개미의 scp taskmodified selector 와 함께 사용합니다. 즉, 이전 업로드 이후 변경된 파일 만 업데이트한다는 의미입니다. 불행히도 수정 된 선택기는 팀 구성원과 공유하지 않고 개인적인 용도로만 설계된 것으로 보입니다. cache.properties 파일에는 사용자 작업 디렉토리의 경로 이름이 있습니다. cache.properties 파일을 개발자가 공유 할 수있는 형식으로 마사지 한 다음 개미가 필요로하는 형식으로 다시 마사지하기 위해 많은 개미 대상을 작성했습니다. 형식은 Windows 환경과 GNU/Linux 환경에 따라 다릅니다.

0
Don Kirkby

업데이트를 진행하기 전에 사이트를 백업 할 필요가없는 버전 관리를 사용하는 것이 중요하지 않습니까?

올바르게 완료되면 svn update (또는 이와 동등한 것)이면 충분하고, 실수 한 경우 이전 커밋으로 롤백합니까? 그것이 우리가 어쨌든하는 일입니다. 준비 서버 svn update 모든 변경 사항을 커밋합니다. 모두 정상이면 라이브 서버 svn update입니다.

0
Mark Henderson