개요
소스코드 관리를 위하여 Gitlab을 Offline 환경에 설치하였습니다.
※ Ubuntu 20.04에서 수행한 내용입니다.
오프라인 환경 설치
절차
인터넷과 연결된 PC에서 Gitlab 의 공식 저장소에서 설치를 위한 패키지 파일(.deb
을 다운로드한 후, 파일을 설치하고자 하는 서버로 복사합니다.
※ 주의 : Architecture (amd
/arm
)와 Ubuntu Version (focal
, bionic
)을 잘 확인하도록 합니다.
복사한 설치 파일은 다음 명령을 사용하여 설치합니다.
sudo dpkg -i gitlab-ee_13.12.3-ee.0_amd64.deb
확인
웹브라우저를 통해 localhost
로 접속합니다.
최초 접속시 관리자(root
) 계정에 대한 암호 설정을 요구합니다. 8자 이상으로 설정하도록 합니다. ex)password@1234
웹서버(nginx)와 연동하기
하나의 서버에서 다른 웹 서비스와 함께 gitlab
을 사용하고자 합니다. gitlab
내부의 nginx 모듈을 비활성화한 후, 외부에 nginx
와 연동되도록 설정하였습니다.
nginx 설치
sudo apt-get install nginx
gitlab 내부 nginx 비활성화
gitlab 설정
# /etc/gitlab/gitlab.rb의 아래 항목을 설정
# 번들 웹서버(gitlab 에 포함된 nginx) 비활성화
nginx['enable'] = false
# web-server사용자의 사용자명 설정
web_server['external_users'] = ['www-data']
# 웹서버를 신뢰할 수 있는 proxy 에 추가하기
gitlab_rails['trusted_proxies'] = [ '127.0.0.1' ]
설정 사항 반영
sudo gitlab-ctl reconfigure
sudo gitlab-crl restart
nginx 설정
GitLab recipes repository에서 다운로드 한 gitlab을 위한 nginx 구성에서 listen 포트번호를 변경하여 사용합니다.
## /etc/nginx/sites-available/gitlab.conf
upstream gitlab-workhorse {
server unix://var/opt/gitlab/gitlab-workhorse/sockets/socket fail_timeout=0;
}
## Normal HTTP host
server {
listen 0.0.0.0:6994 default;
listen [::]:6994 default;
server_name localhost; ## Replace this with something like gitlab.example.com
server_tokens off; ## Don't show the nginx version number, a security best practice
root /opt/gitlab/embedded/service/gitlab-rails/public;
## See app/controllers/application_controller.rb for headers set
## Individual nginx logs for this GitLab vhost
access_log /var/log/nginx/gitlab_access.log;
error_log /var/log/nginx/gitlab_error.log;
location / {
client_max_body_size 0;
gzip off;
## https://github.com/gitlabhq/gitlabhq/issues/694
## Some requests take more than 30 seconds.
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://gitlab-workhorse;
}
}
설정사항 반영
sudo ln -s /etc/nginx/sites-available/gitlab.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo service nginx reload
sudo service nginx restart
동작 확인
http://localhost:6994로 접속하면 gitlab에 접속할 수 있습니다.
상대 주소 사용하기 (서브 디렉터리)
별도의 도메인을 가지고 있지는 않기 때문에 내부망에서 http://localhost/git
형식의 서브 디렉터리 주소를 통해 gitlab에 접속되도록 설정을 변경하였습니다.
gitlab 설정
# /etc/gitlab/gitlab.rb
external_url "http://localhost/git"
설정 사항 반영
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
nginx 설정
/etc/nginx/sites-available/default
에 /git
으로 접속 시 앞서 구성한 설정으로 redirect 되도록 내용을 추가합니다.
# /etc/nginx/sites-available/default
# 하단에 git 주소로 접속시 redirect 하도록 추가
location /git {
client_max_body_size 0;
gzip off;
## https://github.com/gitlabhq/gitlabhq/issues/694
## Some requests take more than 30 seconds.
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:6994
}
설정 사항 반영
sudo ln -s /etc/nginx/sites-available/gitlab.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo service nginx reload
sudo service nginx restart
http://localhost/git
에 접속하여 동작하는 것을 확인할 수 있습니다.
※ 제 경우, 정상 접속이 되기까지 대략 20분 정도 소요되었습니다.
(top
을 통해 모니터링해보면 내부에서 설정을 바꾸는 작업을 하는 것을 확인할 수 있습니다.)
참고
'개발도구 > git' 카테고리의 다른 글
Gitlab Shell runner 를 사용한 C/C++ Application에 대한 CI/CD 구현 (0) | 2021.06.26 |
---|---|
Git - blame (0) | 2019.09.16 |
Ubuntu(18.04)에 GitLab 설치하고 설정하기 (0) | 2018.11.21 |
git log 시각화 옵션과 단축옵션 사용 (0) | 2018.07.06 |
git 원격 저장소 URL 변경하기 (0) | 2018.06.18 |