cron을 사용하여 Gitlab 리포지토리를 웹 서버 측에 반영

3465 단어 cronGitGitLab
Web hook이라든지 여러가지 있습니다만, 잘 되지 않거나에서 악전 고투하고 있었습니다. .
시험에 cron을 사용하여 WEB 서버의 갱신을 할 수 있었으므로 메모로서 남겨 둡니다. 서버 주위는 초보자입니다.

규모가 큰 것이나 프로덕션 환경은, CI라든지 제대로 사용하는 편이 좋다고 생각합니다.
그렇다면 앞으로 공부하고 싶다고 생각합니다.
(이번에는 정적 개발 환경을 상정하여 생각했습니다)

이번에는 Gitab 리포지토리에서 소스 제어를 하고, cron으로 WEB 서버도 갱신하는 구조를 만들었습니다.
cron은 5분 간격을 두었습니다.

다음과 같은 느낌이 듭니다.



서버 준비


  • git 명령이 설치되었습니다

  • 웹 서버에 액세스하여 개인 및 공개 키 만들기



    대상 서버에서 Gitlab의 리포지토리를 clone 할 수 있도록 개인 키와 공개 키를 만듭니다.
    ssh ◯◯@hogehoge.net  // sshでログイン(ログインユーザはsudo権限が必要)
    sudo -s  // rootユーザに切り替える
    su - アカウント  // rootユーザからアカウントに切り替える
    

    대상 서버의 계정으로 전환한 후 키를 만듭니다.
    $ cd ~/
    $ mkdir .ssh (.ssh ディレクトリが作成されていない場合、作成済みの場合は cd ~/.ssh/)
    $ ssh-keygen(鍵の保存先は、「.ssh/id_rsa」パスフレーズは空「Return」)
    $ cat ~/.ssh/id_rsa.pub (表示されるキーをコピー)
    

    작성한 공개키를 Gitlab에 등록





    복사한 키를 Gitlab 리포지토리에 등록하기

    Setting → Deploy Keys → New Deploy Keys

    WEB 서버 측에 리포지토리를 clone



    리포지토리 측에서는 파일을 올린 상태로 한다(업되었는지 확인하기 위해)

    먼저 리포지토리를 저장할 디렉터리로 이동합니다.

    자신은 공개 디렉토리가 아닌 사용자 디렉토리 바로 아래에 clone을했습니다.

    ※공개 서버에 그대로 clone 해 버리면/.git/가 생겨 버립니다. --mirror 의 옵션을 붙여 clone 해 공개 디렉토리에 checkout 하는 형태로 했습니다. ( 참고 기사대로 )
    $ cd [リポジトリを格納するディレクトリ]
    $ git clone --mirror [リポジトリURL] [オプション:作成するリポジトリ名]
    

    WEB 서버 측에 쉘 스크립트 설치



    우선, 쉘 스크립트를 작성합니다.

    쉘 스크립트는 pre-push.sh라는 이름으로 저장소의 후크에 넣었습니다.

    ※ 작성 사용자는 WEB 서버의 계정
    $ cd [--mirrorで作成したリポジトリのパス]
    $ vi hooks/pre-push.sh
    

    pre-push.sh
    #!/bin/sh
    cd [--mirrorで作成したリポジトリのパス]
    git fetch
    GIT_WORK_TREE=/home/dev-ideacd git checkout -f master
    

    작성한 스크립트에 실행 권한을 부여합니다.
    $ chmod +x pre-push.sh
    

    웹 서버 측에 cron 설정



    루트 사용자로 crontab을 설정하십시오.
    # crontab -u [WEBサーバのアカウント] -e
    

    5분마다 cron이 달리도록 설정
    */5 * * * * [--mirrorで作成したリポジトリのパス]/hooks/pre-push.sh
    

    참고 사이트


  • Bitbucket 및 GitHub에서 자동 배포를위한 샘플 PHP 스크립트를 선택하고 수정했습니다.
  • git hook으로 사이트를 업데이트하고 시도했습니다.
  • cron에서 자동으로 git push
  • 웹 서버를 시작할 때 자동으로 Git에서 최신 응용 프로그램을 배포하는 방법 /etc/rc.local or Cron
  • cron 설정
  • 좋은 웹페이지 즐겨찾기