コードレビューが不十分だったと思ったので、コードレビューのためのツールを調べた。
調べてみるといろいろあるものだ。
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!“が起動されていれば成功。
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の設定画面が現れるので、順に回答していく。
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”)
‘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/ )にアクセス。
うまくインストール出来ない時の対処方法
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先生に相談する。