Nginx 환경에서 gitweb 구동은 아직 성공은 못했다.
누군가 성공하신 분이 계시면 알려주시면 대단히 감사하겠다는....

일단 기본적인 사항에 대해서는 지난 포스팅을 참고하길 바란다.
     - http://whatwant.tistory.com/397


1. Git 준비 (gitweb 준비)

     - Git을 소스코드 설치를 하셨다면 기본적인 준비는 모두 되어있는 것이다.
     - http://whatwant.tistory.com/289



2. Apache2 준비

     - 간단하게 그냥 패키지로 설치하자.

$ sudo apt-get install apache2



3. 경로 정리

     - 개인적인 취향이 반영된 부분이지만... 여하튼 경로를 정리해보자.
     - git 을 소스설치한 경로는 다음과 같다. [ /srv/install/git/git-1.7.11.2 ]

$ cd /srv/www
$ sudo ln -s /srv/install/git/git-1.7.11.2/gitweb ./gitweb.whatwant.com



4. VirtualHost 생성

     - default 사이트는 삭제하고, 포트 변경해서 생성해보자.

$ cd /etc/apache2/sites-available
$ sudo nano ./gitweb

<VirtualHost *:8080>
        ServerAdmin whatwant@whatwant.com

        DocumentRoot /srv/www/gitweb.whatwant.com

        <Directory "/srv/www/gitweb.whatwant.com">

                DirectoryIndex gitweb.cgi
                Allow from all
                AllowOverride all
                Order allow,deny
                Options ExecCGI

                <Files gitweb.cgi>
                        SetHandler cgi-script
                </Files>

                SetEnv  GITWEB_CONFIG  /srv/www/gitweb.conf
        </Directory>

</VirtualHost>

     - 위 설정과 같이 8080 포트로 gitweb을 구동하고자 한다.

$ sudo nano /etc/apache2/ports.conf

NameVirtualHost *:8080
Listen 8080

     - sites 설정을 맞추자

$ cd /etc/apache2/sites-enabled
$ sudo rm -rf ./000-default
$ sudo ln -s ../sites-available/gitweb ./001-gitweb



5. gitweb.conf

     - gitweb 환경설정을 해보자.

$ sudo nano /srv/www/gitweb.conf

$git_temp = "/tmp";

# The directories where your projects are. Must not end with a slash.
$projectroot = "/srv/repositories";

$feature{'blame'}{'default'} = [1];
$feature{'highlight'}{'default'} = [1];



6. gitweb + gitolite

     - 기본적으로 gitolite를 적용한 환경에서 그냥 gitweb을 연결하면 testing.git repository밖에 안보인다.
     - 그래서 별도의 과정을 추가로 진행하여야 한다.

$ sudo usermod -a -G gitolite www-data
$ sudo chown -R git.www-data /srv/repositories
$ sudo chmod -R g+rx /srv/repositories

     - UMASK 기본 값을 변경해야 한다.
     - 이와 관련된 설정 파일은 gitolite를 설치한 repository를 관리하기 위한 계정에 있다.

$ sudo su - git
$ nano ./.gitolite.rc

    #UMASK                       =>  0077,
    UMASK                       =>  0027,


이제 8080 포트로 웹사이트 접속을 하면 된다~!!!

반응형

'SCM > Git-GitHub' 카테고리의 다른 글

git blame (-e 옵션)  (0) 2012.07.29
git man  (0) 2012.07.25
Code Review - Gerrit (Install)  (12) 2012.07.07
[004] 당신은 Git을 어떻게 읽나요?  (0) 2012.06.28
[003] Git의 탄생 비화  (2) 2012.06.26


Redmine v1.3.2 설치에 대해서 예전에 포스팅을 했었다.

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


오늘 개인적으로 만들고 있는 오래된 Mac-Mini 홈서버 만들기 놀이를 하던 중
Redmine을 설치하려고 하다보니 Redmine의 버전이 많이 올라서 업데이트를 해보기로 하였다.

기본적인 설치 과정은 위의 예전 포스팅을 참조하길 바란다.



01. 버전 확인하기


     - 2012.07.14 현재 Redmine의 최신 버전은 [ v1.4.4 ] 이다.
     - http://www.redmine.org/projects/redmine/wiki/Download

     - v2.x.x 버전은 plugin 호환성이 아직은 많이 떨어지기에 다음 기회에 살펴보겠다.



02. Ruby & Ruby on Rails & Rack 호환 버전 확인하기


      - 가장 어려운 Ruby 형제들 버전 호환성 맞추기

 Redmine  Supported Ruby  Required Rails  Supported Rack  Supported RubyGems
 1.4.x  ruby 1.8.7, 1.9.2, 1.9.3, jruby-1.6.7  Rails 2.3.14  ?  RubyGems <= 1.8



03. 기본 패키지 + Ruby 설치하기


      - 현재 1.9.3 버전대는 좀 이상해서 (개인적인 문제일 수도 있다. Mac-Mini가 PowerPC 인 관계로...)
      - 1.9.1 기준으로 설치를 했다.

$ sudo apt-get install build-essential ruby1.9.1 ruby1.9.1-dev irb1.9.1 rdoc1.9.1 libdbd-pg-ruby1.9.1 zlib1g-dev libpcre3-dev libopenssl-ruby1.9.1 libzlib-ruby libssl-dev libcurl4-openssl-dev libpq-dev libreadline-gplv2-dev libjpeg62-dev libpng12-dev


 

04. RubyGems 설치하기


      - 홈페이지를 통해 최신 버전의 다운로드 경로를 확인하자.
      - http://rubygems.org/

 

$ wget http://production.cf.rubygems.org/rubygems/rubygems-1.8.24.tgz
$ tar zxvf ./rubygems-1.8.24.tgz
$ cd rubygems-1.8.24/
$ sudo ruby setup.rb



05. PostgreSQL 설치 + Git


      - database와 git을 설치하자.

$ sudo apt-get install postgresql


     - 사실 정확히 1.4.4 버전을 다운로드 받기 위해서는 git 설치는 필요없다.
     - 최신 버전을 다운로드 받고 싶은 경우에만 아래 포스팅을 참조해서 설치하면 된다.
     - http://whatwant.tistory.com/289


06. ImageMagick


     - rmagick 설치하기

$ sudo apt-get install librmagick-ruby libmagickwand-dev
$ sudo gem install rmagick



07. Rails, i18n, rack, fastthread, postgres, pg 설치하기


      - 기타 필요한 것들을 설치해보자.

$ sudo gem install -v=2.3.14 rails
$ sudo gem install -v=0.4.2 i18n
$ sudo gem install fastthread
$ sudo gem install postgres
$ sudo gem install bundler



08. passenger (nginx) 설치


      - Redmine의 웹서비스 제공을 위한 passenger의 최신 버전을 확인하자.
      - http://rubyforge.org/projects/passenger

$ wget http://rubyforge.org/frs/download.php/76249/passenger-3.0.13.tar.gz
$ tar zxvf ./passenger-3.0.13.tar.gz
$ cd ./passenger-3.0.13/
$ sudo ./bin/passenger-install-nginx-module

 

설치과정 중 나오는 화면에서는 [Enter] 와 [1]을 계속 선택하면 된다.

 

     - 부팅 時 실행을 위해서 스크립트 파일을 만들어야 한다

  

$ sudo nano /etc/init.d/nginx

 

#!/bin/sh

### BEGIN INIT INFO
# Provides:          nginx
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts the nginx web server
# Description:       starts nginx using start-stop-daemon
### END INIT INFO

PATH=/opt/nginx/sbin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/opt/nginx/sbin/nginx
NAME=nginx
DESC=nginx

test -x $DAEMON || exit 0

# Include nginx defaults if available
if [ -f /etc/default/nginx ] ; then
        . /etc/default/nginx
fi

set -e

case "$1" in
  start)
        echo -n "Starting $DESC: "
        start-stop-daemon --start --quiet --pidfile /opt/nginx/logs/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS
        echo "$NAME."
        ;;
  stop)
        echo -n "Stopping $DESC: "
        start-stop-daemon --stop --quiet --pidfile /opt/nginx/logs/$NAME.pid --exec $DAEMON
        echo "$NAME."
        ;;
  restart|force-reload)
        echo -n "Restarting $DESC: "
        start-stop-daemon --stop --quiet --pidfile /opt/nginx/logs/$NAME.pid --exec $DAEMON
        sleep 1
        start-stop-daemon --start --quiet --pidfile /opt/nginx/logs/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS
        echo "$NAME."
        ;;
  reload)
          echo -n "Reloading $DESC configuration: "
          start-stop-daemon --stop --signal HUP --quiet --pidfile     /opt/nginx/logs/$NAME.pid --exec $DAEMON
          echo "$NAME."
          ;;
      *)
            N=/etc/init.d/$NAME
            echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
            exit 1
            ;;
esac
exit 0

 

$ sudo chmod +x /etc/init.d/nginx
$ sudo update-rc.d -f nginx defaults



09. redmine 다운로드


     - 그동안 준비하느라 수고가 많았다.
     - 이제 본격적으로 redmine을 다운로드 받아서 설치를 해보자.
 

$ wget https://github.com/redmine/redmine/tarball/1.4.4 -O ./redmine-1.4.4.tar.gz


     - redmine의 계정과 경로를 정리해보자.

$ cd /srv/www/redmine.whatwant.com/
$ ln -s /srv/install/redmine/redmine-redmine-3cde1f6 ./redmine
$ sudo adduser redmine
$ sudo chown -R redmine.redmine ./*
$ cd ./redmine
$ sudo chown -R redmine.redmine ./*


 
10. postgresql 설정하기


      - redmine을 위해 계정도 생성해주고 데이터베이스도 생성해주자

$ sudo su - postgres
$ psql

 

# CREATE ROLE redmine LOGIN ENCRYPTED PASSWORD 'redmine' NOINHERIT VALID UNTIL 'infinity';
# CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine;
# \q


     - 위와 같이 하면 redmine 계정의 password가 redmine이 되어야 하는데, 문제가 있는 경우,

# alter user redmine with password 'redmine';


     - 위와 같이 특정 계정의 패스워드를 변경할 수도 있다.


11. database 설정값 등록


      - database 설정을 하자.

$ cd /srv/www/redmine.whatwant.com/redmine
$ sudo nano ./config/database.yml

  

production:
        adapter: postgresql
        database: redmine
        host: localhost
        username: redmine
        password: redmine
        encoding: utf8
        schema_search_path: public


     - 위 파일을 편집할 때 앞의 공백은 스페이스바로 띄워야 한다. Tab을 사용하면 에러 발생

$ sudo chown redmine.redmine ./config/database.yml
$ sudo chmod 600 ./config/database.yml

 
     - 추가로 몇 가지 작업을 더 해야한다. (sqlite3를 사용하지는 않는데, 의존성 때문에 필요하다)

$ sudo apt-get install sqlite3 libsqlite3-dev
$ sudo bundle install --without development test mysql sqlite3
$ sudo RAILS_ENV=production rake config/initializers/session_store.rb
$ sudo RAILS_ENV=production rake db:migrate
$ sudo RAILS_ENV=production rake redmine:load_default_data
 → ko

 

12. redmine 설정

      - 이제  권한을 정리해보자.


$ cd /srv/www/redmine.whatwant.com/redmine/
$ sudo chmod -R 755 files/ log/ tmp/

 

 

13. nginx conf

 

      - 웹서비스를 위한 환경 설정을 하자.

  

$ sudo nano /opt/nginx/conf/nginx.conf

  

user redmine;

...

http {
    passenger_root /srv/install/redmine/passenger/passenger-3.0.11;
    passenger_ruby /usr/bin/ruby1.8;

...

        #location / {
        #    root   html;
        #    index  index.html index.htm;
        #}

        access_log /srv/www/redmine.whatwant.com/redmine/log/access.log;
        error_log /srv/www/redmine.whatwant.com/redmine/log/error.log;

        passenger_enabled on;
        root /srv/www/redmine.whatwant.com/redmine/public;

        location ~* \.(ico|jpg|gif|png|css|js|swf|html)$ {
           if (-f $request_filename) {
              expires max;
              break;
           }
        }


     - 이젠 nginx를 시작하자.

$ sudo /etc/init.d/nginx start

 

     - 로컬에서라면 "localhost"로, 아니라면, 설치한 PC의 IP로 접속을 하면 된다.
     - 잊었을까봐 또 다시 언급을 하면... 관리자 초기 계정은 'admin / admin' 이다.

 

헥헥~ 너무 힘들다.
그래도 Redmine 초기화면이 떴을 때의 그 기쁨은~!!!

반응형

격투기를 좋아하기에 보게 된 영화



포스터가 왜 DVD 표지냐면.... 극장용 영화가 아니라 DVD용 영화니깐...


3백만 달라를 투자해서 2주 동안 리허설하고, 4주동안 다 찍었다고 한다.

Beatdown은 이 영화의 무대인
격투기 토너먼트 시합을 의미한다.



감독인 마이클 제이 화이트(Michael Jai White)는 조금 독특한 이력의 소유자이다.
두 대학교에서 연기를 전공하였고 여러 무술을 연마하여 25개가 넘는 타이틀을 획득했다고 한다.

유명해진 것은 마이크 타이슨의 일대기를 그린 미국 드라마에서
주인공인 타이슨 역을 맡게 되면서 부터라고 한다.

스티븐 시걸이 나오는 엑시트 운즈에도 출연하여 공동 주연을 하였고,
언디스퓨티드 2에서는 메인 주연을 맡기도 하였다.

물론 아 영화에도 출연을 했다!
주인공들의 스승으로 나오는데, 몸이 정말... 아트다!



주인공 친구로 나오는 정말 몸 좋은 팀이라는 친구가 있는데,
실제 UFC 선수인 '토드 더피'라고 한다.

신예로 잘나갔다고 한다.
그리고 UFC 데뷔전을 7초만에 TKO 로 이기고....

몸 좋고 얼굴 괜찮고 실력도 괜찮아서
차세대에 UFC를 이끌 유망주로 손꼽혔는데...


잘 나가던 중 마이크 러소와 시합을 했었다.
신나게 두들겨 패다가 3라운드에 한 방 맞고 패배를 하곤(정말 어이없는 한 방),
정확한 이유를 모르는 사유로 퇴출을 당했다고 한다.

그 이유 중 하나로 꼽히고 있는 것이 바로 이 영화다.
이 영화 찍는다고 훈련 게을리해서 버림받은 것 아니냐는 소문이...

방출 후 모습을 못봐서 아쉬운 찰나에 최근에 시합이 있었다.
하지만 오브레임에게 비참하게(?) 무너지고... ㅠㅠ

이런 슬픈 이야기가.....



다시 영화로 돌아오면...

이 영화는 스토리나 감동, 의미 뭐 그런걸 기대하라고 만든 것은 아니다.
그냥 편하게 이종격투기 액션을 감상하면 된다.

그래서 그런지, 많은 감상평이 "마지막 20분만 보면 됩니다!"였다.

그리 큰 반박을 하고 싶은 생각은 없다 ^^



IMDb   평점 : 5.40
네이버 평점 : 4.66
나만의 평점 : 4.95


Naver
http://movie.naver.com/movie/bi/mi/basic.nhn?code=88248
Wikipedia
http://en.wikipedia.org/wiki/Never_Back_Down_2:_The_Beatdown
IMDb - Internet Movie Database
http://www.imdb.com/title/tt1754264/

[출처]
* 포스터 및 스크린샷은 위키피디아에서 퍼왔음을 밝힙니다.
(영화 관련 저작권 괴담은 무서워요~)
[ 주의 사항 ]
어디까지나 개인적인 영화평을 적는 공간이니만큼,
개인의 취향은 존중해주시면 감사하겠습니다.
건전한 비판이나 조언은 언제든 환영입니다!!!

반응형

회사 업무로 짜증이 몰려오고 날씨까지 우중충하여 기분이 아주 꿀꿀하기에
안젤리나 졸리 아줌마의 스파이 액션이 보고파 선택한 영화 솔트 !!!


안젤리나 졸리 아줌마의 얼굴에 대놓고 글씨를 박아버리다니...이런~

포스터에서 보이는 바와 같이
안젤리나 졸리의 안젤리나 졸리에 의한 안젤리나 졸리를 위한 영화다.


흥행수입도 2배가 훨 넘는 돈을 벌어들인 흥행에도 나름 성공한 괜찮은 영화이다.

안젤리나 졸리는 툼레이더부터 원티드, 미스터 & 미세스 스미스와 같은
스파이 액션 스릴러 역할이 너무 너무 잘 어울리는 것 같다.



감독부터 살펴보면,
필립 노이스(Phillip Noyce)는 1950년생 오스트레일리아 출신 아저씨로
많은 작품을 연출했지만 내가 알고 있는 것은
본 콜렉터, 긴급 명령, 패트리어트 게임 정도이다.

주로 스릴러를 전문으로 연출하는 감독이기에
안젤리나 졸리 주연의 솔트는 정말 딱 좋은 선택인 것 같다.



배우들은.... 그냥 뭐 생략해도 될 것 같다.




제목인 솔트(SALT)는 소금이 아니다.

Strategic Arms Limitation Talks
전략 무기 제한 협정

미국과 소련 사이에서 1969년부터 시작한 전략 무기 제한 협정을 의미한다.
1차, 2차 계속 협정을 진행하던 중 1990년을 전후로 한 소련 해체로 무의미하게 되었다.


스파이 스릴러 영화의 상당수가 이를 배경으로 만들어졌다.


그리고 그 냉전시대에
어린아이들을 데려다가 스파이로 계속 키워서 나중에
미국으로 보내서 암살 등의 테러를 하게 했다는....



스파이 스릴러 영화치고는 상당히 묘한 분위기의 영화다.
어떻게 보면 엄청 통속적인 소재와 진행인데...
감정의 흐름, 원인과 이유가 말도 안되는데...
그런데, 의외로 신선하다.

음악도 좀 의외였던 부분이 많다.



엔딩은.... 꼭 2탄이 나올 것만 같이.... 뭔가 많이 아쉽게 끝나지만,
최소한 에피소드1은 끝났구나...라는 느낌은 준다.




이 영화를 보면서 안타까운 점은...
우리의 여전사
안젤리나 졸리 아줌마도 늙었구나...라는 생각이 들어서...
피부에 주름이.... 흑흑....



IMDb   평점 : 6.50
네이버 평점 : 7.69
나만의 평점 : 6.34


Naver
http://movie.naver.com/movie/bi/mi/basic.nhn?code=50669
Wikipedia
http://en.wikipedia.org/wiki/Salt_(2010_film)
IMDb - Internet Movie Database
http://www.imdb.com/title/tt0944835/

[출처]
* 포스터 및 스크린샷은 위키피디아에서 퍼왔음을 밝힙니다.
(영화 관련 저작권 괴담은 무서워요~)
[ 주의 사항 ]
어디까지나 개인적인 영화평을 적는 공간이니만큼,
개인의 취향은 존중해주시면 감사하겠습니다.
건전한 비판이나 조언은 언제든 환영입니다!!!

반응형

2007년도에 충무아트홀 대극장에서 공연한 "웨스트 사이드 스토리"를
"KBS 중계석"에서 방송한 것을 우연한 기회로 보게되었다.

R석 8만5천원짜리 공연을 편하게 자리에 앉아서 보게 되었으니 돈을 번 것인가!? ^^

샤크파 베르나르도 역은 홍록기,
베르나르도의 연인 아니타 역의 유나영,
은퇴한 제트파 토니역의 윤영석,
베르나르도의 여동생이자 토니랑 사랑하는 역을 맡은 소냐가 출연하였다.


소냐를 두고 미스캐스팅이라는 혹평이 많아서 왜 그런가 했는데,
연기나 춤도 괜찮았고 노래 실력 자체도 괜찮았지만 그 발성이나 옥타브, 음색이 어울리지 않았다.

혼자서만 따로 떠다니는 느낌?!
남성 배우가 아니라 같은 여성 배우와 같이 노래를 부를 때에도 따로 노는 느낌이 너무 강했다.


스토리는 정말 슬프게도 "로미오와 줄리엣"의 오마주와도 같다.
원작은 사회상을 반영한 이주민이나 하층민 들의 현실을 반영한 뭐라뭐라하지만....

그런 부분은 별로 와닿지가 않고 남여 주인공, 둘의 슬픈 사랑이야기가....
"로미오와 줄리엣"의 판박이 같다는 것만 와닿았다.


불후의 명곡에서 소냐가 멋진 오래된 노래 하나를 다른 느낌으로 편곡해서 부르는 느낌!?



이 뮤지컬을 보고선 제일 뇌리에 남는 것은 아니타 역의 유나영씨였다.
연기도 제일 잘했고, 노래도 제일 잘 부른 것 같고, 역할에 몰입되는 것도 가장 좋았다.
안타까운 점은 1975년생이시라는.... 학번으로는 동기이고... 나이로는 누님이넹.... ^^


     - The Musical : 웨스트 사이드 스토리
        ▷ http://www.themusical.co.kr/include/bridge.aspx?handle=2&reURL=/musicaldb/musicaldb_sub_081030.aspx&title=811&naver=n



이번 기회를 통해 뮤지컬도 하나씩 배워나가야겠다....^^

반응형

라디오를 통해 영어 공부를 하고픈 사람들이라면 누구나 알고 있을 [ 굿모닝 팝스 ]

친절하게도 팟캐스트를 통해 상당히 빠르게 잘 편집된 컨텐츠를 제공해주고 있다.

그리고 너무나 친절하게도 안드로이드 앱으로 편하게 공부할 수 있도록 제공해준다.


[ GMPlayer ]로 검색하면 된다.



귀로만 듣고 끝나면 정말 아쉽다.



눈으로도 공부를 해야하는데...

너무나 친절한 분들이 해당 컨텐츠를 잘 제공해주고 있다.


     - 새로운 세상을 꿈꾸며
     - http://kairos2009.tistory.com/
     - 그 날의 스크립트를 너무나 친절하게도 잘 올려주고 계신다.



     - bling_gem
     - http://blog.naver.com/bling_gem?Redirect=Log&logNo=40162758693
     - 깔끔하게 이쁘지는 않지만 꾸준히 잘 올려주는 고마운 블로그



     - 헤일리님의 블로그
     - http://blog.naver.com/hayley0320?Redirect=Log&logNo=10141694184
     - 보기 편하진 않지만, 예쁘게 정리된 스크립트를 제공해주는 감사한 블로그




스크립트 보면서 팟캐스트를 들으며 공부를 하면 금상첨화~!!!!

모두들 즐거운 영어공부~~~~!!!!!

반응형

Git을 사용하게 되면 따라오는 가장 유명한 도구들이 두 가지가 있다.
하나는 앞에서 살펴본 계정 관리를 위한 Gitolite,
다른 하나는 코드 리뷰를 위한 Gerrit 이다.

특징은 Gitolite, Gerrit 두 가지 모두 Git 전용의 도구들이다.

Google에서 사용하고 있는 코드 리뷰 도구라고 해서 Git의 인기와 함께 각광을 받고 있는 Gerrit !!!

"코드 리뷰" 도구 시장에는 아직 세상을 통일한 절대 막강 도구가 마땅히 없다.
야후에서 사용한다고 하여 유명한 "리뷰 보드(Review Board)"가 있지만, Git 지원은 아직 기본적인 수준이다.

현재 현장 분위기는 Git을 사용한다면 코드 리뷰는 당연히 Gerrit을 사용한다고 생각하고 있다.



이번 포스팅을 위해서 몇 일을 날려가며 엄청 고생을 했다.
아무리 생각해도 이런 빈약한 자료들을 가지고도 Gerrit을 셋팅해서 잘 사용하시는 분들은 전부 고수들인가보다.
범인 수준인 필자는 정말 엄청 개고생(?)을 해서야 겨우 Gerrit 화면을 볼 수 있었다.

하지만, 언제나 그렇지만 성공하고나서 보면... 별것도 아닌 수준이었는데....라는 생각이 든다 ^^



1. Ready

     - Gerrit을 사용하기 위해서는 다음의 조건이 필요하다.
          ▷ JDK          : version 1.6 이상
          ▷ Database  : Gerrit 내장 H2, 또는 MySQL, PostgreSQL

     - JDK 설치는 다음의 포스팅으로 따라하면 된다.
     - http://whatwant.tistory.com/438

     - Gerrit 자체도 두 가지 방식으로 다운로드 받을 수 있다.
          ▷ Binary  : Jenkins와 같이 *.war 파일로 다운로드 받을 수 있다.
          ▷ Source : 빌드하여 바이너리로 직접 만들 수 있다. Apache Maven으로 빌드할 수 있다.

     - 좋은건지 나쁜건지 모르겠지만, 버전업이 상당히 빠른 Gerrit이다.
     - 안전성을 올리기 위한 것이라면 그나마 괜찮은데, 기능적인 면까지 많이 바뀌는 버전업이라 부담스럽기도 하다.



2. Download

     - 굳이 빌드를 수행할 필요없이 *.war 파일로 다운로드 받자.



     - 포스팅을 하던 중에 업그레이드가 계속 되어 결국 스크린샷도 새로 만들어야 했다는... ^^



3. PostgreSQL

     - 이 블로그를 계속 봐오신 분들이라면 아시겠지만, 개인적으로 PostgreSQL을 사랑하는 것을 아실것이다!
     - postgresql이 설치되어있지 않은 경우엔, 그냥 [ sudo apt-get install postgresql ] 실행하면 된다.

     - Gerrit을 위한 PostgreSQL 계정과 db를 만들어줘야 한다.


$ sudo su - postgres

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

$ exit

     - 위와 같이 깔끔하게 끝~



4. Gerrit User

     - 참고로 Gerrit의 현재 버전은 version 2.4.1 이다. 그래서 그런지 Gerrit도 그냥 부르지 않고, Gerrit2 라고 한다.
     - Gerrit2를 위한 계정을 하나 만들고 그 계정에 모두 맞추자.


$ sudo adduser gerrit2
$ sudo chown gerrit2.gerrit2 ./gerrit-2.4.2.war
$ sudo su gerrit2


     - "gerrit2" 계정을 만들고 gerrit-2.4.1.war 파일을 해당 계정 소유로 만든 후 gerrit2 계정으로 su하자.




5. apache

     - 이번에는 웹서버로 apache로 셋팅을 해보겠다.
     - 나중에 시간이 잠시나면 꼭 nginx 환경에서 다시 해보도록 하겠다.

 

$ sudo apt-get install apache2


     - 설치를 했으면 확인을 하자.


     - Gerrit에서는 웹서버의 proxy 기능을 요구한다.

 

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


     - apache2의 proxy 모듈을 추가로 설치를 해주고,


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


     - 웹서버 준비는 여기까지 끝~



6. Gerrit Install

     - 이제 준비 작업은 모두 끝났다. 설치를 진행하면 된다.

     - Gerrit의 기본적인 구성은 Jenkins와 같은 *.war 파일 구동방식이다.
     - 차이가 있다면, init 과정이 있다는 점 정도?!

 

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


     - 설치과정을 진행하기 전에 권한을 맞추기 위한 선행 준비를 먼저 하자.


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


     - 위에서 명시한 디렉토리는 gerrit2 계정 권한으로 미리 만들어 두었다.

*** Gerrit Code Review 2.4.2
***

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

*** Git Repositories
***

Location of Git repositories   [git]: repositories

*** SQL Database
***

Database server type           [H2/?]: ?
       Supported options are:
         h2
         postgresql
         mysql
         jdbc
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/?]: ?
       Supported options are:
         openid
         http
         http_ldap
         client_ssl_cert_ldap
         ldap
         ldap_bind
         custom_extension
         development_become_any_account
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]:  @gmail.com
   @gmail.com's password  : (passwd)
              confirm password : (passwd)

*** Container Process
***

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


     - 인증 방식은 [ http ]로 정했다.
     - SMTP 설정은 gmail을 활용하기로 정했다. (이메일 주소는 살짝 지웠다 ^^ 다 알겠지만서도...)

 

*** 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]?
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)

Initialized /srv/workspace/gerrit
Executing /srv/workspace/gerrit/bin/gerrit.sh start
Starting Gerrit Code Review: OK
Waiting for server to start ... OK
Opening browser ...
No protocol specified


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

     - 그런데, 마지막 줄이 마음에 걸린다. [ No protocol specified ]




7. Configuration

     - 여기에서 바로 Gerrit이 실행되면 좋겠는데, 몇 가지 더 설정할 것들이 많다.

     - 앞에서도 언급을 했지만, 우리는 Apache의 Proxy를 활용하여 Gerrit을 띄울 것이다.
     - 그리고 Apache의 http authentication을 적용할 것이다.

     - 우선 관리자 계정 하나를 만들어 넣자.

$ sudo su gerrit2
$ htpasswd -c /srv/workspace/gerrit/etc/passwords "admin"


     - 앞의 설치 과정을 통해 만들어진 gerrit site 의 etc 디렉토리에 passwords 파일을 생성하는 것이다.
     - 앞으로 Gerrit 웹페이지는 이 파일을 이용하여 인증을 하게 된다.

     - Apache의 VirtualHost도 설정을 해주자.

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


<VirtualHost *:8081>
        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/workspace/gerrit/etc/passwords
        </Location>

        ProxyPass / http://127.0.0.1:8080/
</VirtualHost>


     - 위에서 각 포트가 중요한데, VirtualHost 에서는 8081 포트를 사용하고
     - Proxy에서는 8080 포트를 사용한다.

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

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


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

$ sudo nano /etc/apache2/ports.conf


NameVirtualHost *:8081
Listen 8081


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

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

$ sudo su gerrit2
$ nano /srv/workspace/gerrit2/etc/gerrit.config


[gerrit]
        basePath = repositories
        canonicalWebUrl = http://localhost:8081/

[database]
        type = POSTGRESQL
        hostname = localhost
        database = reviewdb
        username = gerrit2

[auth]
        type = HTTP

[sendemail]
        smtpServer = smtp.gmail.com
        smtpServerPort = 587
        smtpUser =     @gmail.com

[container]
        user = gerrit2
        javaHome = /usr/local/java/jdk1.7.0_05/jre

[sshd]
        listenAddress = *:29418

[httpd]
        listenUrl = proxy-http://127.0.0.1:8080/

[cache]
        directory = cache


     - 위에서 빨간색으로 표시한 부분만 수정, 추가하면 된다.



8. restart

     - 재시작을 한 번 해보자.

$ sudo su gerrit2
$ cd /srv/workspace/gerrit/
$ ./bin/gerrit.sh restart


     - 이제 웹으로 확인을 해보자.


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


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



9. Sign Out

     - 이렇게 설치를 했는데, 가장 원초적인 문제가 있다. 바로 [ Sign Out ]이 동작하지를 않는다.

     - 앞에서 [ gerrit.conf ] 파일을 수정할 때 넣은 [ canonicalWebUrl = http://localhost:8081/ ] 때문에 발생했다.
     - 하지만, 그 부분을 없애면 기본적인 동작도 하지 않는다.

     - 이 부분에 대한 해결책은 아직 찾지 못했다.
     - 찾게 되는 즉시 업데이트하도록 하겠다.

반응형

'SCM > Git-GitHub' 카테고리의 다른 글

git man  (0) 2012.07.25
Gitweb + Apache2  (2) 2012.07.16
[004] 당신은 Git을 어떻게 읽나요?  (0) 2012.06.28
[003] Git의 탄생 비화  (2) 2012.06.26
[002] 분산 버전 관리 시스템 (Distributed Version Control System, DVCS)  (0) 2012.06.25

얼마전 회사에서의 행사(?)로 SSD를 구매했다.
그래서 이번 기회에 새로 OS도 갈아엎고, 하드디스크들도 한 번 점검을 해보고자 마음먹었다.

일단 어떻게 어떻게 C 드라이브에 새로 구매한 SSD를 연결하고,
XP에서 잘 지원하지도 않는 AHCI 설정을 위해 조금 쌩쑈를 하고.....^^

하드디스크 별로 자료들을 한군데로 모아놓고 로우레벨 포맷하고 다시 포맷하고...하는 등의 작업을 했다.
그리고 나서 하드디스크 상태를 점검해봤는데...


아니 이런... 주의 표시가?!
"치환된 섹터 횟수"........................?!

'Raw 수치'를 알아보기 힘드니까 10진수로 바꿔보자.


이렇게 바꾸고 보니 알아보기가 쉽긴하다.


아니~이런!!! 치환이 51번이나 되었단다.

그런데, 대체 "치환된 섹터 횟수"가 뭘 의미하지....?!

열심히 구글님께 여쭤보니.....
데이터를 쓰려다가 베드가 나와서 다른 곳에 대신 쓰게 된 횟수란다.
결국은 하드디스크에 베드가 나왔다는 것이다!!!

이런 된장~!!!





그래서 다른 유틸리티로 한 번 다시 점검해보기로 했다.

     - http://www.hdtune.com/

"HD Tune Pro" Trial 버전을 다운로드 받아서 설치, 실행해보았다.


역시나 노란색 줄이 주우우우욱~~~~~~ ㅠㅠ




여하튼 결론은 하드디스크에 베드가 발생을 했다는건데,
그러면 어떻게 해야할까?!

가장 아름다운 해결책은 하드디스크를 교환하는 것이다.

하지만, 사용시간을 보면 알겠지만 오랫동안 사용한 하드디스크이다.
     - 사용 시간    : 23360 시간 (약 973일)
     - 전원 투입수 : 773 회

버리고 새로 구매를 하던지, 아니면 부활을 시켜야하는데...
하드디스크가 지금 6개.... 그 중에 노란색 불이 3개....
포트가 부족해서 외장으로 사용하고 있는 하드디스크 2개는... 연결하기도 무섭다 ㅠㅠ
요즘 하드디스크 가격도 비싼데...

부활 좀 시키고... 멀쩡한 애들은 본체 안으로 밀어넣고, 상태 안좋은 애들을 외장으로 막돌려야겠다.


지금 에러가 있는 내 HDD의 상태를 정리해보니 위와 같다.
아... 찝찝해.... ㅠㅠ




그래서 저 HDD들을 부활할 수 있는 방법을 찾아봤다.
그랬더니 방법이 있기는 했다.
원천적인 해결방법은 아니겠지만, 그래도 한 번 해볼만한 시도이기는 해보였다.

     - http://www.hdd-regenerator.net/

그런데, 사실 좀 믿기 힘든 도구이기는 했다.
소프트웨어적인 에러가 아닌 물리적인 에러를 소프트웨어적으로 해결을 해준다니.... 이런 마술이!?

설명을 보면, 기계적 손상은 물론 해결하지 못하지만 자화특성으로 인한 손상은 해결할 수 있다고 한다.
특히 기계적 손상에 비해 자화특성으로 인한 손상의 비율이 60% 이상을 차지하기에 효과적이라고 한다.

믿습니다~!!!



설치를 하면 좀 부실해보이는 화면이 나온다.
제일 위의 "Click here...." 부분을 클릭하면 된다.


많이 허술해보이지만... 제대로 나오기는 한다.
복구를 하고자 하는 HDD를 선택 후 "Start Process"를 클릭하면 된다.


2번을 누른 후 엔터를 치고,


이어서 나오는 화면에서 1번을 선택하면 "Scan and repair"를 하게 된다.


그러면 위와 같이 스캔을 하면서 recover를 해준다.


모두 마치면 위와 같이 complete가 되는데....

어라?! 뭐야.....!!!
치환된 섹터 횟수가 51개가 있는 HDD인데, 왜 detected 된 것도 없고 recover 된 것도 없지?!




다시 한 번 HDD Scan을 해봐야겠다.

지엠데이터라는 회사에서 무료로 배포해주고 있는 감사한 도구가 있다.
바로 GM HDD SCAN

     - http://www.gmdata.co.kr/gmtools/hddscan.html

얼라?!

불량섹터가 하나도 나오지를 않는다.
다른 하드디스크를 해봐도....





구글님께 이것 저것 여쭤보고 확인해본 결과...
기본 스토리는 아래와 같다.

     CrystalDiskInfo 검사 결과 치환된 섹터가 있다
     → 베드섹터가 발생하여 거기에 있는 정보를 예비 섹터에 옮긴 것이다.
     → GM HDD Scan 검사를 하면 베드섹터가 나올 것이다.
     → HDD Regenerator를 이용해서 베드섹터 repair 를 해주면 생명연장의 꿈을 실현할 수 있다.

그런데, 치환된 섹터가 있다고 나온 HDD를 확인해보면 베드섹터가 보이지를 않는다.
에잇~ 그냥 HDD가 아직은 멀쩡하다고 생각하련다.

다음에 다시 한 번 CrystalDiskInfo로 검사해서 치환된 섹터 수치가 증가하면
그 때에 다시 한 번 진행해보련다.

여기까지 경과 보고 끄읕~~~

반응형

+ Recent posts