2008-09-01 7 views
7

나는 Capistrano을 알고 있지만 나에게는 너무 무겁다. 개인적으로 두 개의 Mercurial 리포지토리를 하나씩 프로덕션 서버에 설치하고 다른 하나는 로컬 컴퓨터에 설치했습니다. 정기적으로 새로운 기능이 준비되면 로컬 컴퓨터의 저장소에서 서버의 저장소로 변경 내용을 푸시 한 다음 서버에서 업데이트합니다. 이것은 여러 컴퓨터에서 파일을 동기화 상태로 유지하는 아주 간단하고 빠른 방법이지만 데이터베이스를 업데이트하는 데는 도움이되지 않습니다.서버에서 웹 응용 프로그램을 어떻게 업데이트합니까?

문제의 해결 방법은 무엇입니까?

답변

1

git push를 사용하여 웹 서버에 게시했지만 최근에는 rsync를 사용하고 있습니다. 나는 내 사이트를 가능한 한 (상대 경로 등을 사용하여) 실행중인 위치에 대해 불가지론 자로 만들려고 노력하고 있으며 지금까지는 꽤 잘 돌아갔다. 유일한 문제는 데이터베이스를 동기화 상태로 유지하는 것이므로 일반적으로 프로덕션 데이터베이스를 마스터로 사용하고 정기 백업 및 테스트 데이터베이스로 가져 오기를 수행합니다.

+0

나는 똑같은 짓을하고 있지만 요즘은 이것이 정말로 원자 적이 아니라고 생각합니다. 끊임없이 사용되는 웹 사이트에 적합하지 않습니다. 사람들은 아직 모든 파일이 동기화되지 않은 부서진 단계에서 액세스 할 수 있습니다. – Gilles

+0

더 좋은 방법은 폴더 A에 rsync하는 것입니다. 폴더 B에는 라이브 웹 사이트가 포함되어 있고 현재 라이브 버전을 가리키는 심볼릭 링크를 덮어 쓰면 A에서 B로 전환됩니다. 다음에 rsync를 B로 설정합니다. – Gilles

0

앤드류

는 당신이 밀어 당신의 .git/config 파일에 원격 서버를 먼저 설정해야 할 것입니다 귀하의 사이트를 배포하는 자식 푸시를 사용합니다. 그런 다음 기본적으로 git reset을 수행 할 훅 (hook)을 구성해야합니다 - 저장소에 복사 한 코드를 작업 디렉토리에 복사하십시오.

나는 이것이 다소 모호하다는 것을 알고 있지만 일단 rsync로 전환하면 실제로 서버 측 .git 폴더를 삭제하므로 마술을 수행하는 데 사용한 정확한 스크립트가 없습니다. 그래도 전체 질문에 대한 좋은 후보가 될 수 있으므로 더 많은 답변을 얻을 수 있습니다.

편집 : 나는 그것이 오랜만 것을 알고,하지만 난 결국 내가 다시 사용 된 것을 발견 : 나는 당신이 루비 온 레일즈 말하고있어 믿고있어

Deploy a project using Git push

1

또는 Fabric, 파이썬을 선호하는 경우.

+0

fabric에 대한 세부 정보 : http://stackoverflow.com/questions/1233655/what-is-the-simplest-way-to-ssh-using-python – hughdbrown

1

카피스트라노에 대한 헤비급 자료는 무엇입니까? 파일을 동기화하려면 rsync가 좋은지 확인하십시오. 하지만 DB 업데이트를 할 필요가 있다면 cap이 그렇게 나쁘지 않을까요?