Review Board는 코드 리뷰를 위한 오픈소스 도구입니다.
대규모 프로젝트에서 많은 사람들이 코드를 작업하다보면 다양한 이유로 품질이 낮은 코드를 생산할 수 있습니다.
그렇다고 매번 사람이 일일이 그 사람이 작업한 내역을 체크하기도 쉬운 일이 아닙니다.
이때 웹사이트 형태로 된 코드 리뷰를 위한 도구를 제공하여 손쉽게 작업자들이 코드를 확인할 수 있도록 도와주는 도구가 이번에 소개하는 Review Board 입니다.
Review Board는 Open Source 프로젝트에 MIT 라이선스로 자유롭게 개인 또는 기업에서 사용할 수 있습니다.
내부 구현은 Python과 Django 프레임워크로 작성되어있어 필요에 따라 쉽고 빠르게 수정할 수 있습니다.
먼저 설치를 진행해보겠습니다.
Review Board 설치
Python Django 프레임워크로 개발된 Review Board는 Linux 환경에서 서비스를 올리기 좋습니다.
Linux Ubuntu 20.04 LTS 기준으로 가이드를 작성하겠습니다.
Windows 이용자라면 WSL2(Window Subsystem Linux)를 활용하는 것을 추천드리겠습니다.
실행 환경
Windows 10 WSL2, Apache2 + Python3 + Django + WSGI
필수 프로그램 설치
sudo apt-get update
sudo apt-get install python3.8 -y
sudo apt-get install python3-pip -y
sudo apt-get install apache2 -y
sudo apt-get install mysql-server -y
sudo apt-get install net-tools -y
Review Board는 apcache2 HTTP 서버를 통하여 실행됩니다.
DB는 MySQL, PostgreSQL, SQLite 중 선택하여 사용할 수 있습니다. 가장 무난한 MySQL로 진행하겠습니다.
Dependenies 설치
sudo apt-get install libapache2-mod-wsgi-py3
sudo apt-get install build-essential python-dev libffi-dev libssl-dev patch python-setuptools libjpeg-dev memcached libmysqlclient-dev
추가적으로 Review Board 실행에 필요한 패키지들을 설치합니다.
mod-wsgi는 python을 웹서비스로 올리기 위해 필요한 도구입니다.
그 외에도 Review Board에서 필요로 하는 다양한 패키지들을 설치합니다.
DB 세팅
Review Board에서 사용할 DB를 세팅합니다.
sudo mysql -u root -p
WSL2 리눅스 환경으로 위 명령을 수행중이라면 아래와 같은 에러가 발생할 것 입니다.
sudo service mysql start
위 명령어를 입력하여 mysql 서비스를 실행시킵니다.
* Starting MySQL database server mysqld su: warning: cannot change directory to /nonexistent: No such file or directory |
위와 같은 에러가 발생합니다.
sudo mkdir nonexistent
현재 위치에 nonexistent 폴더를 생성해줍니다. 그 다음 sudo service mysql start 명령어를 재수행합니다.
그럼 mysql 서비스가 정상적으로 실행됩니다.
다시 첫 mysql 명령어를 수행하여 root 계정으로 DB에 접속합니다.
패스워드를 입력하라고 하는데 그냥 Enter를 누르면 바로 접속이 됩니다.
CREATE DATABASE review_board CHARACTER SET utf8;
접속 후 mysql> 이 뜰 것입니다. 여기에 위의 쿼리를 입력 후 실행시켜 Review Board에서 사용할 DB를 생성합니다.
CREATE USER 'admin'@'localhost' IDENTIFIED WITH mysql_native_password BY 'admin';
GRANT ALL PRIVILEGES ON review_board.* TO 'admin'@'localhost';
FLUSH PRIVILEGES;
Review Board DB 관리용 계정도 생성합니다.
USER 옆에 admin에 사용하실 계정명을 넣습니다.
mysql_native_passwod BY 옆의 admin에 사용할 패스워드를 입력하고 실행시킵니다.
두번째 라인의 TO 옆에도 첫번째 라인에서 사용한 계정명을 입력합니다.
EXIT;
DB와 계정 생성이 완료되었으면 EXIT을 입력하여 mysql에서 나옵니다.
Python 패키지 설치 setuptool, ReviewBoard
python 패키지 관리자인 pip를 통하여 setuptool과 ReviewBoard를 설치합니다.
sudo pip3 install setuptools
sudo pip3 install ReviewBoard
python 에서 mysql을 사용하기 위한 패키지를 설치합니다.
이때 apt-get을 통하여 gcc와 libmysqlclient-dev를 설치해줘야 python 패키지 설치도 정상적으로 진행됩니다.
sudo apt-get install gcc
sudo apt-get install libmysqlclient-dev
sudo pip3 install mysqlclient
Review Board 사이트 생성
이제 필요한 도구들은 설치가 완료되었으니 Review Board 사이트를 생성하겠습니다.
먼저 WSL에 부여된 가상 IP를 확인할 필요가 있습니다. 생성 후 접속을 하기위해 필요합니다.
ifconfig
IP를 확인하였으면 Review Board 사이트 생성을 시작합니다. (WSL 켤때마다 IP 바뀌는데 고정하는법 확인 필요합니다.)
sudo rb-site install /var/www/example.com
install 뒤에는 사이트가 생성될 경로를 원하는 내용으로 지정하면됩니다.
————————————————————————————————————————————————————————————————————————————————————————————————————————————
What's the host name for this site?
————————————————————————————————————————————————————————————————————————————————————————————————————————————
This should be the fully-qualified host name without the https://, port, or path. For example,
"reviews.example.com".
Domain Name: 172.25.13.162
입력 후 내용이 나오면 Domain Name에 위에서 확인한 IP 주소를 입력해줍니다. 추후 옵션 파일을 수정하여 변경할 수 있습니다.
————————————————————————————————————————————————————————————————————————————————————————————————————————————
What URL path points to Review Board?
————————————————————————————————————————————————————————————————————————————————————————————————————————————
Typically, Review Board exists at the root of a URL. For example, https://reviews.example.com/. In this
case, you would specify "/".
However, if you want to listen to, say, https://example.com/reviews/, you can specify "/reviews/".
Note that this is the path relative to the domain and should not include the domain name.
The default is "/"
Root Path [/]:
Root Path를 설정합니다. 기본 값은 / 입니다. 그냥 Enter를 누르면 기본값으로 설정됩니다.
————————————————————————————————————————————————————————————————————————————————————————————————————————————
What database will you be using?
————————————————————————————————————————————————————————————————————————————————————————————————————————————
It's recommended that your database be set up on a separate server, to achieve the best performance. This is
especially important for large, high-traffic installations.
You can type either the name or the number from the list below.
(1) mysql
(2) sqlite3 (not supported for production use)
Database Type: 1
어떤 데이터 베이스를 사용할지 선택합니다. mysql을 설치하였으니 1을 입력합니다.
————————————————————————————————————————————————————————————————————————————————————————————————————————————
What database name should Review Board use?
————————————————————————————————————————————————————————————————————————————————————————————————————————————
Note: You need to create this database and grant user modification rights before continuing. See
your database documentation for more information.
The default is "reviewboard"
Database Name [reviewboard]: review_board
Review Board에서 사용할 DB 명을 입력합니다. 위에서 생성할 때 입력한 이름으로 생성합니다.
————————————————————————————————————————————————————————————————————————————————————————————————————————————
What is the database server's address?
————————————————————————————————————————————————————————————————————————————————————————————————————————————
This should be specified in hostname:port form. The port is optional if you're using a standard port for the
database type.
The default is "localhost"
Database Server [localhost]:
DB 서버 주소를 입력합니다. Review Board와 동일한 리눅스 환경에 설치했기 때문에 기본값인 localhost를 사용합니다.
아무것도 입력하지 않고 Enter를 누릅니다.
————————————————————————————————————————————————————————————————————————————————————————————————————————————
What is the login and password for this database?
————————————————————————————————————————————————————————————————————————————————————————————————————————————
This must be a user that has table creation and modification rights on the database you already specified.
Database Username: admin
Database Password:
Confirm Database Password:
Review Board DB 관리자 계정으로 생성했던 아이디와 패스워드를 입력합니다.
————————————————————————————————————————————————————————————————————————————————————————————————————————————
What memcached host should be used?
————————————————————————————————————————————————————————————————————————————————————————————————————————————
This is in the format of: hostname:port
The default is "localhost:11211"
Memcached Server [localhost:11211]:
Review Board에서 Memcached라는 프로그램을 사용하고 이미 설치한 상태입니다.
동일한 환경에 설치하였으니 localhost에 존재함으로 아무것도 입력하지 않고 Enter를 누릅니다.
————————————————————————————————————————————————————————————————————————————————————————————————————————————
Create an administrator account
————————————————————————————————————————————————————————————————————————————————————————————————————————————
To configure Review Board, you'll need an administrator account. It is advised to have one administrator and
then use that account to grant administrator permissions to your personal user account.
If you plan to use NIS or LDAP, use an account name other than your NIS/LDAP account in order to prevent
conflicts.
The default is "admin"
Username [admin]:
Password:
Confirm Password:
E-Mail Address: admin@naver.com
Company/Organization Name (optional):
Admin 계정을 생성합니다.
사용할 Username, Password 그리고 E-Mail은 필수로 입력해야합니다. 꼭 존재하는 이메일이 아니어도 괜찮습니다.
————————————————————————————————————————————————————————————————————————————————————————————————————————————
Enable collection of limited data for better support
————————————————————————————————————————————————————————————————————————————————————————————————————————————
We would like to periodically collect some general data and statistics about your installation to provide a
better support experience for you and your users.
The following is collected:
* Review Board and Python version
* Server domain and install key
* Your company name (if provided above)
* Administrator name and e-mail
* Number of user accounts (but no identifying information)
It does NOT include confidential data such as source code or user information. Data collected NEVER leaves
our server and is NEVER given to any third parties for ANY purposes.
We use this to:
* Provide a support page for your users to help contact you
* Determine which versions of Review Board are actively in use
* Track how upgrades affect numbers of bug reports and support incidents
You can choose to turn this on or off at any time in Support Settings in Review Board's Administration UI.
See our privacy policy: https://www.beanbaginc.com/privacy/
Allow us to collect support data? [y/n]:
Review Board 개발자에게 더 나은 환경과 발전을 위해 데이터 수집을 허용할 것인지 선택하라는 내용입니다.
필요에 따라 선택하도록 합니다.
이제 사이트 생성이 완료되었습니다. 마지막으로 사이트 설정을 진행하겠습니다.
Review Board 사이트 설정
Apache2에 생성 완료한 사이트를 설정하겠습니다.
sudo chown -R www-data:www-data /var/www/example.com
apache2가 서비스를 올릴 때 사용하는 계정인 www-data user 계정에게 생성한 사이트 경로에 대한 권한을 부여합니다.
sudo cp /var/www/example.com/conf/apache-wsgi.conf /etc/apache2/sites-available/example.com.conf
생성된 사이트에 apache-wsgi.conf 파일을 apache2 사용 가능한 사이트 경로에 복사해줍니다.
sudo ln -s /etc/apache2/sites-available/example.com.conf /etc/apache2/sites-enabled/example.com.conf
sudo rm /etc/apache2/sites-enabled/000-default.conf
apache2 활성화된 사이트 경로에 사용 가능한 사이트 경로에 복사한 내용을 심볼링 링크를 걸어줍니다.
기본 세팅된 000-default.conf 사이트는 제거합니다.
sudo service restart apache2
apache2 서비스를 재시작합니다.
만약 시작이 안된다는 에러가 발생한다면 위에서 설치한 libapache2-mod-wsgi-py3를 다시 설치 후 시도합니다.
이렇게 Review Board 사이트 설치가 완료되었습니다.
WSL을 사용할 경우 IP가 켤때마다 변경되는 경우가 있습니다.
WSL에서 계속 작업을 하신다면 IP 고정하는 방법을 확인하셔야합니다.
IP가 변경될 경우 사이트 경로의 conf/settings_local.py 파일의 최하단에 ALLOWED_HOSTS에 등록된 주소를 변경 후 apache2 서비스를 재시작합니다!
댓글