Ubuntu (amd64)에서 GitLab 설치 및 설정

GitLab


이 문서는 Ubuntu 64비트 (특히 14.04)에 맞춰서 작성되었음.
32비트라면 아래 링크한 설치 문서를 통해 참고할 것.
32비트 우분투라면 이 문서대로 하면 안 됨.

설치

https://about.gitlab.com/downloads/
https://about.gitlab.com/downloads/#ubuntu1404

sudo apt-get install curl openssh-server ca-certificates postfix
// postfix 설치 시 'Internet Site'로 선택

curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
sudo apt-get install gitlab-ce

초기 설정

sudo vi /etc/gitlab/gitlab.rb

// 외부 접속과 관련해서는 다음 부분 알맞게 수정
// external_url 'http://address:port';

sudo service apache2 stop
sudo gitlab-ctl reconfigure
sudo service apache2 start

sudo gitlab-ctl reconfigure

설정된 아이피, 포트로 웹을 통해 접속을 해서 GitLab 사이트가 뜨면 관리자 계정으로 접속 가능.

Username: root
Password: 5iveL!fe

80, 8080, 8081 등의 포트롤 선택할 경우 GitLab 접속 시 502 에러가 뜰 수 있음.
이때 포트 변경 후 reconfigure를 하게 되면 실패하게 되는데 apache2를 내린 뒤 다시 하면 해결 됨.

아파치와 함께 사용

sudo a2enmod proxy_http
sudo vi /etc/apache2/sites-available/gitlab.conf

파일 내용은 다음 내용을 참고하여 알맞게 입력.

<VirtualHost *:80>
	ServerName your_foo_path_here.com
	
	# gitlab passthrough
	ProxyRequests off 
	<Proxy *>
		Order deny,allow
		Allow from all
	</Proxy>
	<Location />
		ProxyPass http://localhost:8080/
		ProxyPassReverse http://localhost:8080/
	</Location>
</VirtualHost>

아파치를 다시 올려주면 확인 가능.

sudo a2ensite gitlab.conf
sudo apachectl configtest
sudo service apache2 reload

GitLab의 설정에서 external_url를 도메인 주소 등으로 조정하고 포트의 외부 접속 차단까지 해주면 깔끔하게 처리 완료.
(localhost나 아이피로 설정하면 드러나는 모든 주소가 저 주소로 표현되어 낭패를 겪을 수 있으므로 주의.)

GitLab Apache proxy 설정 시 주소, 포트 등이 잘못됨

GitLab의 설정 파일 /etc/gitlab/gitlab.rb 의 내용 중

external_url의 포트값을 제거, 그리고

# unicorn['port'] = 8081

의 포트 값을 설정 후 주석을 해제
reconfigure 하면 됨.

하지만 이 경우 메일, 기타 표현되는 모든 주소는 깔끔하게 나오지만, HTTP를 통한 clone이 실패하게 됨.

GitLab HTTP 주소 통한 clone 실패 시

출처

external_url에 다시 포트 설정을 함.

sudo gitlab-ctl reconfigure

/var/opt/gitlab/gitlab-rails/etc/gitlab.yml 파일을 수정 (루트 권한)
(경로 입력 시 자동완성 되지 않음.)

ports 부분을 알맞은 값(80이나 443 등)으로 설정

sudo gitlab-ctl restart

끝.

단, reconfigure 하면 다시 gitlab.yml을 수정 후 restart 해줘야함.

https + apache2 proxy + cloudflare 설정

GitLab의 설정 파일 /etc/gitlab/gitlab.rb 의 내용을 아래와 같이 수정.

external_url 'https://도메인:포트'
gitlab_rails['gitlab_ssh_host'] = '서버아이피'
nginx['listen_https'] = false

gitlab_ssh_host는 cloudflare 때문에 추가한 항목.
만약 불필요하다면 굳이 하지 않아도 된다.

다음에 reconfigure를 수행하고 다시 다음 파일을 수정한다.
/var/opt/gitlab/gitlab-rails/etc/gitlab.yml

port는 443, https는 true.

sudo gitlab-ctl restart

vhost 파일은 80 포트에는 https로 리다이렉트 시켜주거나 하고,
443 포트에는 위에서 external_url로 설정한 http://gitlab도메인:포트로 proxy 돌려야한다.
https가 아님에 주의한다.