2012-10-04 3 views
3

내 개발 컴퓨터에 로컬 git 저장소가 있습니다.git을 사용하여 내 프로덕션 서버에 내 node.js 응용 프로그램 배포

git을 사용하여 코드를 프로덕션 서버로 푸시합니다. 일단 코드가 푸시되면 웹 서버를 재시작하십시오.

이 작업을 수행하는 명령은 무엇입니까? 나는 데비안을 사용하고있다.

/var/www/example.com

생산 호스트 이름이 내가 SSH + 키를 이미 설치가 production.example.com 내 로컬 저장소입니다.

답변

2

내가 함께, 서버에 베어 REPO에 후크를 포스트가 나타난다 추천 : 베어의 repo에 밀어

GIT_DIR=/path/to/bare/repo/.git 
GIT_WORK_TREE=/var/www/www.example.org git checkout -f 

, 아웃 작업 트리와 어떤 문제가되지 않습니다 (벌거 벗은 저장소에는 이 없으므로 작업 트리가 있음).
그런 다음 실시간 사이트 디렉토리 구조에서 베어 포스트를 체크 아웃합니다 (수신 후크를 통해).

"git GIT_WORK_TREE post-receive hook deployment remote"과 유사합니다.
GIT_DIR을 설정하면 "Git checkout in post-receive hook: “Not a git repository '.'"에서 언급 된 문제가 발생하지 않습니다.

4

실제 웹 사이트로 코드를 직접 푸시하는 것은 좋지 않습니다. 이를 위해 공용 디렉토리 외부의 서버에 맨 저장소를 만들 수 있습니다. 이 리포지토리는 라이브 웹 사이트 리포지토리에 변경 사항을 적용하며 웹 사이트의 게이트 골키퍼와 같습니다. 생성이와

$ cd ~/www 
$ git init 
$ git add . 
$ git commit -m"initial import of pre-existing web files" 

HTTP를 통해 액세스 할 수없는 디렉토리로 이동 : 일을 설정하려면, 라이브 웹 사이트 디렉토리 주위에 저장소를 만들 수 있습니다. 일을 간단하게하기 위해,이 벌거 벗은 디렉토리 HUB와 웹 사이트 디렉토리 LIVE를 호출 할 수 있습니다. 여기 베어 저장소를 초기화 :

$ cd; mkdir site_hub.git; cd site_hub.git 
$ git --bare init 

그런 다음, 라이브 웹 사이트 작업 디렉토리 내부에서 원격으로이 베어 저장소를 추가하고 라이브 웹 사이트의 마스터 분기를 밀어 넣습니다.

$ cd ~/www 
$ git remote add hub ~/site_hub.git 
$ git remote show hub 
* remote hub 
    URL: /home/rizwan/site_hub.git 
$ git push hub master 

라이브 저장소의 변경 사항을 적용하려면 후크가 필요합니다. 허브 저장소 내부 post-update 후크 만들기 :이 후크 내부

#!/bin/sh 

echo 
echo "**** Pulling changes into Live [Hub's post-update hook]" 
echo 

cd $HOME/www || exit 
unset GIT_DIR 
git pull hub master 

exec git-update-server-info 

을, 당신은 끌어 오기가 완료된 후 서버를 다시 시작하는 코드를 가질 수있다.

또한 LIVE 저장소에 post-commit 후크를 만들어 라이브 웹 사이트의 변경 사항을 허브로 다시 보냅니다.

로컬 컴퓨터에
#!/bin/sh 

echo 
echo "**** pushing changes to Hub [Live's post-commit hook]" 
echo 

git push hub 

, 그 변경 사항을 원격으로 HUB 저장소를 추가하고 밀어 : 얼마나이 작품

git remote add hub <hub-repository-url> 

을, 당신은 몇 가지 코드를 작성하고 노출 된 저장소에 밀어하는 업데이트 후크를 사용하여 변경 사항을 라이브 저장소로 푸시하고 서버를 다시 시작합니다.

+0

여러 프로덕션 서버로 확장 한 경우 어떻게 작동합니까? – Xerri

+0

결국 여러 원격에서이 명령을 실행하는 배포 스크립트를 작성해야합니다. – rizwaniqbal

+0

궁극적으로 어쨌든 살기를 원할 때 살기로 직접 밀어 넣지 않으시겠습니까? –

관련 문제