sudo apt-get install trac
创建 Trac 的项目存储目录和系统目录:
/srv/trac/sites 名称为 <projectname> 的项目将存储在 /srv/trac/sites/<projectname> 下
/var/lib/trac/eggs Python 系统的 Egg 安装包缓存路径
sudo mkdir -p /srv/trac/sites sudo chown -R www-data.www-data /srv/trac/sites sudo mkdir -p /var/lib/trac/eggs sudo chown -R www-data.www-data /var/lib/trac/eggs
假设项目所对应的 Subversion 为 /srv/svn/<projectname> 。
sudo svn-trac /srv/trac/sites/<projectname> initenv
根据提示输入项目名称,数据库(默认为 SQLite )和 SVN 路径。
项目存储目录初始化完成后修改文件系统权限:
sudo chown -R www-data.www-data /srv/trac/sites/<projectname>
在 Apache 服务器中运行 Trac 有多种方式,主要有 CGI,mod_python 和 mod_wsgi。现在,WSGI 已经成为了 Python Web 应用程序最主要的部署方式。
新建一个 WSGI 启动脚本到 /srv/trac/cgi-bin/trac.wsgi 文件:
/srv/trac/cgi-bin/trac.wsgi
#!/usr/bin/python # -*- coding: utf-8 -*- import os os.environ['TRAC_ENV_PARENT_DIR'] = '/srv/trac/sites' os.environ['PYTHON_EGG_CACHE'] = '/var/lib/trac/eggs' def application(environ, start_request): from trac.web.main import dispatch_request return dispatch_request(environ, start_request)
并将以下配置加入 Apache 配置文件中:
WSGIScriptAlias /projects /srv/trac/cgi-bin/trac.wsgi <Directory /srv/trac/cgi-bin> WSGIApplicationGroup %{GLOBAL} Order deny,allow Allow from all </Directory> <LocationMatch /projects/[^/]+/login> AuthType Basic AuthBasicProvider ldap AuthLDAPURL "ldap://localhost/ou=People,dc=localdomain?uid" AuthzLDAPAuthoritative Off AuthName "Trac Login" Require valid-user </LocationMatch>
在这里,使用了 LDAP 认证方式,你也可以使用其他身份认证方式。
重新启动 Apache 服务:
sudo apache2 restart
为了管理 Trac 站点,需要给每个项目创建管理员帐号。管理员帐号可以创建里程碑、报告或者添加新的任务单类型等。
sudo trac-admin /srv/trac/sites/<projectname> permission add <username> TRAC_ADMIN
<username> 必须已经在设置的身份验证方式中存在。可以多次执行上述命令添加多个管理员或者多个项目。
sudo apt-get install trac-accountmanager
在配置文件中添加如下选项,启用插件。
trac.ini
[components] acct_mgr.* = enabled
注:AccountManager 插进只支持文件认证方式。其他如 LDAP 认证可以使用外部工具进行管理。
sudo apt-get install trac-wysiwyg
在配置文件中添加如下选项,启用插件。
trac.ini
[components] tracwysiwyg.* = enabled
在项目的 Subversion 目录下新建触发脚本 post-commit 。
hooks/post-commit
#!/bin/sh REPOS="$1" REV="$2" LOG=`svnlook log -r $REV $REPOS` AUTHOR=`svnlook author -r $REV $REPOS` TRAC_ENV='/srv/trac/<projectname>' /usr/bin/python /usr/share/doc/trac/contrib/trac-post-commit-hook / -p "$TRAC_ENV" / -r "$REV" / -u "$AUTHOR" / -m "$LOG"
设置文件权限:
sudo chown www-data.www-data post-commit sudo chmod 755 post-commit
在配置文件中添加如下选项:
trac.ini
[components] tracopt.ticket.commit_updater.* = enabled