리눅스 패키지 설치로의 비리눅스 패키지 설치 업그레이드

Tier: Free, Premium, Ultimate
Offering: Self-managed

비리눅스 패키지 설치에서 업그레이드는 GitLab에 의해 테스트되지 않았습니다.

gitlab.yml, puma.rbsmtp_settings.rb와 같은 파일의 설정이 손실되니 주의하시기 바랍니다.
이 설정들을 /etc/gitlab/gitlab.rb에서 구성해야 합니다.

마이그레이션을 시작하기 전에, 정확히 동일한 버전의 GitLab로 이동하고 있는지 확인하십시오.
리눅스 패키지를 사용하여 설치를 변환하려면:

  1. 현재 설치에서 백업을 생성하십시오:

    cd /home/git/gitlab  
    sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production  
    
  2. 리눅스 패키지를 사용하여 GitLab 설치하십시오.
  3. 백업 파일을 새 서버의 /var/opt/gitlab/backups/ 디렉터리에 복사하십시오.
  4. 새 설치에서 백업을 복원하십시오 (자세한 지침):

    # 이 명령은 GitLab 데이터베이스의 내용을 덮어씁니다!  
    sudo gitlab-backup restore BACKUP=<FILE_NAME>  
    

    복원은 데이터베이스 및 Git 데이터의 크기에 따라 몇 분이 걸립니다.

  5. 새 설치를 구성하십시오. 리눅스 패키지 설치에서는 모든 설정이 /etc/gitlab/gitlab.rb에 저장됩니다. 개별 설정은 gitlab.yml, puma.rbsmtp_settings.rb와 같은 파일에서 수동으로 이동해야 합니다. 모든 사용 가능한 옵션은 gitlab.rb 템플릿을 참조하십시오.
  6. 구성 프로세스를 완료하려면 이전 설치의 비밀을 새 설치로 복사하십시오. GitLab은 데이터베이스 암호화, 세션 암호화 등 여러 용도로 비밀을 사용합니다. 리눅스 패키지 설치에서는 모든 비밀이 /etc/gitlab/gitlab-secrets.json이라는 단일 파일에 저장됩니다. 반면에 소스 설치에서는 비밀이 여러 파일에 저장됩니다:
    1. 먼저 관계 Rails와 관련된 비밀을 복원해야 합니다. /home/git/gitlab/config/secrets.yml (자체 컴파일한 설치)에서 db_key_base, secret_key_baseotp_key_base의 값을 복사하여 /etc/gitlab/gitlab-secrets.json (리눅스 패키지 설치)의 해당 값에 붙여넣습니다.
    2. 그런 다음, /home/git/gitlab-shell/.gitlab_shell_secret (GitLab 소스)의 내용을 GitLab Shell의 secret_token에 복사합니다
      /etc/gitlab/gitlab-secrets.json (Linux 패키지 설치)에서. 다음과 같이 보일 것입니다:

       {  
         "gitlab_workhorse": {  
           "secret_token": "..."  
         },  
         "gitlab_shell": {  
           "secret_token": "..."  
         },  
         "gitlab_rails": {  
           "secret_key_base": "...",  
           "db_key_base": "...",  
           "otp_key_base": "..."
         }  
         ...  
       }  
      
  7. 변경 사항을 적용하기 위해 GitLab을 재구성하십시오:

    sudo gitlab-ctl reconfigure  
    
  8. /home/git/gitlab-shell/.gitlab_shell_secret를 마이그레이션한 경우, Gitaly를 재시작해야 합니다:

    sudo gitlab-ctl restart gitaly  
    

비-Linux 패키지 PostgreSQL에서 Linux 패키지 설치로 백업을 사용하여 업그레이드하기

비-Linux 패키지 설치에서 백업 생성Linux 패키지 설치에서 복원하기로 업그레이드하세요.

이 작업을 수행할 때 정확히 동일한 버전의 GitLab(예: 6.7.3)을 사용하고 있는지 확인하세요.

백업을 생성하기 전에 비-Linux 패키지 설치를 업그레이드해야 할 수도 있습니다.

업그레이드 후에는 체크 작업을 실행해야 합니다:

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에 위치한다고 가정합니다.

비-Linux 패키지 PostgreSQL에서 Linux 패키지 설치로 인플레이스 업그레이드

자체 컴파일한 설치를 Linux 패키지 설치로 인플레이스 업그레이드하는 것도 가능합니다.

여기서는 Ubuntu에서 PostgreSQL을 사용하고 있으며 현재 GitLab 버전과 일치하는 Linux 패키지가 있다고 가정합니다.

또한 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'
# 여기에 자신의 GitLab URL을 사용하세요
external_url 'http://gitlab.example.com'

# 우리는 리포지토리가 /home/git/repositories에 있다고 가정합니다 (소스 설치의 기본값)
git_data_dirs({ 'default' => { 'path' => '/home/git' } })

# 이미 시스템에서 실행 중인 PostgreSQL을 재사용합니다
postgresql['enable'] = false
# 이 db_host 설정은 Debian PostgreSQL 패키지에 대한 것입니다
gitlab_rails['db_host'] = '/var/run/postgresql/'
gitlab_rails['db_port'] = 5432
# 우리는 GitLab DB 사용자를 'git'이라고 가정합니다
gitlab_rails['db_username'] = 'git'
EOF

이제 Linux 패키지를 설치하고 설치를 재구성합니다:

sudo gitlab-ctl reconfigure

아직 완료되지 않았습니다! gitlab-ctl reconfigure 실행으로 Git 사용자의 홈 디렉토리가 변경되어 OpenSSH가 더 이상 authorized_keys 파일을 찾을 수 없습니다. 다음 명령어로 키 파일을 다시 빌드하세요:

sudo gitlab-rake gitlab:shell:setup

이제 이전에 있던 리포지토리와 사용자로 GitLab 서버에 HTTP 및 SSH 접근을 할 수 있어야 합니다.

GitLab 웹 인터페이스에 로그인할 수 있다면, 다음 단계는 서버를 재부팅하여 이전 서비스가 Linux 패키지 설치에 간섭하지 않도록 하는 것입니다.

LDAP와 같은 특별한 기능을 사용하고 있다면 설정을 gitlab.rb에 추가해야 하며, 설정 문서를 참조하세요.