웹사이트 검색

GitLab을 나만의 개인 GitHub 클론으로 설정하는 방법


상태: 더 이상 사용되지 않음

이 문서에서는 더 이상 지원되지 않는 Ubuntu 버전에 대해 설명합니다. 현재 Ubuntu 12.04를 실행하는 서버를 운영 중인 경우 지원되는 Ubuntu 버전으로 업그레이드하거나 마이그레이션하는 것이 좋습니다.

  • Ubuntu 14.04로 업그레이드합니다.
  • Ubuntu 14.04에서 Ubuntu 16.04로 업그레이드
  • 서버 데이터를 지원되는 버전으로 마이그레이션

이유:

대신 참조:

소개

Git 및 GitHub는 많은 Git 리포지토리 및 관련 권한을 쉽게 관리하고 관리할 수 있는 멋진 도구입니다. 오픈 소스 소프트웨어를 작성하는 경우에는 훌륭하지만 폐쇄 소스 소프트웨어를 작성하는 경우 코드를 타사 서버에 신뢰하고 싶지 않을 수 있습니다. 그렇다면 제어할 수 없는 서버에서 git 저장소를 호스팅하지 않고 어떻게 Github 또는 BitBucket과 같은 것을 제어, 유연성 및 사용 편의성을 얻을 수 있습니까?

GitLab을 입력하십시오. GitLab은 Git 리포지토리(GitHub)에 간단하지만 강력한 웹 기반 인터페이스를 제공합니다. 귀하만이 자신의 클라우드 서버에서 이를 호스팅하고 적절하다고 판단되는 액세스를 제어할 수 있으며 리포지토리 크기는 서버의 저장 공간에 따라 제한됩니다. 이 튜토리얼은 DigitalOcean VPS를 GitLab 서버로 설정하는 과정을 안내합니다.

참고: 이 튜토리얼에서는 소스에서 GitLab을 설치하는 방법을 설명합니다. 원래 작성 당시에는 이것이 유일한 옵션이었습니다. 오늘날 애플리케이션 이미지를 사용하여 클릭 한 번으로 애플리케이션을 시작하고 실행하는 것이 훨씬 간단해졌습니다.

이 튜토리얼에서는 새로운 Ubuntu 12.04 VPS를 사용하고 있다고 가정합니다. GitLab을 작동시키는 데 필요한 모든 소프트웨어를 설치할 것입니다. 기존 VPS(droplet) 또는 다른 Linux 배포판을 사용하는 경우 특히 호환되지 않는 Python 및 Ruby 버전에서 문제가 발생할 수 있습니다. 시작하기 전에 Ruby 2.0 및 Python 2.7이 설치되어 있는지 확인하십시오.

첫 번째 단계는 몇 가지 필수 패키지를 설치하는 것입니다.

sudo apt-get update
sudo apt-get install -y build-essential zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libreadline-dev libncurses5-dev libffi-dev curl git-core openssh-server redis-server checkinstall libxml2-dev libxslt-dev libcurl4-openssl-dev libicu-dev

Ruby 1.8이 설치되어 있지 않은지 확인하십시오(기본 Ubuntu 12.04 VPS에는 설치되어 있지 않음).

Ruby 2.0을 설치합니다(시간이 걸립니다):

mkdir /tmp/ruby && cd /tmp/ruby
curl --progress ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p247.tar.gz | tar xz
cd ruby-2.0.0-p247
./configure
make
sudo make install

완료되면 다음을 수행하여 Ruby 2(1.8 아님)가 설치되었는지 확인할 수 있습니다.

ruby --version

출력이 아래와 같으면 정상입니다.

ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-linux]

이제 Bundler gem을 설치해야 합니다.

sudo gem install bundler --no-ri --no-rdoc

GitLab에서 사용할 git 사용자를 생성합니다.

sudo adduser --disabled-login --gecos 'GitLab' git

GitLab 셸 설치

다음 명령을 사용하여 GitLab 셸을 다운로드합니다.

cd /home/git
sudo -u git -H git clone https://github.com/gitlabhq/gitlab-shell.git
cd gitlab-shell
sudo -u git -H git checkout v1.7.0
sudo -u git -H cp config.yml.example config.yml

이제 GitLab Shell 1.7.0의 복사본이 있고 예제 config.yml을 사용할 준비가 되었습니다.

이 VPS를 가리키는 도메인 이름이 있는 경우 이 도메인을 사용하려면 시간을 들여 config.yml을 편집해야 합니다.

nano config.yml

상단 근처에 다음과 같은 줄이 있습니다.

gitlab_url: "http://localhost/"

도메인 이름과 일치하도록 http://localhost/ 부분을 변경합니다. 따라서 도메인이 www.YOURDOMAIN.com인 경우 줄은 다음과 같아야 합니다.

gitlab_url: "http://www.YOURDOMAIN.com/"

이제 GitLab 셸 설치 프로그램을 실행할 수 있습니다.

sudo -u git -H ./bin/install

데이터베이스 설정

MySQL 백엔드를 사용하도록 GitLab을 설정합니다. 첫 번째 단계는 아래 명령으로 MySQL을 설치하는 것입니다. 설치 프로세스 중에 MySQL 루트 암호를 설정하라는 메시지가 표시됩니다. 원하는 대로 설정하되 다음 단계에서 필요하므로 기록해 두십시오.

sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev

이제 MySQL이 설치되었고 루트 암호가 마지막 단계에서 선택한 값으로 설정되었습니다. 이제 GitLab에서 사용할 MySQL 사용자를 생성해야 합니다. 이를 위해 먼저 필요한 SQL 쿼리를 임시 파일에 저장합니다. 유형:

nano tempfile

첫 번째 줄의 $password를 실제 암호로 변경하여 다음을 붙여넣습니다. GitLab의 데이터베이스 비밀번호가 될 것이므로 이 비밀번호를 기억해 두십시오.

CREATE USER 'gitlab'@'localhost' IDENTIFIED BY '$password';
CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
GRANT SELECT, LOCK TABLES, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `gitlabhq_production`.* TO 'gitlab'@'localhost';

이제 파일을 저장하고 다음 명령을 실행하여(프롬프트의 첫 번째 단계에서 MySQL 루트 암호 입력) MySQL이 쿼리를 실행하도록 합니다.

cat tempfile | mysql -u root -p

MySQL 사용자가 성공적으로 생성되었는지 확인하려면 gitlab 사용자를 사용하여 mysql에 로그인하십시오.

mysql -u gitlab -p

다음과 같은 텍스트가 표시되는 경우:

mysql>

그런 다음 모든 것이 성공적으로 작동했습니다. 계속해서 다음을 입력하십시오.

exit;

mysql> 프롬프트에서 MySQL을 종료하고 암호가 포함된 tempfile 파일을 삭제합니다.

rm tempfile

이제 GitLab을 성공적으로 설치하기 위한 모든 구성이 완료되었으므로 설치를 진행하겠습니다.

cd /home/git
sudo -u git -H git clone https://github.com/gitlabhq/gitlabhq.git gitlab
cd /home/git/gitlab
sudo -u git -H git checkout 6-0-stable
sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml

GitLab 셸 설정에서와 마찬가지로 VPS용으로 구성된 도메인이 있는 경우 해당 도메인을 사용하려면 config.yml을 편집해야 합니다.

sudo -u git -H nano config/gitlab.yml

파일 상단 근처에 다음과 같은 텍스트 블록이 있어야 합니다.

  gitlab:
## Web server settings
host: localhost
port: 80
https: false

도메인 이름과 일치하도록 host: 항목을 변경합니다. 도메인이 www.YOURDOMAIN.com인 경우 다음과 같이 표시됩니다.

  gitlab:
## Web server settings
host: www.YOURDOMAIN.com
port: 80
https: false

또한 일부 Linux 파일 권한을 설정하고 git 사용자의 Git 구성을 구성하고 git 사용자를 위한 일부 GitLab 구성 및 디렉터리를 설정해 보겠습니다.

cd /home/git/gitlab
sudo chown -R git log/
sudo chown -R git tmp/
sudo chmod -R u+rwX  log/
sudo chmod -R u+rwX  tmp/
sudo -u git -H mkdir /home/git/gitlab-satellites
sudo -u git -H mkdir tmp/pids/
sudo -u git -H mkdir tmp/sockets/
sudo chmod -R u+rwX  tmp/pids/
sudo chmod -R u+rwX  tmp/sockets/
sudo -u git -H mkdir public/uploads
sudo chmod -R u+rwX  public/uploads
sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb
sudo -u git -H git config --global user.name "GitLab"
sudo -u git -H git config --global user.email "gitlab@localhost"
sudo -u git -H git config --global core.autocrlf input
sudo -u git cp config/database.yml.mysql config/database.yml

이제 이전에 설정한 gitlab MySQL 사용자를 사용하도록 GitLab에 지시해야 합니다. 이렇게 하려면 config/database.yml 파일을 편집합니다.

sudo -u git -H nano config/database.yml

상단 근처에는 사용자 이름암호 항목이 포함된 production: 섹션이 있습니다. 기본적으로 다음과 같이 표시됩니다.

production:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: gitlabhq_production
  pool: 10
  username: root
  password: "secure password"

이전에 설정한 GitLab 데이터베이스 사용자와 일치하도록 usernamepassword 항목을 변경합니다. 따라서 GitLab MySQL 사용자에 사용한 비밀번호가 $password인 경우 편집된 파일은 다음과 같아야 합니다.

production:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: gitlabhq_production
  pool: 10
  username: gitlab
  password: "$password"

파일을 저장하면 서버의 다른 사용자가 암호를 볼 수 없도록 보안을 설정합니다.

sudo -u git -H chmod o-rwx config/database.yml

몇 가지 필요한 gem을 더 설치해 보겠습니다(이 단계는 시간이 걸릴 수 있습니다).

cd /home/git/gitlab
sudo gem install charlock_holmes --version '0.6.9.4'
sudo -u git -H bundle install --deployment --without development test postgres aws

그리고 최종 설정을 실행합니다(계속할지 묻는 메시지가 표시되면 yes 입력).

sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production

이 작업이 끝나면 많은 정보가 화면에 출력되고 마지막에는 관리자 계정이 생성됨이 표시되고 관리자 자격 증명이 제공됩니다. 다음과 같아야 합니다.

Administrator account created:

login.........admin@local.host
password......5iveL!fe

이제 서버가 부팅될 때마다 시작되도록 GitLab을 설정해 보겠습니다.

sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
sudo chmod +x /etc/init.d/gitlab
sudo update-rc.d gitlab defaults 21

다음을 실행하여 모든 것이 제대로 작동하는지 확인하십시오.

sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production

오류 메시지가 없고 해당 명령으로 출력된 데이터가 올바르게 보이면 GitLab 설치가 작동하는 것입니다. 거의 끝났다! 다음 명령으로 GitLab을 시작합니다.

sudo service gitlab start

NGINX 설정

GitLab은 기본적으로 nginx 웹 서버와 함께 작동합니다. Apache와 같은 자체 웹 서버가 이미 설정되어 있으면 이 단계가 적용되지 않습니다. 다른 웹 서버와 함께 GitLab을 구성하는 방법에 대한 정보는 이 레시피를 확인하세요. 그렇지 않으면 다음 지침에 따라 GitLab과 함께 작동하도록 nginx를 설치 및 구성합니다.

sudo apt-get -y install nginx
cd /home/git/gitlab
sudo cp lib/support/nginx/gitlab /etc/nginx/sites-available/gitlab
sudo ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab

도메인 이름을 사용하도록 /etc/nginx/sites-available/gitlab을 편집합니다.

sudo nano /etc/nginx/sites-available/gitlab

파일 상단에서 조금 더 가면 YOUR_SERVER_FQDN으로 설정된 server_name 항목이 표시됩니다. 이전 단계에서와 같이 YOUR_SERVER_FQDN을 도메인 이름으로 바꿉니다. 원본 파일은 다음과 같습니다.

server {
  listen *:80 default_server;     # e.g., listen 192.168.1.1:80; In most cases *:80 is a good idea
  server_name YOUR_SERVER_FQDN;       #

도메인이 www.YOURDOMAIN.com인 경우 다음과 같이 변경해야 합니다.

server {
  listen *:80 default_server;         # e.g., listen 192.168.1.1:80; In most cases *:80 is a good idea
  server_name www.YOURDOMAIN.com;     #

그리고 nginx를 다시 시작합니다.

sudo service nginx restart

짜잔! 끝났습니다. 위의 관리자 로그인 및 비밀번호(기본 사용자: admin@local.host, 패스: 5iveL!fe)를 사용하여 웹 브라우저를 통해 GitLab에 연결하고 GitLab을 즐기십시오.

512MB VPS를 사용하는 경우 GitLab의 메모리 요구 사항으로 인해 502 Bad Gateway 오류가 발생할 가능성이 큽니다. 그렇다면 계속 읽으십시오…

문제 해결

502 잘못된 게이트웨이 오류

완벽한 세상에서 GitLab은 이제 완벽하게 실행될 것입니다. 불행히도 GitLab은 메모리 요구 사항이 놀라울 정도로 높기 때문에 512MB VPS에서는 처음 로그인할 때 종종 질식합니다. 이는 GitLab이 첫 번째 로그인에서 많은 메모리를 사용하기 때문입니다. Ubuntu 12.04 VPS에는 메모리가 초과되면 스왑 공간이 없기 때문에 GitLab의 일부가 종료됩니다. 말할 필요도 없이 GitLab의 일부가 예기치 않게 종료되면 GitLab이 제대로 실행되지 않습니다.

가장 쉬운 해결책은 최소한 첫 번째 로그인을 위해 VPS에 더 많은 메모리를 할당하는 것입니다. 이를 원하지 않는 경우 다른 옵션은 스왑 공간을 늘리는 것입니다. DigitalOcean은 이미 여기에서 이 작업을 수행하는 방법에 대한 전체 자습서를 제공합니다(512MB 이상의 스왑을 추가하는 것이 좋지만). 빠른 수정은 다음을 실행하는 것입니다.

sudo dd if=/dev/zero of=/swapfile bs=1024 count=1024k
sudo mkswap /swapfile
sudo swapon /swapfile

이제 스왑 파일이 실행 중이고 활성화되어 있지만 부팅할 때마다 활성화되도록 설정하려면 /etc/fstab를 편집해야 합니다.

sudo nano /etc/fstab

파일 맨 아래에 다음을 붙여넣습니다.

/swapfile       none    swap    sw      0       0 

이제 VPS를 다시 시작하십시오.

sudo restart

VPS가 재부팅될 때까지 1~2분 정도 기다린 다음 GitLab을 다시 시도하십시오. 처음에 작동하지 않는 경우 Bad Gateway 페이지를 몇 번 새로 고치면 곧 GitLab 로그인 페이지가 표시됩니다.

참조:

  1. 여기에서 훌륭한 Gitlab 설치 문서를 확인하세요.
  2. 그리고 502 잘못된 게이트웨이 오류에 대한 정보는 이 스레드를 확인하세요.

제출자: Nik van der Ploeg