웹사이트 검색

VPS를 사용하여 Git으로 자동 배포를 설정하는 방법


소개

Git 소개 및 설치 방법은 소개 튜토리얼을 참고하세요.

이 문서에서는 애플리케이션을 배포하려는 경우 Git을 사용하는 방법을 알려줍니다. Git을 사용하여 애플리케이션을 배포하는 방법에는 여러 가지가 있지만 이 자습서에서는 가장 간단한 방법에 중점을 둘 것입니다. 로컬 컴퓨터에서 리포지토리를 만들고 사용하는 방법을 이미 알고 있다고 가정합니다. 그렇지 않은 경우 이 자습서를 참조하십시오.

Git을 사용할 때 작업 흐름은 일반적으로 버전 제어에만 적용됩니다. 작업하는 로컬 리포지토리와 모든 것을 동기화하고 팀 및 다른 시스템과 함께 작업할 수 있는 원격 리포지토리가 있습니다. 그러나 Git을 사용하여 애플리케이션을 프로덕션으로 이동할 수도 있습니다.

서버 설정

우리의 가상 작업 공간:

서버 라이브 디렉토리: /var/www/domain.com

서버 저장소: /var/repo/site.git

site.git에 푸시하고 동시에 모든 콘텐츠를 /var/www/domain.com에서 사용할 수 있게 하려면 어떻게 해야 합니까?

저장소 만들기

명령줄에서 VPS에 로그인하고 다음을 입력합니다.

cd /var
mkdir repo && cd repo
mkdir site.git && cd site.git
git init --bare

--bare는 폴더에 소스 파일이 없고 버전 제어만 있음을 의미합니다.

후크

Git 리포지토리에는 'hooks'라는 폴더가 있습니다. 이 폴더에는 사용자가 설정한 사용자 지정 작업을 연결하고 수행할 수 있는 가능한 작업에 대한 몇 가지 샘플 파일이 포함되어 있습니다.

Git 문서는 'pre-receive', 'post-receive''update'의 세 가지 가능한 서버 후크를 정의합니다. 'Pre-receive'는 서버가 'push'를 수신하는 즉시 실행되며, 'update'는 유사하지만 각각에 대해 한 번씩 실행됩니다. 분기하고 'post-receive''push'가 완전히 완료되고 우리가 관심 있는 항목일 때 실행됩니다.

다음을 입력하면 저장소에 다음을 입력합니다.

ls

'hooks' 폴더를 포함하여 몇 개의 파일과 폴더가 표시됩니다. 이제 'hooks' 폴더로 이동해 보겠습니다.

cd hooks

이제 다음을 입력하여 'post-receive' 파일을 만듭니다.

cat > post-receive

이 명령을 실행하면 입력한 모든 내용이 이 파일에 저장됨을 나타내는 빈 줄이 나타납니다. 이제 다음을 입력해 보겠습니다.

#!/bin/sh
git --work-tree=/var/www/domain.com --git-dir=/var/repo/site.git checkout -f

입력을 마치면 'control-d'를 눌러 저장합니다.

chmod +x post-receive

문서에서 'git-dir'이 저장소 경로임을 알 수 있습니다. 'work-tree'를 사용하면 파일이 실제로 전송될 다른 경로를 정의할 수 있습니다.

'post-receive' 파일은 푸시가 완료될 때마다 조사되며 파일이 /var/www/domain.com에 있어야 한다고 말합니다.

로컬 머신

로컬 저장소를 생성해 봅시다. 경로와 이름을 원하는 대로 변경해야 합니다. VPS를 사용 중인 경우 다음을 입력하십시오.

exit

그리고 저장소를 만듭니다.

cd /my/workspace
mkdir project && cd project
git init

그런 다음 리포지토리의 원격 경로를 구성해야 합니다. Git에게 'live'라는 원격을 추가하도록 지시합니다.

git remote add live ssh://user@mydomain.com/var/repo/site.git

여기서 라이브 폴더가 아닌 리포지토리 링크를 제공해야 합니다.

이 폴더에 훌륭한 작업이 준비되어 있다고 가정해 봅시다. 파일을 추가하고 메시지와 함께 커밋하는 일반적인 단계를 수행해야 합니다.

git add .
git commit -m "My project is ready"

'git add' 뒤의 점은 모든 파일을 스테이지에 추가한다는 의미입니다. 'git commit' 뒤에 '-m'이 있는데 이는 메시지를 입력한다는 의미입니다. 완료하려면 모든 것을 서버에 '푸시'하면 됩니다. 리모컨을 설정할 때 사용한 '라이브' 별칭을 사용합니다.

git push live master
Counting objects: 7, done.Delta compression using up to 4 threads.Compressing objects: 100% (7/7), done.Writing objects: 100% (7/7), 10.56 KiB, done.Total 7 (delta 0), reused 0 (delta 0)To ssh://user@mydomain.com/var/repo/site.git* [new branch]      master -> master

여기에서 Git에게 'master' 브랜치의 'live' 원격으로 푸시하도록 지시합니다. 분기 및 사용 방법에 대한 자세한 내용은 이 자습서를 참조하세요.

베타

한 번에 모든 것을 배포하고 싶지 않다면 어떻게 해야 합니까? 먼저 테스트하고 베타 디렉토리를 갖고 싶을 수도 있습니다.

이를 수행하는 방법 중 하나는 다른 저장소를 만드는 것입니다. VPS에 다시 로그인하고 디렉터리를 생성해 보겠습니다.

cd /var/www/
mkdir beta

리포지토리를 생성하려면:

cd /var/repo
mkdir beta.git && cd beta.git
git init --bare

베타 디렉토리에서 프로젝트를 보고 싶기 때문에 다시 'post-receive' 파일을 만들어야 합니다.

cd hooks
cat > post-receive

파일 내용을 입력합니다.

#!/bin/sh
git --work-tree=/var/www/beta --git-dir=/var/repo/beta.git checkout -f

입력을 마치면 'control-d'를 눌러 저장합니다. 파일을 실행하려면 다음을 사용하여 적절한 권한을 설정해야 합니다.

chmod +x post-receive

로컬 저장소로 돌아가 보겠습니다.

exit
cd /my/workspace/project

이제 베타 리포지토리를 가리키는 다른 원격을 설정할 수 있습니다.

git remote add beta ssh://user@mydomain.com/var/repo/beta.git

이것으로 우리는 2단계 프로세스를 가질 수 있습니다. 먼저 베타로 푸시하고 확인하고 모든 것이 정상이면 라이브로 푸시합니다.

git add .
git commit -m "New version"
git push beta master

그리고 나중에:

git push live master

서버에서 라이브로 이동

동일한 프로젝트에서 작업하는 팀이 있고 다른 사람들도 라이브로 시작할 시간을 결정할 수 있기를 원할 수 있습니다. 이를 위해 서버에서 베타 및 라이브 저장소를 연결할 수 있습니다. VPS에 로그인하고 다음을 입력하십시오.

cd /var/repo/beta.git
git remote add live ../site.git

이제 베타에서 푸시하여 서버에서 라이브로 실행할 수 있습니다.

cd /var/repo/beta.git
git push live master

축하해요! 이제 VPS가 Git을 사용하여 자동으로 배포되도록 설정되었습니다!