This is for Ubuntu 12.04, it may vary slightly for other distributions.
- Install postgres and libpq-dev (required for django backend)
sudo apt-get install postgresql libpq-dev
- Install psycopg2
sudo easy_install psycopg2
- Create the reviewboard database in postgres and a user with access to it.
sudo su postgres -c psql
postgres# CREATE ROLE myuser WITH SUPERUSER;
postgres# CREATE DATABASE reviewboard WITH OWNER myuser;
postgres# ALTER ROLE myuser WITH PASSWORD 'secret';
- Stop apache and any other service which might modify the original database
sudo service apache2 stop
sudo service mysql stop
Note that stopping the mysql deamon might be a little bit drastic it will affect all databases running on that server. In my case reviewboard was the only database soI did it as a precaution.
- Dump the original reviewboard database (from MySQL)
sudo rb-site manage /var/www/yourcodereviewsite dumpdb > reviewboard.dump
Note that this can take several hours depending on the size.
- Edit your local reviewboard config to use Postgres instead of MySQL
→ change the django backend from
- Create the reviewboard table structures in the Postgres db
sudo rb-site manage /var/www/yourcodereviewsite syncdb
- Clean default data inserted by the rb-site command (will interfere with loaddb otherwise)
sudo su postgres -c psql
postgres# TRUNCATE django_content_type CASCADE;
postgres# TRUNCATE scmtools_tool CASCADE;
- Load the MySQL database dump
sudo rb-site manage /var/www/yourcodereviewsite loaddb reviewboard.dump
- Cleanup some database meta data as per https://groups.google.com/forum/#!topic/reviewboard/Ehv0JwthROg:
psql -t reviewboard -c "SELECT E'select setval(\'' || c.relname || E'\', (select max(id)+1 from ' || replace(c.relname, '_id_seq', '') || '), false);' FROM pg_class c WHERE c.relkind = 'S';" | psql reviewboard
- Restart apache
sudo service apache2 start
At work we recently started to use ReviewBoard as code review tool. I installed it on a Ubuntu 12.04 VM as the Windows support is riddled with problems (RB has abandoned official Windows support – so it might work or it might not). Following the instructions for installing it on Linux with MySQL as database backend and using Apache as host was easy and worked pretty much out of the box. Our central repository is hosted in subversion.
Our network is controlled by a Windows Domain Controller and we wanted the ability to authenticate the ReviewBoard users via the domain login. In the following I will assume that the domain is called COMPANY.LOCAL
- I pretty much followed these instructions except I only installed likewise-open5, likewise-open5-gui but not not winbind (which gave a weird PAM error when I tried to install it)
- When trying to join the domain as per the above linked page I got an error which led me to this bug report on launchpad. Following the instructions to change /etc/nsswitch.conf to look like this resolved the problem:
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.
passwd: compat lsass
group: compat lsass
# 04102010 Add line as per Likewise Open Admin Guide
hosts: files dns
# 04122010 Commenting out hosts below as per ubuntu bug 555525
#hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
protocols: db files
services: db files
ethers: db files
rpc: db files
- Reboot and then join the domain
sudo -s domainjoin-cli --loglevel info --log . join COMPANY.LOCAL USER
- Note that
USER needs to be a domain user with sufficient rights to add a computer to the domain
- For activating the support in ReviewBoard I installed python_ldap and pydns and then configured the Authentication Method in the ReviewBoard admin section to Active Directory authentication method using the following settings:
Domain controller: IpOfYourWindowsDomainController
Group name: software
Custom search root: none
Recursion depth: -1
And that was it – now every user part of the software domain group can authenticate with their domain login.