Git (GitHub) + VPS (Vultr)로 자동 배포 환경 구축

4223 단어 VULTRvpsGitHubGit
자신의 메모로.

하고 싶은 일


  • 로컬에서 개발
  • GitHub 리포지토리에 push, 동시에 VPS 리포지토리에도 push
  • VPS에 자동 배포

  • 환경


  • 로컬
  • OS: OSX El Capitan
  • Git: GitHub

  • VPS

  • Vultr
  • CentOS 7.3.1611
  • Nginx 1.13.0
  • Git 1.8.3.1



  • Git(GitHub)



    미리 "testing"이라는 저장소를 작성해 둡니다.

    VPS(Vultr)



    config 파일을 사용하여 SSH 연결을 허용합니다.
    다음은 설명의 예입니다.

    ~/.ssh/config
    Host vultr
      HostName 12.34.56.789
      Port 22
      User hoge
      IdentityFile ~/.ssh/id_rsa
    

    리포지토리



    전통적인 방법으로 두 개의 저장소를 준비합니다.

  • 비베어 리포지토리(로컬 리포지토리)
  • 작업 트리 있다.
  • 체크아웃이나 병합이 가능하다.


  • 베어 리포지토리(원격 리포지토리)
  • 작업 트리 없음.
  • 체크 아웃이나 병합이 불가능합니다.
  • 소위 갱신 관리용.


  • 이것이 다소 어렵지만 VPS에 두 저장소를 모두 넣습니다.
    디렉토리 구조는 다음과 같습니다.
    var
    └── www
        ├── html
        │    └── testing (ノンベアリポジトリー)
        └── testing.git (ベアリポジトリー)
    

    베어 리포지토리는 공개할 필요가 없기 때문에, /var/www 부하로 하고 있습니다.

    흐름



    로컬 리포지토리 → ①GitHub 리포지토리 "testing"

    ②VPS 베어리포지토리 'testing.git'

    VPS 논베어 리포지토리 'testing'(공개)

    ※①과 ②는 동시에 push합니다.

    절차



    먼저 GitHub에서 'testing'을 /var/www/html로 clone합니다.
    cd /var/www/html
    git clone https://github.com/{username}/testing.git
    

    clone한 리포지토리를 기초로, 베어 리포지토리 「testing.git」를 /var/www 에 작성합니다.
    cd /var/www
    git clone -bare /var/www/html/testing testing.git
    

    그런 다음 베어 리포지토리 "testing.git"의 후크를 설정합니다.
    cd /var/www/testing.git/hooks
    vi post-update
    

    post-update
    #!/bin/sh
    (cd /var/www/html/testing && git --git-dir=.git pull origin master)
    

    파일에 실행 권한을 부여하여 움직이는지 확인합니다.
    chmod a+x post-receive
    ./post-receive
    

    다시 말해 GitHub에서 로컬로 'testing'을 clone하여 config 파일을 편집합니다.
    clone 할 위치는 홈 디렉토리 바로 아래의 "git"폴더 아래에 있습니다.

    ~/git/testing/.git/config
    [remote "origin"]
      url = https://{username}@github.com/{username}/testing.git
      url = ssh://user@hostname:port/var/www/testing.git ←この行を追加
      ...
    

    user, hostname, port는 VPS입니다.
    로컬 ~/.ssh/config에 따라 변경하십시오.

    보충



    혼자서 작업한다면 이것으로 문제 없다고 생각합니다.
    그러나 여러 사람이 배포하기에는 충분하지 않으므로 Netlify 등을 고려하십시오.

    참고


  • SourceTree에서 Git psuh (푸시)하면 서버 환경에 자동으로 배포!
  • git으로 간단한 배포 환경 만들기
  • Git의 bare 리포지토리와 non-bare 리포지토리
  • git으로 자동 배포 환경 구축 (bare,hook)
  • 좋은 웹페이지 즐겨찾기