GitLab을 재시작하는 방법
Offering: GitLab Self-Managed
GitLab을 설치한 방법에 따라 서비스를 재시작하는 방법이 다릅니다. 모든 방법에서 짧은 다운타임이 예상됩니다. Linux 패키지를 사용하여 GitLab을 설치한 경우 이미 PATH에 gitlab-ctl이 있어야 합니다.
GitLab을 설치한 방법에 따라 서비스를 재시작하는 방법이 다릅니다.
모든 방법에서 짧은 다운타임이 예상됩니다.
Linux 패키지 설치#
Linux 패키지를 사용하여 GitLab을 설치한 경우 이미 PATH에 gitlab-ctl이 있어야 합니다.
gitlab-ctl은 Linux 패키지 설치와 상호 작용하며 GitLab Rails 애플리케이션(Puma)과 다음과 같은 다른 컴포넌트를 재시작하는 데 사용할 수 있습니다:
- GitLab Workhorse
- Sidekiq
- PostgreSQL(번들 버전을 사용하는 경우)
- NGINX(번들 버전을 사용하는 경우)
- Redis(번들 버전을 사용하는 경우)
- Mailroom
- Logrotate
Linux 패키지 설치 재시작#
문서에서 GitLab을 _재시작_하도록 요청받는 경우가 있습니다. Linux 패키지 설치를 재시작하려면 다음을 실행합니다:
sudo gitlab-ctl restart
출력은 다음과 유사해야 합니다:
ok: run: gitlab-workhorse: (pid 11291) 1s
ok: run: logrotate: (pid 11299) 0s
ok: run: mailroom: (pid 11306) 0s
ok: run: nginx: (pid 11309) 0s
ok: run: postgresql: (pid 11316) 1s
ok: run: redis: (pid 11325) 0s
ok: run: sidekiq: (pid 11331) 1s
ok: run: puma: (pid 11338) 0s
컴포넌트를 별도로 재시작하려면 restart 명령에 서비스 이름을 추가하면 됩니다. 예를 들어 only NGINX를 재시작하려면 다음을 실행합니다:
sudo gitlab-ctl restart nginx
GitLab 서비스의 상태를 확인하려면 다음을 실행합니다:
sudo gitlab-ctl status
모든 서비스가 ok: run을 표시하는지 확인합니다.
재시작 중에 컴포넌트가 시간 초과(로그에서 timeout을 찾습니다)되거나 멈추는 경우가 있습니다.
이 경우 gitlab-ctl kill <service>를 사용하여 서비스에 SIGKILL 신호를 보낼 수 있습니다(예: sidekiq). 그 후 재시작이 정상적으로 수행될 것입니다.
최후의 수단으로 GitLab을 재구성해 볼 수 있습니다.
Linux 패키지 설치 재구성#
문서에서 GitLab을 _재구성_하도록 요청받는 경우가 있습니다. 이 방법은 Linux 패키지 설치에만 적용됩니다.
Linux 패키지 설치를 재구성하려면 다음을 실행합니다:
sudo gitlab-ctl reconfigure
GitLab 구성(/etc/gitlab/gitlab.rb)에 변경 사항이 있을 때 재구성이 발생해야 합니다.
gitlab-ctl reconfigure를 실행하면 Linux 패키지 설치를 지원하는 기본 구성 관리 애플리케이션인 Chef가 일부 검사를 실행합니다.
Chef는 디렉터리, 권한, 서비스가 올바른 위치에 있고 작동하는지 확인합니다.
Chef는 구성 파일이 변경된 경우 GitLab 컴포넌트도 재시작합니다.
Chef가 관리하는 /var/opt/gitlab의 파일을 수동으로 편집하면 reconfigure를 실행하면 변경 사항이 되돌려지고 해당 파일에 의존하는 서비스가 재시작됩니다.
직접 컴파일 설치#
공식 설치 가이드를 따라 직접 컴파일 설치한 경우 다음 명령을 실행하여 GitLab을 재시작합니다:
# systemd를 사용하는 시스템의 경우
sudo systemctl restart gitlab.target
# SysV init을 사용하는 시스템의 경우
sudo service gitlab restart
이렇게 하면 Puma, Sidekiq, GitLab Workhorse, 그리고 Mailroom(활성화된 경우)이 재시작됩니다.
Helm 차트 설치#
클라우드 네이티브 Helm 차트를 통해 설치된 전체 GitLab 애플리케이션을 재시작하는 단일 명령은 없습니다. 보통 특정 컴포넌트(예: gitaly, puma, workhorse, 또는 gitlab-shell)를 별도로 재시작하는 것으로 충분합니다. 해당 컴포넌트와 관련된 모든 파드를 삭제하면 됩니다:
kubectl delete pods -l release=<helm release name>,app=<component name>
릴리스 이름은 helm list 명령의 출력에서 얻을 수 있습니다.
Docker 설치#
Docker 설치에서 구성을 변경하면 변경 사항을 적용하려면 다음을 재시작해야 합니다:
- 메인
gitlab컨테이너. - 별도의 컴포넌트 컨테이너.
예를 들어 Sidekiq를 별도의 컨테이너에 배포한 경우 컨테이너를 재시작하려면 다음을 실행합니다:
sudo docker restart gitlab
sudo docker restart sidekiq
