コードレビューが不十分だったと思ったので、コードレビューのためのツールを調べた。

調べてみるといろいろあるものだ。
ReviewBoardをトライアルしてみることにした。
ReviewBoardとは、VMware社が開発したコードレビューツール。(無料)
Twitter社でもつかわれているらしい。
https://www.reviewboard.org/

導入は、実はとても大変だった。
まず、Windows 7 64bit 環境で導入しようとしたが、挫折。
公式HPの注意事項にも書いてあるが、Windows 64bit環境では動くのだろうか?
https://www.reviewboard.org/docs/manual/dev/admin/installation/windows/
インストールに必要なPythonモジュールのバージョンがなかったりした。

自分の場合は、Linux(Ubuntu)で導入してみた。
LinuxはWinodowsに比べてとても導入が簡単だった(といっても、ハマったけど)。
以下、Ubuntuでの導入手順を公式HPにそって実施したまとめ。
https://www.reviewboard.org/docs/manual/1.6/admin/installation/linux/

環境

  • Ubuntu 12.10

インストールしたもの

  • Apache 2.2.22
  • MySQL 5.5.28
  • Python 2.7.3
  • python dev 2.7.3
  • Python Setuptools 0.6.28
  • memcached 1.4.14
  • python-memcached 1.48
  • patch 2.6.1
  • Review Board 1.6.13
  • python-mysqldb 1.2.3

Review Boardのインストール

MySQLをインストール

$ sudo apt-get install mysql-server

パスワードをきかれるので、入れる。
https://debianj.com/ubuntu/install/mysql.html

MySQLインストール後、
共有ライブラリとして認識させるために「/etc/ld.so.conf」に以下の行を追記。

/usr/local/lib/mysql

Apacheをイントール

$ sudo apt-get install apache2

apache2の高速化のために、以下の3つのPython Moduleから一つを選ぶ必要がある。

  • mod_wsgi (推奨)
  • fastcgi
  • mod_python (非推奨)

ここでは、推奨であるmod_wsgiを選択する。
以下のHPにしたがって設定。Ubuntuにmod-wsgiいれたメモ

$ sudo apt-get install libapache2-mod-wsgi #インストール
$ sudo a2enmod wsgi #有効化
$ sudo apache2ctl restart #サーバー再起動

Python Setuptoolsをイントール

Pyhonはインストール済みであること。
ここでは、Ubuntuにデフォルトで入っているPython 2.7を使う。
2.4以降ならばいいらしい。

$ sudo apt-get install python-setuptools

これで、easy_installコマンドが使えるようになり、インストールが簡単になる。

Python Development Headersをインストール

$ sudo apt-get install python-dev

memcachedをインストール

Review Boardを高速化するためのキャッシュツールを入れる。

$ sudo apt-get install memcached
$ sudo easy_install python-memcached

patchをインストール

GNU patch とは、 差分ファイル (パッチファイル) を用いてソースファイルの修正作業を自動的に実行してくれるソフトウェア(らしい)

$ sudo apt-get install patch

Review Boardをインストール

ようやく、主題であるReview Boardのインストールだ。
コマンドは以下を実行。

$ sudo easy_install ReviewBoard

これで、Djblets, Django-Evolution, Django, flup, paramiko and Python Imaging Libraryが足りない場合は、依存性を分析して、ダウンロードしてくれる。
(ここがWindowsと違って感動した)

flupが見つからなかったので、下記サイトを参考にインストール。
https://kaigai-hosting.com/bluehost-django.php

wget https://www.saddi.com/software/flup/dist/flup-1.0.2.tar.gz
tar xzvf flup-1.0.2.tar.gz
cd flup-1.0.2
sudo python setup.py install -user

mysql-pythonのインストール

mysqlをpythonから操作するためのモジュールmysql-pythonを入れる。

apt-get install python-mysqldb

ただ、ここでハマった。easy_installも実施しておく。
のちのち、サイトを起動したときに、mysql-pythonが動いていないために、
500エラーとなって、以下のメッセージが表示された。

review board is taking a nap

apacheのエラーログをみると、mysql_config not foundらしい。
以下の2つのコマンドを叩いて解決した。

sudo apt-get instal libmysqlclient-dev
sudo easy_install mysql-python

Review Board サイトの作成

Apache起動

/usr/apache2/bin/apachectl start

127.0.1.1にアクセスしてみて、“It works!“が起動されていれば成功。

image

https://kazmax.zpp.jp/apache/apache2.html#ah_1

MySQLデータベース作成

ユーザ「mysql」を作成し、データベースを初期化。

/usr/sbin/useradd mysql
/usr/local/bin/mysql_install_db -user=mysql

MySQLを起動(常駐)

/usr/local/bin/mysqld_safe -user=mysql &

rootパスワードを入れる

/usr/local/bin/mysqladmin -u root password “パスワードを入力”

MySQLにroot権限でログインして、データベース(ここではreviewboard)を作成。

mysql -u root -p

mysql> GRANT ALL privileges ON *.* TO reviewboard@localhost IDENTIFIED BY ‘reviewboard’ WITH GRANT OPTION;
mysql> CREATE DATABASE reviewboard DEFAULT character SET utf8;

つづいて、mysqlユーザのパスワード設定。

mysql> set password for mysql@localhost = password(‘パスワードを入力’);

ちなみに、ここが正しく設定されていないと、

Something broke!

と表示された。

ReivewBoardインストール

以下のコマンドで作成。ここでは” /var/www/reviews.example.com"に作成する。

sudo rb-site install /var/www/reviews.example.com

GUIの設定画面が現れるので、順に回答していく。

image

Domain Name: review
Root Path:/reviews/
Database:mysql
Database Name:reviewboard
Database Server:localhost
database username/password xxx
web server apache
wsqi
. etc.

(参考サイト)
https://www.atmarkit.co.jp/fjava/rensai4/devtool19/devtool19_3.html

パーミッションの変更

作成したディレクトリ”/var/www/reviews.example.com"にApacheからアクセスするために、アクセス権限を与える。

$ chown -R www-data /var/www/reviews.example.com/htdocs/media/uploaded
$ chown -R www-data /var/www/reviews.example.com/data

Apacheサーバの設定

Apache2とmod_wsgiを選択した場合の設定例。
reviews.example.comディレクトリで自動生成された設定ファイルをApacheの設定ファイルに反映する。

$ cd /etc/apache2/sites-available
$ cp /var/www/reviews.example.com/conf/apache-wsgi.conf reviews.example.com.conf
$ cd ../sites-enabled
$ ln -s ../sites-available/reviews.example.com.conf .

*apache-wsgi.confがASCIIコードでUTF-8に変換しないといけないという記事もあった。
自分の場合はUTF-8だったから問題はなかったけれども。

最後に、/etc/apache2/sites-enabled/000-defaultを削除する。
https://www.natswell.com/techcolumn/2011/10/06/review-board/

Apache再起動。

$apachectl restart

ついに設定完了か?、と思ったらいきなり以下のエラーがでた。

(1146, “Table ‘reviewboard.django_site’ doesn’t exist”)
image

‘reviewboard.django_site’ が存在しない、とのこと。
djangoのコマンドで manage.py syncdbを叩かないといけないらしい。
よくわからないが、以下のコマンドを叩いて直った。

sudo rb-site upgrade /var/www/reviews.example.com/

https://groups.google.com/forum/?fromgroups=#!topic/reviewboard/8b2fH37hLC8

ReviewBoardインストール完了

サイトにアクセスして、ログインできれば成功。
ここでは(https://localhost/review/ )にアクセス。

image

うまくインストール出来ない時の対処方法

Apacheエラーログをみる

エラーログを見れば、メッセージからなんとなく足りないPythonモジュールがわかるかも。

/var/log/apache2/error.log

Pythonデバックフラグを立てる

Something broke! とか出た場合は、apache2ログでは分からない。
こんなときは、デバックフラグをたてて、メッセージを確認する。

reviewboardのディレクトリ配下で、conf/settings_local.pyを開く。
ここでは、(/var/www/reviews.example.com/conf/settings_local.py)
DEBUG = True
と書き換える。

サイトにアクセスしてて、エラーすればメッセージがでる。
出たメッセージをもとにGoogle先生に相談する。