Linux 패키지 인스턴스 업그레이드 문제 해결
Offering: GitLab Self-Managed
문제 해결에 도움이 되도록 다음 명령을 실행합니다. GitLab을 업그레이드하기 전에 운영 체제 업그레이드가 필요한 경우가 있습니다. 패키지 관리자에서 사용 가능한 업그레이드를 찾지 못하지만 업그레이드가 가능해야 하는 경우 GitLab 패키지 리포지터리를 다시 추가합니다.
문제 해결에 도움이 되도록 다음 명령을 실행합니다.
sudo gitlab-ctl status
sudo gitlab-rake gitlab:check SANITIZE=true
자세한 내용은 다음을 참조하십시오:
- 유지 관리에
gitlab-ctl사용에 대해서는 유지 관리 명령을 참조하십시오. - 구성 확인에
gitlab-rake사용에 대해서는 GitLab 구성 확인을 참조하십시오.
운영 체제 업그레이드 후 새 버전을 찾을 수 없음#
GitLab을 업그레이드하기 전에 운영 체제 업그레이드가 필요한 경우가 있습니다. 운영 체제를 업그레이드할 때 운영 체제의 패키지 관리자 구성에서 GitLab 패키지 소스 URL도 업데이트해야 할 수 있습니다.
패키지 관리자에서 사용 가능한 업그레이드를 찾지 못하지만 업그레이드가 가능해야 하는 경우 GitLab 패키지 리포지터리를 다시 추가합니다. 자세한 내용은 Linux 패키지를 사용하여 GitLab 설치에 대한 정보를 참조하십시오.
향후 GitLab 업그레이드는 업그레이드된 운영 체제에 따라 가져옵니다.
로그에 PG::UndefinedColumn: ERROR:.. 메시지와 함께 500 오류 발생#
업그레이드 후 PG::UndefinedColumn: ERROR:...와 유사한 메시지를 표시하는 로그에서 500 오류가 발생하기 시작하면 다음 중 하나가 원인일 수 있습니다:
- 데이터베이스 마이그레이션이 완료되지 않은 경우. 마이그레이션이 완료될 때까지 기다립니다.
- 데이터베이스 마이그레이션이 완료되었지만 GitLab이 새 스키마를 로드해야 하는 경우. 새 스키마를 로드하려면 GitLab을 재시작합니다.
오류: 내부 GitLab API에 연결하지 못했습니다#
별도의 GitLab Pages 서버에서 Failed to connect to the internal GitLab API 오류가 발생하면 GitLab Pages 관리 문제 해결을 참조하십시오.
서명 확인 중 오류 발생#
apt-get update를 실행할 때 다음 오류가 발생하는 경우:
An error occurred during the signature verification
다음 명령으로 GitLab 패키지 서버의 GPG 키를 업데이트합니다:
[ -x /usr/bin/apt-key ] &&
[ -s /etc/apt/trusted.gpg ] &&
apt-key --keyring /etc/apt/trusted.gpg del packages@gitlab.com
curl --fail --silent --show-error \
--output /etc/apt/trusted.gpg.d/gitlab.asc \
--url "https://packages.gitlab.com/gpg.key"
apt-get update
오류: Command timed out after 3600s#
데이터베이스 스키마 및 데이터 변경(데이터베이스 마이그레이션)을 실행하는 데 1시간 이상 걸려야 하는 경우 업그레이드가 timed out 오류와 함께 실패합니다:
FATAL: Mixlib::ShellOut::CommandTimeout: rails_migration[gitlab-rails] (gitlab::database_migrations line 51)
had an error: Mixlib::ShellOut::CommandTimeout: bash[migrate gitlab-rails database]
(/opt/gitlab/embedded/cookbooks/cache/cookbooks/gitlab/resources/rails_migration.rb line 16)
had an error: Mixlib::ShellOut::CommandTimeout: Command timed out after 3600s:
이 오류를 수정하려면:
-
나머지 데이터베이스 마이그레이션을 실행합니다:
sudo gitlab-rake db:migrate이 명령은 완료하는 데 매우 오랜 시간이 걸릴 수 있습니다. SSH 세션이 끊어지더라도 프로그램이 중단되지 않도록
screen또는 다른 메커니즘을 사용하십시오. -
업그레이드를 완료합니다:
sudo gitlab-ctl reconfigure -
puma및sidekiq서비스를 핫 리로드합니다:sudo gitlab-ctl hup puma sudo gitlab-ctl restart sidekiq
누락된 에셋 파일#
업그레이드 후 GitLab이 다음과 같은 에셋을 올바르게 제공하지 못할 수 있습니다:
- 이미지
- JavaScript
- 스타일시트
GitLab이 500 오류를 생성하거나 웹 UI가 올바르게 렌더링되지 않을 수 있습니다.
로드 밸런서 뒤에 있는 웹 서버 중 하나에서 이 문제가 발생하는 경우 스케일아웃된 GitLab 환경에서 문제가 간헐적으로 발생합니다.
에셋을 재컴파일하는 Rake 작업은 /opt/gitlab/embedded/service/gitlab-rails/public/assets에서 사전 컴파일된 에셋을 제공하는 Linux 패키지 설치에는 적용되지 않습니다.
다음 섹션에서는 가능한 원인과 해결 방법을 설명합니다.
오래된 프로세스#
오래된 프로세스의 가장 가능성 있는 원인은 오래된 Puma 프로세스가 실행 중인 것입니다. 오래된 Puma 프로세스는 클라이언트에게 이전 GitLab 릴리스의 에셋 파일을 요청하도록 지시할 수 있습니다. 파일이 더 이상 존재하지 않으므로 HTTP 404 오류가 반환됩니다.
재부팅은 이러한 오래된 Puma 프로세스가 더 이상 실행되지 않도록 하는 가장 좋은 방법입니다. 또는 다음을 수행할 수 있습니다:
-
Puma를 중지합니다:
gitlab-ctl stop puma -
남아 있는 Puma 프로세스를 확인하고 종료합니다:
ps -ef | egrep 'puma[: ]' kill <processid> -
Puma 프로세스가 실행을 중지했는지
ps로 확인합니다. -
Puma를 시작합니다:
gitlab-ctl start puma
중복 sprockets 파일#
컴파일된 에셋 파일은 각 릴리스에서 고유한 파일 이름을 가집니다. sprockets 파일은 애플리케이션 코드의 파일 이름에서 고유한 파일 이름으로의 매핑을 제공합니다.
/opt/gitlab/embedded/service/gitlab-rails/public/assets/.sprockets-manifest*.json
sprockets 파일이 하나만 있는지 확인하십시오. Rails는 첫 번째 파일을 사용합니다.
Linux 패키지 업그레이드 중에 중복 sprockets 파일 확인이 실행됩니다:
GitLab discovered stale file(s) from the previous install that need to be cleaned up.
The following files need to be removed:
/opt/gitlab/embedded/service/gitlab-rails/public/assets/.sprockets-manifest-e16fdb7dd73cfdd64ed9c2cc0e35718a.json
이를 해결하는 방법은 다음과 같습니다:
-
패키지 업그레이드 출력이 있는 경우 지정된 파일을 제거합니다. 그런 다음 Puma를 재시작합니다:
gitlab-ctl restart puma -
메시지가 없는 경우 재설치를 수행하여 다시 생성합니다. 자세한 내용은 불완전한 설치를 참조하십시오.
-
모든 sprockets 파일을 제거한 다음 불완전한 설치의 지침을 따릅니다.
불완전한 설치#
불완전한 설치가 누락된 에셋 파일 문제의 원인일 수 있습니다.
패키지를 확인하여 이것이 문제인지 확인합니다:
-
Debian 배포판의 경우:
apt-get install debsums debsums -c gitlab-ee -
Red Hat/SUSE (RPM) 배포판의 경우:
rpm -V gitlab-ee
불완전한 설치를 수정하기 위해 패키지를 재설치하려면:
-
설치된 버전을 확인합니다:
-
Debian 배포판의 경우:
apt --installed list gitlab-ee -
Red Hat/SUSE (RPM) 배포판의 경우:
rpm -qa gitlab-ee
-
-
설치된 버전을 지정하여 패키지를 재설치합니다. 예를 들어 14.4.0 Enterprise Edition:
-
Debian 배포판의 경우:
apt-get install --reinstall gitlab-ee=14.4.0-ee.0 -
Red Hat/SUSE (RPM) 배포판의 경우:
yum reinstall gitlab-ee-14.4.0
-
NGINX Gzip 지원 비활성화#
nginx['gzip_enabled']가 비활성화되었는지 확인합니다:
grep gzip /etc/gitlab/gitlab.rb
이로 인해 일부 에셋이 제공되지 않을 수 있습니다. 관련 이슈 중 하나에서 자세히 알아보기.
ActiveRecord::LockWaitTimeout 오류, 절전 후 재시도#
드물게 Sidekiq가 바쁘고 마이그레이션이 변경하려는 테이블을 잠그는 경우가 있습니다. 이 문제를 해결하려면:
-
GitLab을 읽기 전용 모드로 설정합니다.
-
Sidekiq를 중지합니다:
gitlab-ctl stop sidekiq
GPG 서명 확인 오류: 잘못된 GPG 서명#
yum update 또는 dnf update를 실행할 때 다음 오류가 발생할 수 있습니다:
Error: Failed to download metadata for repo 'gitlab_gitlab-ee-source': repomd.xml GPG signature verification error: Bad GPG signature
이 문제를 해결하려면:
dnf clean all을 실행합니다.- 최신 서명 키를 가져옵니다.
- 다시 업그레이드를 시도합니다.
dnf clean all 후에도 오류가 지속되면 영향을 받는 리포지터리 캐시 디렉터리를 수동으로 제거합니다. 이 예에서:
/var/cache/dnf/gitlab_gitlab-ee-source를 제거합니다.dnf makecache를 실행합니다.
