2009-03-20 5 views
2

현재 내 업무 흐름은 다음과 같다 :모범 사례는

을 로컬로 내가 일하고 각 웹 사이트에 대한 자식의 repo를 유지 기계에 시간이 나는 폴더를 압축하고 뭔가를 게시 할 때 ssh를 통해이 단일 파일을 프로덕션 서버에 업로드 한 다음 압축을 풀고 변경 사항을 테스트하여 라이브 폴더의 변경 사항을 저장하고 .git 폴더를 제거합니다.

라이브 서버에서 git repo를 사용하는 것이 좋은 아이디어인지 궁금 해서요. 처음에는 변경된 것으로 보이지만 변경 사항이 프로덕션 서버에서 동일하게 보이지 않으면 문제가 될 수 있습니다. 로컬 개발 컴퓨터 ... 이것은 화재를 시작할 수 있습니다 ... 프로덕션 서버의 일부 폴더에 베어 레포를 만든 다음 공용 폴더에서 복제하여 로컬 컴퓨터의 업데이트를 베어 레포로 밀어 넣고 프로덕션 서버의 공용 폴더에 노출 된 사람 ... plese가 일부 피드백을 제공 할 수 있습니다.

나중에 내가 카피 스트라 노 http://capify.org에 대해 읽어하지만 난 웹 사이트 배포/업데이트를 수행하는 가장 좋은 방법/방법이 무엇인지 경험에서이 소프트웨어/w 경험 ...

이 없다?

미리 감사드립니다.

답변

0

나는 서버에 리포지토리 복사본이 있다고 생각하지 않았습니다. 그것을 읽은 후에, 나는 그것이 멋질 것 같았다고 생각했다. 그러나 테스트없이 실제 환경에서 파일을 직접 업데이트하는 것은 좋은 생각이 아니다.

일치하는 보조 환경을 항상 (웹 서버 + DB 버전이있는 경우)으로 업데이트하고 테스트해야합니다. 모든 것이 잘되면 라이브 사이트를 유지 관리하고 파일을 업데이트 한 다음 다시 라이브로 이동하십시오.

그래서 라이브 사이트에 리포지토리의 복사본을 만들지는 않을 것입니다. 그러나 테스트 환경에서 그렇게 할 수 있습니다. SSH + 압축 시간을 절약 할 수있을뿐 아니라 테스트 할 특정 개정을 체크 아웃 할 수 있습니다.

+0

실제로 실제로 2 개의 서버를 하나의 라이브/프로덕션 영역과 다른 샌드 박스로 작동시키는 방법은 있지만 실제로는 하나의 서버 만 사용합니다. 샌드 박스에서 나는 repos의 복사본을 가지고 정기적으로 업데이트합니다. 내가 처음부터 sanbox 폴더를 만들 것입니다. 고마워요. –

2

나는 우리의 방법이 모범 사례 라 할 수는 없다고 생각하지만, 우리를 잘 보냈다.

우리는 우리의 응용 프로그램 (20GB +)을위한 몇 개의 커다란 데이터베이스를 가지고 있기 때문에 각 개발자 컴퓨터에 로컬 복사본을 유지하는 것은 실제로 선택 사항이 아니 었습니다. 우리가 실제 데이터베이스와 비교하여 개발하지는 않지만, 가능한 한 실제에 가까운 데이터베이스에 대한 개발

결과적으로 중앙 웹 서버도 사용하고 Subversion 트렁크의 개발 지점을 유지하십시오. 일반적으로 시스템의 동일한 부분에서 동시에 작업하지는 않지만 그렇게해야하거나 누군가 상당한 변경을하면 우리는 트렁크를 분기하고 dev 서버에서 새로운 가상 호스트를 만듭니다.

또한 프로덕션 서버의 코드를 점검하므로 테스트가 끝나면 프로덕션 서버에서 svn 업데이트 만 수행하면됩니다. ssh를 사용하는 모든 서버에서 update 명령을 실행하는 스크립트를 구현했습니다. 코드베이스가 크고 업로드하는 데 많은 시간이 걸리기 때문에 이것은 매우 편리합니다. Subversion은 실제로 변경된 파일 만 복사하므로 훨씬 빠릅니다.

이것은 우리에게 정말 효과적이었습니다. 업데이트 할 때 충돌을 일으킬 수 있기 때문에 조심해야 할 것은 프로덕션 서버에서 직접 변경하는 것입니다 (당연히 처음부터 아니오입니다).

+0

프로덕션 코드를 체크 아웃 하시겠습니까? .svn 폴더에 문제가 있습니까? 내보내기가 여기에 더 좋은 옵션 인 것 같습니다 : http://stackoverflow.com/questions/175056/svn-checkout-or-export-for-production-environment – barfoon

+0

내보내기를 사용하면 변경된 파일 만 복사하는 이점을 잃을 수 있습니다. 배포가 훨씬 느려질 것입니다. 또한, 업데이트 작업은 원자 적이며 수출은 그렇지 않다고 생각하지만 잘못된 것일 수 있습니다. –

+0

그리고 우리의 디렉토리 구조는 default.php와 일부 정적 컨텐츠 만 웹 루트에 있으며, 추가 안전을 위해 apache를 사용하여 .svn 폴더에 대한 액세스를 차단합니다. –

0

카피스트라노는 훌륭합니다. 기본 레시피 문서가 불규칙하지만 메일 링리스트가 활성화되어있어 설정하기가 쉽습니다. Rails를 실행하고 있습니까? Rails 앱을위한 내장 된 기능이 있지만 다른 유형의 웹 애플리케이션과도 자주 사용됩니다.

카피스트라노를 기반으로하지만 웹 프런트 엔드를 사용하는 Webistrano도 있습니다. 나 혼자 사용하지 않았어. 적어도 Rails 사용자들 사이에서 어떤 견인력을 얻고있는 것으로 보이는 다른 배치 시스템은 Vlad the Deployer입니다.

+0

나는 슬픈 듯이 슬픈 듯이 슬픈 듯이 더 많은 101 루비 녀석입니다. 파이썬으로 더 가고 싶지만 파이썬에 대한 카스티 스트라노처럼 somethig를 찾을 수 없었습니다. 그래서 루비 나 포크를 더 배울 시간이라고 생각합니다. LOL 어쨌든 카피스트라노 앱이있는 것 같습니다. 갈 수있는 좋은 옵션은 더 많은 것을 읽고 곧 시도해 볼 것입니다. 감사합니다. –

관련 문제