ReviewBoard 설치
리뷰보드는 협업자들이 함께 소스 코드를 리뷰할 수 있는 웹 기반의 오픈소스 코드 리뷰 도구이다.
오픈소스이면서도 상용에 못지 않은 다양한 기능을 제공하지만, 설치와 설정이 꽤 까다로운 편이다.
크게 나누어보면 리뷰보드의 설치와 사용할 리뷰보드 사이트의 생성, 이렇게 두 가지 단계로 나눌 수 있다. 여기서는 리뷰보드의 설치를 다루고, 리뷰보드 사이트의 생성은 다른 문서에서 다룬다.
본 문서는 http://www.reviewboard.org/docs/manual/1.7/admin/installation/linux/ 를 기준으로 ReviewBoard 1.7.21 설치를 실제 수행한 사례를 정리하였다.
사전 준비 사항
리뷰보드는 웹 기반 애플리케이션으로 HTTPD(웹서버)와 DBMS과 Python이 필요하다. 사전 준비사항에는 언급되어 있지 않으나 설치 과정 중에 형상관리 시스템의 설치도 포함되어 있다.
지원 DBMS
- MySQL v5.0.31 이상
- PostgreSQL
- SQLite v3 (테스트용이며 실무용으로는 권장하지 않는다)
지원 HTTPD
- Apache + ( modwsgi | fastcgi | modpython )
- lighttpd + fastcgi
지원 Python
- Python 2.5 이상
지원 형상관리 시스템
- CVS
- Git
- Mercurial
- Perforce
- Subversion
본 문서에서는
- Linux Mint 16 Petra Cinnamon on 64bit
- MySQL 5.5.35(MariaDB 5.5 로 하면 서버 재부팅 시 DB 꼬여서 작동 안함)
- Apache 2.4.7 + mod_wsgi
- Python 2.7.5
- Git 1.8.32
이 설치되어 있는 상태를 기준으로 진행한다.
리뷰보드 사전 필요 패키지 설치
Apache 설치
-
apt-get 으로 설치한다.
-
apt-get 으로 설치하면 HTTPD가 실행되어 80포트에서 Listen하고, 자동으로 init.d의 시작스크립트로 등록된다. whereis apache2로 찍어보면 파일들이 설치된 위치를 알 수 있다.
-
mod_wsgi 설치
sudo apt-get install libapache2-mod-wsgi
apt-get 으로 설치한다.
apt-get 으로 설치하면 HTTPD가 실행되어 80포트에서 Listen하고, 자동으로 init.d의 시작스크립트로 등록된다. whereis apache2로 찍어보면 파일들이 설치된 위치를 알 수 있다.
mod_wsgi 설치
sudo apt-get install libapache2-mod-wsgi
MySQL 설치
MariaDB를 설치해도 ReviewBoard를 설치하고 사이트를 생성하여 사용할 수 있으나, 재부팅을 하면 MariaDB가 제대로 동작하지 않는 걸 두 개의 서버에서 경험했다.(둘 모두 MariaDB-5.5 & Linux Mint 16의 경우) 결국 MariaDB 는 아직까지는 리뷰보드와 호환되지 않는 것으로 결론 내리고, MySQL을 설치하여 진행한다.
MySQL의 설치도 MySQL의 홈페이지에서 가이드하는 대로 .deb
파일을 내려받아 dpkg -i
를 통해 설치하는 경우 시작을 위한 설정파일과 시작 스크립트 등이 자동으로 생성/등록되지 않아 MySQL의 구동자체가 쉽게 되지 않는다.
따라서 MySQL도 apt-get 을 이용하여 설치한다.
-
MySQL 설치
sudo apt-get install mysql-server
-
root 비밀번호 설정
-
apt로 설치하면 시작 스크립트와 각종 설치파일들을 자동으로 생성하고 서버를 구동한다.
시작 스크립트는 /etc/init.d/mysql 이 생성되며, 서비스로도 등록되어 있어 sudo service mysql start/stop 으로 시작/정지 가능하다.
-
ReviewBoard 사이트 생성을 위한 DB 계정 및 데이타베이스 생성
mysql -u root -p
mysql> create database rb_test;
mysql> GRANT ALL PRIVILEGES ON rb_test.* TO rb_test_admin@localhost IDENTIFIED BY ‘admin’;
mysql> flush priviliges;
.deb
파일을 내려받아 dpkg -i
를 통해 설치하는 경우 시작을 위한 설정파일과 시작 스크립트 등이 자동으로 생성/등록되지 않아 MySQL의 구동자체가 쉽게 되지 않는다.
MySQL 설치
sudo apt-get install mysql-server
root 비밀번호 설정
apt로 설치하면 시작 스크립트와 각종 설치파일들을 자동으로 생성하고 서버를 구동한다.
시작 스크립트는 /etc/init.d/mysql 이 생성되며, 서비스로도 등록되어 있어 sudo service mysql start/stop 으로 시작/정지 가능하다.
ReviewBoard 사이트 생성을 위한 DB 계정 및 데이타베이스 생성
mysql -u root -p
mysql> create database rb_test;
mysql> GRANT ALL PRIVILEGES ON rb_test.* TO rb_test_admin@localhost IDENTIFIED BY ‘admin’;
mysql> flush priviliges;
Git 설치
아래의 명령으로 설치
sudo apt-get install git
sudo apt-get install git
Python Setuptools 설치
아래의 명령으로 설치
$ sudo apt-get install python-setuptools
$ sudo apt-get install python-setuptools
Python Development Headers 설치
아래의 명령으로 설치
$ sudo apt-get install python-dev
$ sudo apt-get install python-dev
memcached 설치
memcached는 기본적으로 key-value 형태의 메모리 캐쉬를 통해 웹 서비스를 효율적으로 제공하는 데몬이다.
Memcached는 Facebook, Twitter, Reddit 및 YouTube와 같은 클라우드 및 웹 서비스 제공 회사에서 사용하는 key-value 메모리 캐시로, 웹 데이터를 소비자에게 서비스하는 데 있어 지연 시간을 줄이고 데이터베이스 및 컴퓨팅 서버에 대한 증설을 줄여주게 한다. Latency를 줄이는 것 외에도 memcached의 확장성 있는 아키텍처 (scale-out) 는 memcached 서버를 간단하게 추가만 하여 처리량을 높일 수 있다. 그러나 코어 수가 4개를 넘으면 성능 저하가 발생하기 때문에 수직 scalability (scale-up) 에는 문제가 있다.
NHN 개발자 블로그 http://helloworld.naver.com/helloworld/151047
Memcached는 Facebook, Twitter, Reddit 및 YouTube와 같은 클라우드 및 웹 서비스 제공 회사에서 사용하는 key-value 메모리 캐시로, 웹 데이터를 소비자에게 서비스하는 데 있어 지연 시간을 줄이고 데이터베이스 및 컴퓨팅 서버에 대한 증설을 줄여주게 한다. Latency를 줄이는 것 외에도 memcached의 확장성 있는 아키텍처 (scale-out) 는 memcached 서버를 간단하게 추가만 하여 처리량을 높일 수 있다. 그러나 코어 수가 4개를 넘으면 성능 저하가 발생하기 때문에 수직 scalability (scale-up) 에는 문제가 있다.
NHN 개발자 블로그 http://helloworld.naver.com/helloworld/151047
memcached 설치
$ sudo apt-get install memcached
$ sudo apt-get install memcached
python-memcached 설치
$ sudo easy_install python-memcached
$ sudo easy_install python-memcached
patch 설치
patch는 리뷰보드의 비교 보기(diff viewer)가 동작하는데 필요하다.
$ sudo apt-get install patch
$ sudo apt-get install patch
리뷰보드 설치
리뷰보드 설치
리뷰보드는 Djblets, Django-Evolution, Django, flup, paramiko and Python Imaging Library 에 의존관계를 가지고 있으나 아래의 명령으로 모두 설치할 수 있다.
$ sudo easy_install ReviewBoard
$ sudo easy_install ReviewBoard
Database Bindings 설치
MySQL에서는 두 가지 방법이 있다. 어떤 방식으로든 관계없다.
-
apt-get을 이용하는 방법
$ sudo apt-get install python-mysqldb
-
easy_install을 이용하는 방법
$ sudo easy_install mysql-python
-
MySQL 대신 MariaDB를 설치했을 경우 위 방법은 아래와 같은 에러가 난다.
apt-get을 이용하는 방법
$ sudo apt-get install python-mysqldb
easy_install을 이용하는 방법
$ sudo easy_install mysql-python
- MySQL 대신 MariaDB를 설치했을 경우 위 방법은 아래와 같은 에러가 난다.
PyLucene (필수 아님)
검색을 위해 PyLucene을 사용할 수 있다. Java가 설치되어 있다면 아래의 명령으로 간단히 설치할 수 있다. (java 설치 안되어 있는데도 아래의 명령으로 pylucene 설치됨)
$ sudo apt-get install pylucene
$ sudo apt-get install pylucene
개발 도구 설치 (필수 아님)
리뷰보드를 직접 수정하여 개선해보려면 아래의 도구가 필요하다.
- nose
- Sphinx
설치는 아래의 명령으로 한 번에 함께 설치할 수 있다.
$ sudo easy_install nose Sphinx
$ sudo easy_install nose Sphinx
리뷰보드 설정
리뷰보드의 설치가 완료되었으면, 실제 리뷰보드를 사용하기 위해 리뷰보드 사이트를 생성해야 한다.
생성은 다른 문서를 참고한다.
참고
easy_install 로 설치한 패키지의 삭제
easy_install
은 python-setuptools를 통해 제공되는 설치관리자이다. python 관련 패키지들을 easy_install
을 통해 쉽게 설치할 수 있다.
하지만 easy_uninstall
과 같이 easy_install
을 통해 쉽게 설치한 패키지를 쉽게 삭제할 수 있는 방법이 없다.
easy_install
을 통해 설치한 패키지를 쉽게 삭제하려면 pip
가 필요하다.
easy_install
은 python-setuptools를 통해 제공되는 설치관리자이다. python 관련 패키지들을 easy_install
을 통해 쉽게 설치할 수 있다.easy_uninstall
과 같이 easy_install
을 통해 쉽게 설치한 패키지를 쉽게 삭제할 수 있는 방법이 없다.easy_install
을 통해 설치한 패키지를 쉽게 삭제하려면 pip
가 필요하다.pip
Python 패키지의 설치 및 관리를 담당하는 도구이다.
pip
는 아래의 명령으로 설치할 수 있다.
$ sudo apt-get install python-pip
주요 기능은 다음과 같다.
-
패키지 설치
$ pip install <<패키지이름>>==1.0
[...]
Successfully installed SomePackage
-
패키지 삭제
$ pip uninstall <<패키지이름>>
Uninstalling SomePackage:
/my/env/lib/pythonx.x/site-packages/somepackage
Proceed (y/n)? y
Successfully uninstalled SomePackage
-
특정 패키지를 통해 어떤 파일들이 설치되었는지 확인
$ pip show --files <<패키지명>>
Name: SomePackage
Version: 1.0
Location: /my/env/lib/pythonx.x/site-packages
Files:
../somepackage/__init__.py
[...]
-
업그레이드가 필요한 패키지 목록 표시
$ pip list --outdated
SomePackage (Current: 1.0 Latest: 2.0)
pip
는 아래의 명령으로 설치할 수 있다.$ sudo apt-get install python-pip
패키지 설치
$ pip install <<패키지이름>>==1.0
[...]
Successfully installed SomePackage
패키지 삭제
$ pip uninstall <<패키지이름>>
Uninstalling SomePackage:
/my/env/lib/pythonx.x/site-packages/somepackage
Proceed (y/n)? y
Successfully uninstalled SomePackage
특정 패키지를 통해 어떤 파일들이 설치되었는지 확인
$ pip show --files <<패키지명>>
Name: SomePackage
Version: 1.0
Location: /my/env/lib/pythonx.x/site-packages
Files:
../somepackage/__init__.py
[...]
업그레이드가 필요한 패키지 목록 표시
$ pip list --outdated
SomePackage (Current: 1.0 Latest: 2.0)
댓글 없음:
댓글 쓰기