Linux 패키지 설치로부터 비-Linux 패키지 설치로 업그레이드

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

비-Linux 패키지 설치로부터의 업그레이드는 GitLab에서 테스트되지 않았습니다.

gitlab.yml, puma.rb, smtp_settings.rb와 같은 파일에서의 설정은 손실될 수 있음에 주의하십시오. 이러한 설정은 /etc/gitlab/gitlab.rb에서 설정해야 합니다.

마이그레이션을 시작하기 전에, 반드시 GitLab의 동일한 버전으로 이동하는지 확인하십시오. Linux 패키지를 사용하는 설치로 변환하려면 다음을 수행하십시오:

  1. 현재 설치에서 백업을 생성합니다:

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

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

    복원에는 데이터베이스와 Git 데이터의 크기에 따라 몇 분이 소요됩니다.

  5. 새 설치를 구성합니다. Linux 패키지 설치에서는 모든 설정이 /etc/gitlab/gitlab.rb에 저장되므로, gitlab.yml, puma.rb, smtp_settings.rb와 같은 파일에서 각 설정은 수동으로 이동해야 합니다. 사용 가능한 모든 옵션은 gitlab.rb 템플릿을 참조하십시오.

  6. 구성 프로세스를 완료하려면 이전 설치에서 비밀을 새 설치로 복사해야 합니다. GitLab은 데이터베이스 암호화, 세션 암호화 등 다양한 목적으로 비밀을 사용합니다. Linux 패키지 설치에서는 모든 비밀이 단일 파일 /etc/gitlab/gitlab-secrets.json에 저장되는 반면, 소스 설치에서는 비밀이 여러 파일에 저장됩니다:
    1. 먼저 Rails에 관련된 비밀을 복원해야 합니다. /home/git/gitlab/config/secrets.yml (자체 컴파일 설치)에서 db_key_base, secret_key_base, otp_key_base의 값을 /etc/gitlab/gitlab-secrets.json (Linux 패키지 설치)에 복사하십시오.
    2. 그런 다음 /home/git/gitlab-shell/.gitlab_shell_secret (GitLab 소스)의 내용을 /etc/gitlab/gitlab-secrets.json (Linux 패키지 설치)의 GitLab Shell의 secret_token으로 복사해야 합니다. 이렇게 보일 것입니다:

       {
         "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

/home/git에서 gitlab-shell이 있는 것으로 가정합니다. 만약 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' {} \;

Linux 패키지 설치로부터의 PostgreSQL 비-Linux 패키지 설치로의 업그레이드

셀프 컴파일된 설치를 인플레이스로 Linux 패키지 설치로 업그레이드할 수도 있습니다. 아래에선 Ubuntu에서 PostgreSQL을 사용하고 있으며, 현재 GitLab 버전과 일치하는 Linux 패키지를 사용하고 있다고 가정합니다. 또한 GitLab의 소스 설치가 모든 기본 경로와 사용자를 사용한다고 가정합니다.

먼저, GitLab, Redis 및 NGINX를 중지하고 비활성화합니다. ```shell # 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 파일을 만듭니다. ```shell 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 패키지를 설치하고 설치를 다시 구성합니다. shell sudo gitlab-ctl reconfigure

아직 끝나지 않았습니다! gitlab-ctl reconfigure 실행이 Git 사용자의 홈 디렉터리를 변경했기 때문에 OpenSSH가 authorized_keys 파일을 더 이상 찾을 수 없게 되었습니다. 다음 명령어로 키 파일을 재구축하세요. shell sudo gitlab-rake gitlab:shell:setup

이제 과거의 서비스가 Linux 패키지 설치에 영향을 미치지 않도록 서버를 재부팅해야 합니다.

LDAP와 같은 특수 기능을 사용 중이라면 설정 문서를 참조하여 설정을 해야 합니다.