회사에서 Gerrit~GitHub 연계를 위해서 방법을 찾던 中

부서원들이 GitHub Plugin이라는 것이 있다는 것을 알아냈는데... 좀 문제가 있었다.


바이너리가 아니라 빌드를 해서 사용해야한다는 문제인데...

더욱 더 큰 문제는... 빌드가 쉽지는 않다는 사태가...


기본 가이드 링크는 아래와 같다.

   - https://gerrit.googlesource.com/plugins/github/+/refs/heads/stable-2.12/README.md


언제나 그렇지만... 시키는대로 따라할 수가 없어서 문제이지...



[ Action ]


참고할 정보가 있는 기준(?) 레퍼런스...


https://gerrit-review.googlesource.com/Documentation/dev-buck.html

링크가 깨졌다.


그렇지만, 포기하지 않는다!!!

https://review.openstack.org/Documentation/dev-buck.html

여기에서 확인할 수 있었다.



① Git

   - 소스들을 받아오기 위해서는 기본적으로 Git이 필요하다.


$ sudo apt-get install git


② JDK

   - Gerrit은 기본적으로 Java 기반이기에... 가이드에는 JDK7이 필요하다고 되어있다.

   - 무시하고 JDK8로 환경을 맞춰서 했다가 다 망했다..

   - 무조건 JDK7 환경으로 진행을 해라!!!


③ Ant

   - Buck 이라는 빌드 도구를 빌드하기 위해서는 Ant가 필요하다.

   - 응!? Unix is not Unix ?


$ sudo apt-get install ant


④ Gerrit download

   - Gerrit 빌드할 준비를 위해 미리 소스코드를 내려 받는다.

   - 이번 빌드는 2.10 버전을 기준으로 할 것이다.

     (실제로 2.10 버전을 보면 2.10.7 까지 있는데, 우선은 가이드에 있는 2.10.2 버전으로 해보겠다)


$ cd /srv/workspace

$ git clone --recursive https://gerrit.googlesource.com/gerrit

$ cd gerrit

$ git reset --hard v2.10.2



⑤ Buck

   - 이번에 처음 들어본 빌드 도구이다. Buck ?!

   - Facebook 에서 만들었고, 오픈소스로 공개한 것인가 보다.

      . https://buckbuild.com/

      . https://github.com/facebook/buck


$ cd /srv/workspace

$ git clone https://github.com/facebook/buck

$ cd buck

$ git checkout $(cat ../gerrit/.buckversion)

$ ant

$ export PATH=$PATH:/srv/workspace/buck/bin/



⑥ Gerrit Build

   - 이제 Buck으로 Gerrit을 빌드해보자. 안해도 된다. 그냥 해보기.


$ cd /srv/workspace/gerrit

$ buck build gerrit



⑦ maven

   - 뒤에 것들을 진행하기 위해서 이것도 필요하다.


$ sudo apt-get install maven



⑧ GitHub API

   - 이것도 필요하단다...


$ cd /srv/workspace

$ git clone https://github.com/lucamilanesio/github-api.git

$ cd github-api/

$ mvn install -DskipTests=true



⑨ singleusergroup plugin

   - 또 필요한거 빌드 하자.


$ cd /srv/workspace/gerrit

$ cd ./plugins/singleusergroup

$ git reset --hard v2.10.2

$ cd /srv/workspace/gerrit

$ buck build plugins/singleusergroup/



⑩ github plugin

   - 이제 본게임으로 들어가자

   - 최신 버전으로는 빌드가 안되어 알아낸 방법..... 2.10 버전으로 하면 된다.


$ cd /srv/workspace

$ git clone https://gerrit.googlesource.com/plugins/github

$ cd github

$ git checkout -b stabe-2.10 origin/stable-2.10

$ mvn install


...


[INFO] ------------------------------------------------------------------------

[INFO] Reactor Summary:

[INFO] 

[INFO] Gerrit Code Review - GitHub integration ........... SUCCESS [2.338s]

[INFO] Gerrit Code Review - GitHub OAuth login ........... SUCCESS [22.009s]

[INFO] Gerrit Code Review - GitHub plugin ................ SUCCESS [18.869s]

[INFO] ------------------------------------------------------------------------

[INFO] BUILD SUCCESS

[INFO] ------------------------------------------------------------------------

[INFO] Total time: 44.113s

[INFO] Finished at: Mon Mar 27 00:09:03 KST 2017

[INFO] Final Memory: 31M/91M

[INFO] ------------------------------------------------------------------------


빌드까지는 성공~

이후 설치 및 셋팅은 다음 기회에~^^


github-oauth-2.10.3.jar

original-github-oauth-2.10.3.jar

github-plugin-2.10.3.jar

original-github-plugin-2.10.3.jar

github-api-1.69.jar

github-api-1.69-SNAPSHOT.jar

singlegroup.tar.gz

singlegroup.tar.gz

singlegroup.tar.gz

github-oauth-2.13.jar

original-github-oauth-2.13.jar

github-plugin-2.13.jar

original-github-plugin-2.13.jar

singleusergroup.tar.gz

github-api-1.69-SNAPSHOT.jar

singlegroup.tar.gz


반응형


Git에 대해서 공부하다보면, 조금 답답한 것 중 하나가 용어 정리를 해주지를 않는다는 점이다.
그런 것 중 하나가 바로 [ Fast-Forward ]라는 용어다.


이 블로그에 포스팅하고 있는 내용들 모두 마찬가지이지만,
특히 이번 블로그는 절대적으로 개인적인 의견과 함께 개인적으로 정리한 내용이다.
즉, 완전 거짓말일 수 있다는 말이다. 꼭 참고하길 바란다!!! (책임지지 않아요~)



1. 합치자고~

     - Git에서 이루어지는 merge 방법은 다음의 세가지 타입이 있다.
          ▷ 3-way merge
          ▷ fast-forward merge
          ▷ cherry-pick

     - 명령어로 따지면 다음 3가지 방법이 있다.
          ▷ merge
          ▷ rebase
          ▷ cherry-pick



2. 명령어와 방식의 구분

     - 각 명령어와 merge 방식의 관계는 다음과 같다.

  merge rebase cherry-pick
3-way merge O X X
fast-forward merge O O X
cherry-pick X X O

 


     - 즉, merge 명령을 통해서는 상황에 따라 "3-way merge"가 이루어질 수도 있고,
       "fast-forward merge"가 이루어질 수도 있다.

     - rebase 명령의 경우에는 기본적으로 "fast-forward merge"가 이루어진다.
     - cherry-pick 명령은 "cherry-pick"을 위한 명령이다.




3. fast-forward merge

     - fast-forward의 본래 뜻은...!? 앞으로 감다!!! 즉, FF 버튼이나 FFWD 버튼이 바로 이것이다.
     - fast-forward merge가 이루어지는 경우는 두 가지이다.

          ▷ merge 상황에서 merge를 하는 branch에서 별도의 commit이 없는 경우
          ▷ rebase를 수행하는 경우

 


4. 3-way merge

     - 일반적인 merge 상황에서 git은 기본적으로 3-way merge를 수행한다. 
     - 양쪽 브랜치에 commit이 있는 상황에서 merge를 하면 merge commit과 함께 합쳐지는 것이다.

 

5. cherry-pick merge

     - 특정 commit만을 반영하고 싶은 경우이다. 
     - 양쪽 브랜치에 commit이 있는 상황에서 merge를 하면 merge commit과 함께 합쳐지는 것이다.

 

정말 옛날에 작성해놓고 keep 하고 있는 포스팅인데...

자세한 설명은 다음 기회에 하기로 하고... 그냥 발행한다 ^^

(잠자고 있는 포스트 발행하기 프로젝트 중이라서... ㅋㅋ)

 

반응형

 

간단하게 Git 서버가 필요해서 떠오른 GitLab을 어떻게 하면 한방에 설치할 수 있을지 연구하다가... ^^

최종적으로는 GitLab을 Docker 기반으로 실행을 하고 싶어서 이것 저것 알아보았다.

 

 

그런데, 이번에도 느낀 것이지만 개발환경(Development Environment)과 관련된 도구들은

막상 알게되면 그리 어렵지도 않고 별것도 아닌데 그 조금을 알아내기가 쉽지 않다.

 

Docker도 그렇고 GitLab도 그런 것 같다.

막상 알게 되면 그닥 어려운 애들이 아닌데 내가 필요한 것들을 알아내기가 쉽지는 않다.

 

내가 블로그를 시작한 이유처럼... 내가 알아낸 것들을 최대한 쉽게 많은 사람들에게 공유! 공유! 파이팅!!

 

 

 

 

1. Docker 설치하기

   - http://www.whatwant.com/825

 

 

 

2. 기존 Server SW 제거

   - 포트 충돌 방지를 위해서 기존에 해당 포트들을 사용하는 것들이 있으면 제거(?) 하자

   - 기본 포트는 [ 443, 80, 22 ] 이다.

   - 필자는 22번 SSh Server가 있어서 삭제를 진행했었다.

 

$ sudo apt-get purge openssh-server

 

 

 

3. Docker 실행

   - docker 설치 잘 되어있고, 포트 충돌날 것들 없앴고... 준비는 모두 끝났다.

   - 그냥 실행 확 해버리면 알아서 이미지 내려받고 알아서 잘 실행한다.

 

$ sudo docker run --detach --hostname gitlab.example.com --publish 443:443 --publish 80:80 --publish 22:22 --name gitlab --restart always --volume /srv/gitlab/config:/etc/gitlab --volume /srv/gitlab/logs:/var/log/gitlab --volume /srv/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:latest

 

   - 위에 작성된 옵션들을 잘 해석해보기 바란다. GitLab을 운영하기 위한 많은 것들이 녹아들어 있다.

   - 아래와 같은 옵션도 넣을 수 있다는 것을 참고하기 바란다(필요에 따라).

 

-e 'GITLAB_SSH_PORT=10022' -p 10022:22 -v /var/run/docker.sock:/run/docker.sock -v $(which docker):/bin/docker -v /home/swc/gitlab/data:/home/git/data -e 'GITLAB_HOST=git.site.net' -e 'GITLAP_TIMEZONE=UTC+9' -e 'GITLAB_EMAIL=git@git.site.net' -e 'SMTP_ENABLED=true' -e 'SMTP_DOMAIN=site.net' -e 'SMTP_HOST=123.234.345.456' -e 'SMTP_PORT=25' -e 'SMTP_OPENSSL_VERIFY_MODE=none' -e 'SMTP_AUTENTICATION=none' -e 'LDAP_ENABLED=true' -e 'LDAP_HOST=ldap.site.net' -e 'LDAP_PORT=636' -e 'LDAP_UID=uid' -e 'LDAP_METHOD=ssl' -e 'LDAP_BASE=ou=People,dc=swc,dc=site,dc=net' gitlab/gitlab-ce:latest

 

 

 

4. Login

   - http://localhost  접속하면 된다.

      • username: root

      • password: 5iveL!fe

 

 

 

파이팅!

 

반응형

Global 적으로 가장 많은 사용자를 갖고 있다는 Linux Mint 환경에서
무언가를 테스트해보기 위해서 작업을 하다가...

갑작스레 최신 Git을 설치해보고 싶어서 진행을 해봤다.

 


1. 필수 패키지 설치
   - Linux Mint 라고 해도 결국은 Debian 기반의 Ubuntu 친구들이다. 다를 것이 없다.


 

$ sudo apt-get install make libcurl4-gnutls-dev libexpat1-dev gettext zlib1g-dev libssl-dev asciidoc xmlto autoconf

 

 

2. 다운로드

$ cd /srv/install/git

$ wget http://www.kernel.org/pub/software/scm/git/git-2.1.2.tar.gz
$ tar zxvf git-2.1.2.tar.gz
$ cd git-2.1.2/


3. 빌드

$ make configure
$ ./configure --prefix=/usr/local
$ make all doc
$ sudo make install install-doc install-html

   - 설치가 잘 되었는지 확인을 해보기 위해서 버전 확인을 해보자.

$ git --version



GIT 자동완성을 지원하기 위해서는...

   - https://www.whatwant.com/entry/Git-명령어-자동-완성-기능-Source-설치-時

 


우리 모두 Git으로 행복한 형상관리를...



반응형

오랜만에 새로운 Ubuntu 버전과 Git 버전을 가지고 설치를 진행해보았다.
달라진 것은 없다.



1. 필수 패키지 설치

$ sudo apt-get install make libcurl4-gnutls-dev libexpat1-dev gettext zlib1g-dev libssl-dev asciidoc xmlto autoconf

 

 

2. 다운로드

$ cd /srv/install/git

$ wget http://www.kernel.org/pub/software/scm/git/git-2.1.0.tar.gz
$ tar zxvf git-2.1.0.tar.gz
$ cd git-2.1.0/


3. 빌드

$ make configure
$ ./configure --prefix=/usr/local
$ make all doc
$ sudo make install install-doc install-html

   - 설치가 잘 되었는지 확인을 해보기 위해서 버전 확인을 해보자.

$ git --version



GIT 자동완성을 지원하기 위해서는...

   - http://whatwant.tistory.com/478


우리 모두 Git으로 행복한 형상관리를...

반응형


1. JDK 설치

   - http://whatwant.tistory.com/660


2. PostgreSQL 설치

$ sudo apt-get install postgresql



3. Apache

   - Proxy 기능이 필요하므로 해야할 일이 조금 더 있다.

$ sudo apt-get install apache2 libapache2-mod-proxy-html

$ sudo a2enmod proxy
$ sudo a2enmod proxy_http
$ sudo service apache2 restart



4. Git

   - http://whatwant.tistory.com/658


5. Download

   - 최근 사이트가 변경되면서... 웹사이트에서 다운로드 페이지 등의 호환성에서 IE는 잘 안되는 경우가 있다.
   - 다운로드는 잘 되니 그냥 아래와 같이 수행하면 된다.



6. DB 계정 및 db 생성

$ sudo su - postgres

$ createuser -A -D -P -E gerrit2
$ createdb -E UTF-8 -O gerrit2 reviewdb

$ exit


7. Gerrit 운영 계정 생성

$ cd /srv/install/gerrit

$ sudo adduser gerrit2
$ sudo chown -R gerrit2:gerrit2 /srv/install/gerrit/


8. 설치하기

$ sudo su gerrit2
$ cd /srv/install/gerrit

$ java -jar ./gerrit-2.8.4.war init -d /srv/install/gerrit/workspace

 

*** Gerrit Code Review 2.8.4
***

Create '/srv/install/gerrit/workspace' [Y/n]?  (Enter)

*** Git Repositories
***

Location of Git repositories   [git]: repositories

*** SQL Database
***

Database server type           [h2]: postgresql
Server hostname                [localhost]: (Enter)
Server port                    [(POSTGRESQL default)]: (Enter)
Database name                  [reviewdb]: (Enter)
Database username              [gerrit2]: (Enter)
gerrit2's password             : (passwd)
              confirm password : (passwd)

*** User Authentication
***

Authentication method          [OPENID/?]: http
Get username from custom HTTP header [y/N]? (Enter)
SSO logout URL                 : (Enter)

*** Email Delivery
***

SMTP server hostname           [localhost]: smtp.gmail.com
SMTP server port               [(default)]: 587
SMTP encryption                [NONE/?]: (Enter)
SMTP username                  [gerrit2]:  xxx@gmail.com
   @gmail.com's password  : (passwd)
              confirm password : (passwd)

*** Container Process
***

Run as                         [gerrit2]: (Enter)
Java runtime                   [/usr/local/java/jdk1.7.0_55/jre]: (Enter)
Copy gerrit-2.8.war to /srv/install/gerrit/workspace/bin/gerrit.war [Y/n]? (Enter)
Copying gerrit-2.8.war to /srv/install/gerrit/workspace/bin/gerrit.war

*** SSH Daemon
***

Listen on address              [*]: (Enter)
Listen on port                 [29418]: (Enter)

Gerrit Code Review is not shipped with Bouncy Castle Crypto v144
  If available, Gerrit can take advantage of features
  in the library, but will also function without it.
Download and install it now [Y/n]? (Enter)
Downloading http://www.bouncycastle.org/download/bcprov-jdk16-144.jar ... OK
Checksum bcprov-jdk16-144.jar OK
Generating SSH host key ... rsa... dsa... done

*** HTTP Daemon
***

Behind reverse proxy           [y/N]? (Enter)
Use SSL (https://)             [y/N]? (Enter)
Listen on address              [*]: (Enter)
Listen on port                 [8080]: (Enter)
Canonical URL                  [http://chani-VBox:8080/]: http://localhost:8080/

*** Plugins
***

Install plugin reviewnotes version v2.8.4 [y/N]? y
Install plugin download-commands version v2.8.4 [y/N]? y
Install plugin replication version v2.8.4 [y/N]? y
Install plugin commit-message-length-validator version v2.8.4 [y/N]? y

Initialized /srv/install/gerrit/workspace
Executing /srv/install/gerrit/workspace/bin/gerrit.sh start
Starting Gerrit Code Review: OK
Waiting for server on localhost:8080 ... OK
Opening http://localhost:8080/#/admin/projects/ ...No protocol specified
No protocol specified
OK

     - 나중에 설정 내용은 변경할 수 있으므로 최대한 기본값으로 정했다.


9. Apache Configuration

$ sudo su gerrit2

$ htpasswd -c /srv/install/gerrit/workspace/etc/passwords "admin"

$ exit

 

$ sudo nano /etc/apache2/sites-available/gerrit2

 

<VirtualHost *:8080>
        ServerName localhost

        ProxyRequests Off
        ProxyVia Off
        ProxyPreserveHost On

        <Proxy *>
                Order deny,allow
                Allow from all
        </Proxy>

        <Location /login/>
                AuthType Basic
                AuthName "Gerrit Code Review"
                Require valid-user
                AuthUserFile /srv/install/gerrit/workspace/etc/passwords
        </Location>

        AllowEncodedSlashes On
        ProxyPass / http://127.0.0.1:8081/ nocanon

</VirtualHost>


     - 추가로 sites-enabled 디렉토리에 동적링크도 만들어주자.

$ cd /etc/apache2/sites-enabled
$ sudo ln -s ../sites-available/gerrit2 ./001-gerrit2


     - 위와 같이 설정을 하였으면 Apache의 port 설정에도 추가해줘야 한다.

$ sudo nano /etc/apache2/ports.conf


NameVirtualHost *:8080
Listen 8080


     - 위와 같이 8081 포트에 대해서 설정을 추가로 적어주면 된다.

$ sudo service apache2 restart

 
     - gerrit 의 설정값도 다시 한 번 살펴봐야 한다.

$ sudo su gerrit2

$ nano /srv/install/gerrit/workspace/etc/gerrit.config


[gerrit]
        basePath = repositories
        canonicalWebUrl = http://localhost:8080/
[database]
        type = postgresql
        hostname = localhost
        database = reviewdb
        username = gerrit2
[auth]
        type = HTTP
[sendemail]
        smtpServer = smtp.gmail.com
        smtpServerPort = 587
        smtpUser = xxx@gmail.com
[container]
        user = gerrit2
        javaHome = /usr/local/java/jdk1.7.0_55/jre
[sshd]
        listenAddress = *:29418
[httpd]
        listenUrl = proxy-http://127.0.0.1:8081/
[cache]
        directory = cache

 

$ sudo su gerrit2

$ cd /srv/install/gerrit/workspace/
$ ./bin/gerrit.sh restart


     - [ http://localhost:8080 ] 주소로 접속을 하면 위와 같이 이름과 암호를 물어본다.
     - 앞에서 "htpasswd"로 만든 계정을 이용해서 로그인하면 된다.


     - 드디어 길고 긴 과정을 거쳐서 gerrit의 화면이 나왔다.



9. 후기

     - 최근 시스템을 구축하면서 Gerrit에 대해서 활용팁(?) 등을 많이 얻었는데,
       집에서 테스트 해보기 위해 우선 예전 설치 방식으로 설치를 다시 한 번 진행해보았다.
     - 앞으로 Gerrit과 관련된 다른 내용을 추가해보도록 하겠다.

반응형

GitLab에서는 E-mail을 기반으로 사용자 관리가 이루어진다.

특히 새로운 사용자를 추가할 때 패스워드를 바로 설정하지 않는다.
임시 패스워드를 등록된 이메일 주소로 발송을 해주게 된다.

이 때, GitLab에 smtp 셋팅이 안되어 있으면 난감하다.
그래서 일단 급한대로 Gmail을 smtp로 셋팅하는 방법을 찾아보았다.

물론 Gitlab에서는 친절히 직접 설명을 해주고 있다.
   - https://gist.github.com/xavierjurado/3138813

$ sudo su - git
$ cd /home/git/gitlab/
$ nano ./config/environments/production.rb

다음의 내용을 수정 및 추가하자.

  config.action_mailer.delivery_method = :smtp
  config.action_mailer.perform_deliveries = true
  config.action_mailer.raise_delivery_errors = true

  config.action_mailer.smtp_settings = {
     :address              => "smtp.gmail.com",
     :port                 => 587,
     :domain               => 'gmail.com',
     :user_name            => 'whatwant@gmail.com',
     :password             => 'xxx',
     :authentication       =>  :plain,
     :enable_starttls_auto => true
  }

발신자 정보도 셋팅을 해야한다.

$ nano ./config/gitlab.yml

    ## Email settings
    # Email address used in the "From" field in mails sent by GitLab
    email_from: whatwant@gmail.com


이제 GitLab만 재시작 하면 된다.

$ exit
$ sudo /etc/init.d/gitlab restart



이렇게 하면 이메일 발송 기능은 잘 동작하지만,
서버 주소 등에 있어서는 집에서 혼자 설치해서 사용하기에 좀 신경써야 하는 점은 귀찮다.

반응형

GitHub는 무료로 서비스를 해주지만, 해당 서비스를 내 서버에서 운영할 수는 없다.
물론 돈을 주면 가능하긴 하다지만... 저렴한 인생으로써는...^^

그래서 찾아보던 중 오픈소스 프로젝트로 진행중인 GitLab을 알게 되었다.
설치 과정이 단순하진 않지만... 나만의 GitHub 구축을 위해서 !!!


공식 홈페이지에 설치 가이드가 너무나 잘 나와 있다.
   - https://github.com/gitlabhq/gitlabhq/blob/master/doc/install/installation.md


앞에서 작성한 포스트를 참고해도 좋다.
   - http://whatwant.tistory.com/332



01. 필수 패키지 설치

$ sudo apt-get install build-essential zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libreadline-dev libncurses5-dev libffi-dev curl openssh-server redis-server checkinstall libxml2-dev libxslt-dev libcurl4-openssl-dev libicu-dev logrotate python-docutils



02. Git 설치

   - http://whatwant.tistory.com/658


03. Ruby 설치

$ sudo su -
$ curl -L https://get.rvm.io | sudo bash -s stable
$ source /etc/profile
$ rvm install 2.0.0
$ rvm use 2.0.0
$ rvm --default use 2.0.0 

 

$ nano /etc/environment

 

PATH="......:/usr/local/rvm/bin"

 

$ gem install bundler --no-ri --no-rdoc



04. 계정 만들기

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



05. GitLab-Shell 설치하기

$ cd /home/git

$ sudo -u git -H git clone http://github.com/gitlabhq/gitlab-shell.git -b v1.7.9

$ cd gitlab-shell

$ sudo -u git -H cp config.yml.example config.yml
$ sudo -u git -H nano config.yml

 

...
gitlab_url: "http://localhost/"
...

 

$ sudo su - git
$ cd /home/git/gitlab-shell
$ ./bin/install



08. Database

   - 필자의 취향으로 일단 PostgreSQL로 진행해보자.

$ sudo apt-get install postgresql libpq-dev

$ sudo -u postgres psql -d template1

 

# CREATE ROLE git LOGIN ENCRYPTED PASSWORD 'password' NOINHERIT VALID UNTIL 'infinity';
# CREATE DATABASE gitlabhq_production OWNER git;
# \q


   - 접속이 잘 되는지 테스트 함 해보자.

$ sudo -u git -H psql -d gitlabhq_production



09. GitLab 다운로드

$ cd /home/git
$ sudo -u git -H git clone https://github.com/gitlabhq/gitlabhq.git -b 6-3-stable gitlab

 


10. GitLab 환경 설정

$ cd /home/git/gitlab

$ sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml


   - 도메인을 지정하고 싶으면 다음처럼 수정 작업을 하면 된다.

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


...
   host: localhost
...


   - 권한 조정이 필요하다.

$ sudo chown -R git log/
$ sudo chown -R git tmp/
$ sudo chmod -R u+rwX  log/
$ sudo chmod -R u+rwX  tmp/


   - satellites를 위한 디렉토리를 하나 생성하고, 필요한 디렉토리를 만들자.

$ sudo -u git -H mkdir /home/git/gitlab-satellites


   - 필요한 디렉토리를 추가로 더 만들자.

$ cd /home/git/gitlab

$ 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


   - 엄청 귀찮넹... 스크립트로 만들어서 제공하지....

   -  Unicorn 환경 설정을 진행하자.

$ sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb


   - 고성능이 필요하면 cluster mode를 활성화 하자. 방법은 간단하다 ?!

$ sudo -u git -H nano config/unicorn.rb


   - worker_processes를 3으로 변경하면 된다 ?!

...
worker_processes 2
...


   - 이번에는 Rack attack config를 진행하자.

$ sudo -u git -H cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb


   - rack attack middleware를 설정하고 싶으면 다음과 같이 하자.

$ sudo -u git -H nano config/application.rb


   - 주석처리된 부분을 찾아서 주석 표시를 지우면 된다고 한다. (뭘 하는지는 아직 모르겠다.)

...
   # config.middleware.use Rack::Attack
...



11. 기본 사용자 설정

   - Git 사용자 설정을 하자.

$ sudo -u git -H git config --global user.name "GitLab"
$ sudo -u git -H git config --global user.email "gitlab@whatwant.com"
$ sudo -u git -H git config --global core.autocrlf input


   - 위 설정은 다음의 설정에서도 적용이 필요하다.

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



12. Database 환경 파일 설정

   - PostgreSQL을 사용하는 경우이다.

$ sudo -u git cp config/database.yml.postgresql config/database.yml


   - git 계정에서만 읽어볼 수 있게 하기 위한 권한 설정을 하자.

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



13. Install Gems

$ sudo su - git
$ cd /home/git/gitlab
$ bundle install --deployment --without development test mysql aws



14. Database 생성

$ sudo su - git
$ cd /home/git/gitlab
$ bundle exec rake gitlab:setup RAILS_ENV=production


   - 설치과정 끝에 나오는 메시지를 잘 확인해야 한다.

...
Administrator account created:

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



15. Init Script 설정하기

$ cd /home/git/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



16. log 관리하기

$ sudo cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab



17. 환경 설정이 잘 되었는지 점검

   - 환경 설정이 잘 되었는지 확인을 해야하는데...
   - 우선 우리는 기본 설정값과 다른 git 경로부터 수정하고 확인을 하자.

$ sudo -u git nano config/gitlab.yml

 

...
git:
   bin_path: /usr/local/bin/git
...


   - git 경로를 제대로 적어주고나서 환경 설정 값들을 확인해보자.
 

$ sudo su - git
$ cd /home/git/gitlab
$ bundle exec rake gitlab:env:info RAILS_ENV=production

 


18. 시작

   - 이후 부터는 재부팅 될 때 자동으로 실행이 되겠지만, 지금은 직접 한 번 실행을 해보자.

$ sudo service gitlab start

 

Starting the GitLab Unicorn web server...
Starting the GitLab Sidekiq event dispatcher...
The GitLab Unicorn webserver with pid 1478 is running.
The GitLab Sidekiq job dispatcher with pid 1506 is running.
GitLab and all its components are up and running.



19. 상태 점검

   - green으로 나오면 좋은 것이다 ^^

$ sudo su - git
$ cd /home/git/gitlab
$ sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production



20. Nginx


http://tuwlab.com/10476
http://kkame.kr/106
http://blog.naver.com/PostView.nhn?blogId=delltin&logNo=90184174945

   - 개인적으로 Apache2의 대용품(?)으로 좋아하다가 요즘은 살짝 관심을 끊은 Nginx ... ^^
   - GitLab은 공식적으로 웹서버로 Nginx를 추천한다고 한다.

$ sudo apt-get install nginx


   - 설정도 진행을 하자.

$ sudo cp lib/support/nginx/gitlab /etc/nginx/sites-available/gitlab
$ sudo ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab


   -  수정할 것도 있다.

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

 

...
   server_name localhost;
...


   - 재시작 !

$ sudo service nginx restart



21. 사이트 테스트

   - [ http://localhost/ ] 접속


   - ID / Password = [ admin@local.host / 5iveL!fe ]


   - 패스워드 재설정 창이 나온다.
   - 여기에서 재설정을 하면 다시 로그인 창이 나온다. 다시 로그인을 하면 된다.


   - 드디어 제대로 된 화면이 나왔다 !!!



헥헥... 너무 힘들다.... 이거, 반드시 스크립트 제공해줘야 한다 !!!

여하튼 일단 페이지 빵! 뜨는 것 까지는 성공~

반응형

+ Recent posts