uranuslei

链接

在Ubuntu Server上安装ReviewBoard

2009年2月24日 01:30 | Comments(0) | Category:开发工具 | Tags:

    回家之前在实验室的服务器上成功安装了ReviewBoard,为项目组今后的代码审查提供了很好的一个平台。一个多月过去了,现在终于有时间把安装过程做个记录,以备忘。

1.  背景介绍和安装目标
    关于ReviewBoard的介绍,详见我的前一篇日志,这里不再赘述。我们服务器的操作系统是Ubuntu Server,已经安装了mysql和apache,此次安装的目的是在实验室局域网内安装ReviewBoard,要求支持Git格式的代码审查。

2.  准备工作
    ReviewBoard是用Django开发的,所以要首先安装Django.Django其实就是一系列的python软件包,安装命令如下:
        $ sudo apt-get install build-essential subversion python-imaging python-flup python-dev memcached libmemcache-dev
    然后手动安装cmemcache(Python的memcached绑定):
        到这里 http://gijsbert.org/downloads/cmemcache/ 下载最新版; 然后从源码安装.
    由于服务器上原来的mysql没有python模块,所以要安装之:
        $ sudo apt-get install python-mysqldb
    此外,还要安装Git:
        $ sudo apt-get install git-core
    到现在,准备工作已经完成了.

3.  安装ReviewBoard
    使用python-setuptools这个工具,安装ReviewBoard变得非常容易:
        $ sudo apt-get install python-setuptools
        $ sudo easy_install ReviewBoard

    这里需要提到一个时区问题.第一次安装ReviewBoard的时候,安装过程很顺利,但是最后创建出来的站点的时区是默认的美国太平洋时间,而不是北京时间.当我尝试在站点配置页面修改时区的时候,整个站点就挂了.后来重装了几次,仍然如此.最后找到一个临时的解决办法,就是在创建站点之前,先手动修改这个文件:/usr/lib/python2.5/site-packages/ReviewBoard-0.9.dev_20090115- py2.5.egg/reviewboard/settings.py(注意该目录中的ReviewBoard_xxx.egg部分因你的 ReviewBoard版本和安装时间而异),将其中的
        TIME_ZONE = 'US/Pacific'
    改为
        TIME_ZONE = 'Asia/Shanghai'
    注意,这里填Asia/Beijing会出错,因为似乎现有的时区名称列表是49年之前制订的,而北京时区则是在伟大祖国成立之后才有的.所以这里你可以填Asia/Shanghai, Asia/Chongqing, 甚至Asia/Urumqi, 但就是不能填Asia/Beijing.修改之后,你就可以继续下面的工作了.

4.  创建ReviewBoard站点
    创建你的ReviewBoard站点很容易,只需要一条命令:
        $ sudo rb-site install /var/www/reviews.cgcad.com
    其中,最后的目录名是你要存放网站相关文件的目录,可以自行选择.该命令会弹出一系列的提示框,指导你一步一步的填写网站信息,如网站名,网站网址,使用何种数据库,数据库名,使用何种缓存机制,等等.其中,重要的一条是数据库,要确保你在运行这条命令之前已经为你的ReviewBoard站点创建了一个数据库实例,而且你所填的用户名和密码对该数据库实例有写权限.

5.  配置ReviewBoard站点
    站点创建好了,接下来是相关的配置工作.首先,要保证你的web服务器对网站有关目录有写权限:
        $ chown -R www-data:www-data /var/www/reviews.cgcad.com/htdocs/media/uploaded
    其中,www-data分别是apache默认的用户名和用户组名,/xx/media/uploaded目录则是存放网站上传文件的目录名.
    接下来,将ReviewBoard为你生成的配置文件拷贝到apache目录下:
        $ sudo cp /var/www/reviews.cgcad.com/conf/apache_modpython.conf /etc/apache2/conf.d/reviews.conf
    这里为了方便,把配置文件的名字改为了reviews.conf,你完全可以保留原来的配置文件名字.
    一般情况下,默认的配置文件已经能使一个网站正常工作了.具体到我的情况,由于我想把ReviewBoard站点作为我们实验室一个主站点的分目录的形式,所以需要修改一下配置文件:
    原配置文件: 

<VirtualHost *:80>
        ServerName reviews.cgcad.com
        DocumentRoot /var/www/reviews.cgcad.com/htdocs

        # Error handlers
        ErrorDocument 500 /errordocs/500.html

        # Serve django pages
        <Location "/">
                PythonPath "['/var/www/reviews.cgcad.com/conf'] + sys.path"
                SetEnv DJANGO_SETTINGS_MODULE reviewboard.settings
                SetHandler mod_python
                PythonHandler django.core.handlers.modpython
                PythonAutoReload Off
                PythonDebug Off
                # Used to run multiple mod_python sites in the same apache
                PythonInterpreter reviewboard_reviews_cgcad_com
        </Location>

        # Serve static media without running it through mod_python
        # (overrides the above)
        <Location "/media">
                SetHandler None
        </Location>
        <Location "/errordocs">
                SetHandler None
        </Location>

        # Alias static media requests to filesystem
        Alias /media /var/www/reviews.cgcad.com/htdocs/media
        Alias /errordocs /var/www/reviews.cgcad.com/htdocs/errordocs
</VirtualHost>
 

    修改后的配置文件:

#<VirtualHost *:80>
#       ServerName dev.cgcad.com
#       DocumentRoot /var/www/reviews/htdocs
#
#       # Error handlers
#       ErrorDocument 500 /errordocs/500.html

        # Serve django pages
        <Location "/reviews">
                PythonPath "['/var/www/reviews.cgcad.com/conf'] + sys.path"
                SetEnv DJANGO_SETTINGS_MODULE reviewboard.settings
                SetHandler mod_python
                PythonHandler django.core.handlers.modpython
                PythonAutoReload Off
                PythonDebug Off
                # Used to run multiple mod_python sites in the same apache
                PythonInterpreter reviewboard_reviews
        </Location>

        # Serve static media without running it through mod_python
        # (overrides the above)
        <Location "/media">
                SetHandler None
        </Location>
        <Location "/errordocs">
                SetHandler None
        </Location>

        # Alias static media requests to filesystem
        Alias /media /var/www/reviews.cgcad.com/htdocs/media
        Alias /errordocs /var/www/reviews.cgcad.com/htdocs/errordocs
#</VirtualHost>
 

 

    重启apache,然后在浏览器中输入你设定的网址,ReviewBoard站点应该就能正常工作了:)