Trac + SVN + Apache 搭建项目管理系统

最近刚到新公司,团队成立不久,搞了一套管理工具,好不好用不知道,但先把笔记分享下。

使用 Trac + Subversion + Apache 搭建管理系统,系统环境是Windows Server 2008 64位,安装的统一都是32位,一开始想搞64位,结果还是走回来了。安装版本如下:

Subversion:1.8.5(纯Subversion,不是VisualSVN)
Apache:2.2.25-win32-x86-no_ssl
Python:2.7.6
Trac:1.0.1(使用 pip自动安装)

 

安装 Subversion 和 Apache 都是exe文件,不细说,注意安装路径别有空格。
1. 复制 Subversion 安装路径下 bin 下的 mod_authz_svn.so 和 mod_dav_svn.so 拷贝到 Apache 的 modules 文件夹下;再将 Subversion 下的 bin 下的所有 dll 文件拷贝到 Apache 的 bin 目录下
2. 建立 SVN 版本库根目录,如D:\SVN,使用 Apache 下的 bin 下的 htpasswd 命令创建用户/密码文件
创建用户zj 输入:htpasswd –c D:\svn\passwd zj 说明:使用-c参数来创建一个passwd文件
输出: New password: *****
Re-type new password: *****
Adding password for user zj
再创建用户的时候就不用-c参数,而是用-m参数
(passwd 中的密码使用MD5加密,且相同密码加密后的内容不同)
3. 在 D:\SVN 下创建授权文件 authz,配置参考如下:
[groups] admin = john, kate
devteam1 = john, rachel, sally
devteam2 = kate, peter, mark
# 为所有库指定默认访问规则
# 所有人可以读,管理员可以写,危险分子没有任何权限,[/]代表根目录
[/]
* = r
@admin = rw
dangerman =
# 允许开发人员可以完全访问他们的项目版本库
[test:/]
@devteam1 = rw
[java:/]
@devteam2 = rw
4. 建立版本库:
Subversion 安装路径下的 bin 下 svnadmin create /opt/svn/project2,不需修改 svnserver.conf 配置
5. 修改 Apache 的 httpd.conf 配置,去掉下面两行的注释
    #LoadModule dav_module modules/mod_dav.so
    #LoadModule dav_fs_module modules/mod_dav_fs.so
    加上两行:
    LoadModule dav_svn_module modules/mod_dav_svn.so
    LoadModule authz_svn_module modules/mod_authz_svn.so
下面是安装 Python 相关的:
1. 安装 Python
2. 安装 distribute
3. 安装 pip
4. 安装 Genshi
5. 安装 Trac,把 svn-win32-1.8.5\python 下的两个文件夹拷贝至 Python 安装路径下的 Lib 目录
6. 新建 Trac 工程:trac-admin d:\Trac\test initenv
7. 启动Trac:tracd –port 8000 d:\Trac\test
8. 把对应的 mod_wsgi.so(此处用的 mod_wsgi-win32-ap22py27-3.3.so) 放到 Apache 的 modules
9. 编写 trac.wsgi,放到D:\Trac\test\apache\trac.wsgi:(Apache 配置中用到)

import os

os.environ['PYTHON_EGG_CACHE'] = ‘D:/Trac/eggs’

import trac.web.main
def application(environ, start_response):
    environ['trac.env_path'] = ‘D:/Trac/test’ 
    return trac.web.main.dispatch_request(environ, start_response)

10. 在 Apache 的 httpd.conf 中配置:

    WSGIScriptAlias /trac/test D:\Trac\test\apache\trac.wsgi

<Directory D:\Trac\test\apache>
        WSGIApplicationGroup %{GLOBAL}
        Order deny,allow
        Allow from all
    </Directory>

11. 加上用户验证:

<Location /trac/test>
        AuthType Basic
        AuthName “Trac Login”
        AuthUserFile D:/SVNRepositories/passwd
        Require valid-user
    </Location>

12. 为 Trac 添加 Trac_ADMIN 用户 (必须是用户/密码文件中存在的用户,此处只是赋予权限)

trac-admin d:\trac\mss

permission add zhangxinrong TRAC_ADMIN

permission list zhangxinrong

13. 与本地 SVN 库关联,在 trac.ini 中配置:(下面是多个版本库的配置,trac.ini  如含中文,须保存为BOM-UTF-8 格式)

[repositories]

test.dir = D:/SvnRepository/test
test.description = Test
test.type = svn
test.url = http://服务器地址/svn/test


test1.dir = D:/SvnRepository/test1
test1.description = Test1
test1.type = svn
test1.url = 
.alias = mss
.hidden = false

14. 重新同步 Trac 缓存(每次新建版本库,都需如此)

trac-admin d:\trac\test repository resync “*”

15. 在 trac.ini 添加 components 配置

[components]

tracopt.versioncontrol.svn.* = enabled

tracopt.ticket.commit_updater.* = enabled
这样允许通过SVN提交信息来更新任务单。
如:
Refs #123 将引用任务单#123
Fixes #123 将引用并把任务单#123状态修改为closed
16. 安装 Bable 0.9.6,显示中文要用到
最后发现 Trac 页面是英文。是因为 Trac 安装完后 Python\Lib\site-packages 下的 Trac 文件夹中没有 locale 目录。下载一个 Trac 源码中有,但用源码安装还是不行,遂在 Trac 下自己建了 locale\…目录,目录结构参照源码。然后把简体中文的 po 文件用 poEdit 工具转换成 mo文件,放进去,就行了。
后面具体的 Trac 使用还没太多经验,仅供参考。
——
我们看到别人身上的光芒,只是他无数努力的一角。