Omnibus 패키지에 대해 알아야 할 사항

대부분의 사용자는 Omnibus 패키지를 사용하여 GitLab을 설치합니다. 개발자로서, 코드를 작성할 때 랩톱에 있는 것과 Omnibus 패키지의 차이를 알고 있는 것이 좋을 수 있습니다.

기본적으로 파일 소유자는 root 사용자

Omnibus 설치에서 레일즈 트리의 모든 파일 (app/, config/ 등)은 root 사용자에 의해 소유되어 있습니다. 이는 설치를 간단하게 만들어주고 추가적인 보안을 제공합니다. Omnibus 재구성 스크립트에는 필요한 곳에서 git 사용자에게만 쓰기 액세스 권한을 부여하는 명령이 포함되어 있습니다.

예를 들어, git 사용자는 log/ 디렉토리와 public/uploads에 쓰기를 할 수 있으며, db/structure.sql 파일을 덮어쓸 수 있습니다.

다른 경우에는, 재구성 스크립트가 파일을 쓰지 않도록 GitLab을 속이기도 합니다. 예를 들어, GitLab은 .secret 파일을 찾지 못하면 생성하여 레일즈 루트에 쓰려고 시도합니다. Omnibus 패키지에서는 재구성이 먼저 .secret 파일을 씁니다. 이렇게 함으로써 GitLab은 더 이상 해당 파일에 쓰려고 시도하지 않습니다.

코드, 데이터 및 로그는 별도의 디렉터리에 있습니다

Omnibus 설계는 코드를 (/opt/gitlab 아래의 읽기 전용), 데이터를 (/var/opt/gitlab 아래의 읽기/쓰기), 그리고 로그를 (/var/log/gitlab 아래의 읽기/쓰기) 별도의 디렉터리에 나누어 놓습니다. 이를 위해 재구성 스크립트는 GitLab 구성 파일에서 사용자 정의 경로를 설정하고, 경로 설정이 없는 경우 심볼릭 링크를 사용합니다.

예를 들어, config/gitlab.yml은 데이터로 처리되어 해당 파일은 심볼릭 링크입니다. public/uploads도 마찬가지입니다. log/ 디렉토리는 Omnibus에 의해 /var/log/gitlab/gitlab-rails로의 심볼릭 링크로 대체됩니다.