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=<FILE_NAME>
    

    복원에는 데이터베이스와 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

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을 관리하는 경우 해당 서비스도 비활성화해야 합니다. 또한 다음 단계에서 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와 같은 특수 기능을 사용하는 경우 설정 문서를 확인하여 설정을 해야 합니다.