GitLab_가이드

비 Omnibus 설치에서 Omnibus 설치로 업그레이드

구일칠구 2022. 8. 1. 15:21

비 Omnibus 설치에서 업그레이드하는 것은 GitLab.com에서 테스트하지 않았습니다.

gitlab.yml, puma.rb및 와 같은 파일의 설정이 손실된다는 점에 유의하십시오 smtp_settings.rb. 에서 해당 설정을 구성/etc/gitlab/gitlab.rb 해야 합니다 .

마이그레이션을 시작하기 전에 정확히 동일한 버전 의 GitLab 으로 이동하고 있는지 확인 하십시오. 설치를 Omnibus로 변환하려면:

  1. 현재 GitLab 설치에서 MySQL을 사용하는 경우 먼저 데이터를 PostgreSQL로 마이그레이션해야 합니다. GitLab 12.1부터 PostgreSQL이 유일하게 지원되는 데이터베이스 관리 시스템이기 때문입니다. 이미 PostgreSQL을 사용하고 있다면 이 단계를 건너뛰십시오.
    1. PostgreSQL 요구 사항 및 지원되는 버전 을 확인한 다음 PostgreSQL 설치하고 데이터베이스를 생성합니다 .
    2. 데이터베이스가 생성된 후 MySQL 데이터를 PostgreSQL로 마이그레이션합니다 .
  2. 현재 설치에서 백업을 만듭니다.
  3. cd /home/git/gitlab
          sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production
          
  4. Linux 패키지를 사용하여 GitLab을 설치합니다 .
  5. 백업 파일을 /var/opt/gitlab/backups/새 서버의 디렉터리에 복사합니다.
  6. 새 설치에서 백업을 복원합니다( 자세한 지침 ):복원은 데이터베이스 및 Git 데이터의 크기에 따라 몇 분 정도 걸립니다.
  7. # This command will overwrite the contents of your GitLab database!
          sudo gitlab-backup restore BACKUP=<FILE_NAME>
          
  8. Omnibus GitLab에서와 같이 새 설치를 구성하십시오. 모든 설정은 /etc/gitlab/gitlab.rb. gitlab.yml, puma.rb및 와 같은 파일에서 개별 설정을 수동으로 이동해야 합니다 smtp_settings.rb. 사용 가능한 모든 옵션 은 gitlab.rb템플릿 을 참조하십시오 .
  9. 구성 프로세스를 완료하려면 이전 설치의 비밀을 새 설치로 복사하십시오. GitLab은 데이터베이스 암호화, 세션 암호화 등과 같은 여러 목적으로 비밀을 사용합니다. Omnibus GitLab에서 모든 비밀은 단일 파일에 배치 /etc/gitlab/gitlab-secrets.json되지만 소스 설치에서는 비밀이 여러 파일에 배치됩니다.
    1. 먼저 Rails와 관련된 비밀을 복원해야 합니다. db_key_base, secret_key_base및 otp_key_base( /home/git/gitlab/config/secrets.ymlGitLab 소스) 의 값을 /etc/gitlab/gitlab-secrets.json(Omnibus GitLab) 의 동등한 값으로 복사합니다 .
    2. 그런 다음 /home/git/gitlab-shell/.gitlab_shell_secret (GitLab 소스)의 내용을 (Omnibus GitLab)의 GitLab Shell secret_token에 /etc/gitlab/gitlab-secrets.json복사합니다. 다음과 같이 보일 것입니다.
    3.  {
                "gitlab_workhorse": {
                "secret_token": "..."
                },
                "gitlab_shell": {
                "secret_token": "..."
                },
                "gitlab_rails": {
                "secret_key_base": "...",
                "db_key_base": "...",
                "otp_key_base": "...",
                }
                ...
                }
                
  10. 변경 사항을 적용하려면 Omnibus GitLab을 재구성하십시오.
  11. sudo gitlab-ctl reconfigure
          
  12. 마이그레이션한 경우 Gitaly/home/git/gitlab-shell/.gitlab_shell_secret 도 다시 시작해야 합니다 .
  13. sudo gitlab-ctl restart gitaly
          

백업을 사용하여 비 Omnibus PostgreSQL에서 Omnibus 설치로 업그레이드

Omnibus가 아닌 설치에서 백업을 만들고 Omnibus 설치 에서 복원 하여 업그레이드 하십시오 . 이 작업을 수행할 때 정확히 동일한 버전 의 GitLab(예: 6.7.3)을 사용하고 있는지 확인하십시오 . 이를 달성하기 위해 백업을 생성하기 전에 비 Omnibus 설치를 업그레이드해야 할 수도 있습니다.

업그레이드 후 확인 작업을 실행해야 합니다.

sudo gitlab-rake gitlab:check
    

와 유사한 오류가 발생하면 다음 No such file or directory @ realpath_rec - /home/git라이너를 실행하여 Git 후크 경로를 수정하십시오.

find . -lname /home/git/gitlab-shell/hooks -exec sh -c 'ln -snf /opt/gitlab/embedded/service/gitlab-shell/hooks $0' {} \;
    

이것은 gitlab-shell가 에 있다고 가정합니다 /home/git.

비 Omnibus PostgreSQL에서 Omnibus 설치로 업그레이드

소스 GitLab 설치를 제자리에서 Omnibus GitLab으로 업그레이드하는 것도 가능합니다. 아래에서는 Ubuntu에서 PostgreSQL을 사용하고 있으며 현재 GitLab 버전과 일치하는 Omnibus GitLab 패키지가 있다고 가정합니다. 또한 GitLab의 소스 설치가 모든 기본 경로와 사용자를 사용한다고 가정합니다.

먼저 GitLab, Redis 및 NGINX를 중지하고 비활성화합니다.

# Ubuntu
    sudo service gitlab stop
    sudo update-rc.d gitlab disable
    
    sudo service nginx stop
    sudo update-rc.d nginx disable
    
    sudo service redis-server stop
    sudo update-rc.d redis-server disable
    

구성 관리 시스템을 사용하여 서버에서 GitLab을 관리하는 경우 GitLab 및 관련 서비스도 비활성화해야 합니다. 또한 다음 단계에서는 Git 사용자( /home/git)의 기존 홈 디렉토리가 로 변경됩니다 /var/opt/gitlab.

gitlab.rb다음으로 새 설정을 위한 파일을 만듭니다 .

sudo mkdir /etc/gitlab
    sudo tee -a /etc/gitlab/gitlab.rb <<'EOF'
    # Use your own GitLab URL here
    external_url 'http://gitlab.example.com'
    
    # We assume your repositories are in /home/git/repositories (default for source installs)
    git_data_dirs({ 'default' => { 'path' => '/home/git' } })
    
    # Re-use the PostgreSQL that is already running on your system
    postgresql['enable'] = false
    # This db_host setting is for Debian PostgreSQL packages
    gitlab_rails['db_host'] = '/var/run/postgresql/'
    gitlab_rails['db_port'] = 5432
    # We assume you called the GitLab DB user 'git'
    gitlab_rails['db_username'] = 'git'
    EOF
    

이제 Omnibus GitLab 패키지를 설치하고 재구성하십시오.

sudo gitlab-ctl reconfigure
    

당신은 아직 완료되지 않았습니다! 실행으로 Git 사용자 의 gitlab-ctl reconfigure홈 디렉토리가 변경되었으므로 OpenSSH는 더 이상 해당 권한이 부여된_keys 파일을 찾을 수 없습니다. 다음 명령을 사용하여 키 파일을 다시 빌드하십시오.

sudo gitlab-rake gitlab:shell:setup
    

이제 이전에 있었던 리포지토리 및 사용자가 있는 GitLab 서버에 대한 HTTP 및 SSH 액세스 권한이 있어야 합니다.

GitLab 웹 인터페이스에 로그인할 수 있는 경우 다음 단계는 서버를 재부팅하여 이전 서비스가 Omnibus GitLab을 방해하지 않는지 확인하는 것입니다.

LDAP와 같은 특수 기능을 사용하는 경우 설정을 입력해야 합니다 . 설정 문서gitlab.rb 를 참조하세요 .

비 Omnibus MySQL에서 Omnibus 설치로 업그레이드(버전 6.8 이상)

GitLab 12.1부터 PostgreSQL은 유일한 지원 데이터베이스 관리 시스템입니다. 따라서 Omnibus가 아닌 설치에서 12.1 이전의 GitLab 버전을 실행하고 MySQL을 사용하는 경우 12.1로 업그레이드하기 전에 PostgreSQL로 마이그레이션해야 합니다.