python 下的trac +subversion

python 下的trac +subversion

有谁知道具体的trac 怎么使用吗? 说明都是外文的 头都看大了!
恳请指导! trac +wiki管理!

我以前在blog中有一些使用说明,找一找吧。

http://blog.donews.com/limodou/
谢谢二楼的!问题已经解决了!你的blog 里的解释我已经看过了!
真的很不错,学习~~~
转自肥肥世家debian学习笔记
http://www.ringkee.com

9.13. 安装Trac服务器
Trac是用Python写的一个基于Web的事件跟踪系统,它使用WiKi作为文档的格式,Subversion作为版本控制系统。可帮助开发人员进行源码版本管理、Bug跟踪和讨论。Debian Sarge带的Trac是0.8版本,该版本好象有问题,安装完成后不能创建Trac环境。Sid带是0.9版的,可正常使用。下面以0.9版为例介绍安装过程。

安装和配置

要安装Trac,需先安装Subversion、SQLite和ClearSilver。详细需求请参考官方网站http://projects.edgewall.com/trac/wiki/TracInstall。如果你使用的是Debian,则用apt-get install trac命令安装即可,Trac依赖的所有软件包系统会自动安装。安装完成后,就可进行配置了。Trac可以设置成Standalone服务器,只供本机使用。也可以与Apache等Web服务器集成,如果与Apache集成,则可配置成CGI、FastCGI或Mod_Python等方式。

配置成Standalone方式:

创建Subversion库:

debian~:# svn create /root/subversion

初始化Trac环境:

debian~:# trac-admin /root/trac initenv

/root/trac目录不用事先创建,Trac会自动创建。初始化时,trac-admin程序会问你项目名、数据库连接字串和Subversion库位置这三个参数。如果你的数据库是使用SQLite,则它的连接串是sqlite:db/trac.db,系统已默认指定了。所有初始化参考都会保存在/root/trac/conf/trac.ini文件中。

[wiki]
ignore_missing_pages = false

[header_logo]
src = common/trac_banner.png
alt = Trac
height = 73
link = http://trac.edgewall.com/
width = 236

[logging]
log_file = trac.log      #日志文件名,位于trac/log目录下
log_level = DEBUG        #日志级别,分别是CRITICAL、ERROR、WARN、INFO和DEBUG
log_type = file          #日志形式,file:生成trac.log日志文件,syslog:通过命名管道/dev/log传送到syslogd

[trac]
default_charset = iso-8859-15
ignore_auth_case = false
permission_store = DefaultPermissionStore
check_auth_ip = true
database = sqlite:db/trac.db
templates_dir = /usr/share/trac/templates
default_handler = WikiModule
metanav = login,logout,settings,help,about
mainnav = wiki,timeline,roadmap,browser,tickets,newticket,search
repository_dir = /data/subversion

[notification]
always_notify_owner = false
smtp_always_cc =
smtp_password =
smtp_enabled = false
smtp_replyto = trac@localhost
smtp_port = 25
always_notify_reporter = false
smtp_server = localhost
smtp_from = trac@localhost
smtp_user =

[project]
url = http://example.com/
footer =  Visit the Trac open source project at<br /><a href="http://trac.edgewall.com/">http://trac.edgewall.com/</a>
name = Developer
descr = My example project
icon = common/trac.ico

[mimeviewer]
php_path = php
enscript_path = enscript
tab_width = 8
max_preview_size = 262144

[attachment]
max_size = 262144

[timeline]
changeset_show_files = 0
ticket_show_details = false
default_daysback = 30

[ticket]
default_version =
default_component = component1
default_type = defect
restrict_owner = false
default_milestone =
default_priority = major

[browser]
hide_properties = svk:merge

详尽的配置选项说明请参考官方的TracGuide文档。

启动Trac服务:

debian~:# tracd --port 8000 /root/trac

使用浏览器访问"http://localhost:8000"即可访问Trac系统了。

Standalone方式只能由本机访问,不能放到网上共享。所以我们一般都是把Trac配置成与Apache服务器集成的形式。这时,我们要配置Apache服务器,告诉它如何执行Trac的CGI程序。如果你的系统是Debian,则在/etc/apache2/conf.d目录下创建一个trac.conf文件,内容如下:

Alias /trac/chrome/common /usr/share/trac/htdocs
<Directory "/usr/share/trac/htdocs">
  Order allow,deny
  Allow from all
</Directory>
ScriptAlias /trac /usr/share/trac/cgi-bin/trac.cgi
<Location "/trac">
  SetEnv TRAC_ENV "/data/trac/"
</Location>

<Location "/trac/login">           #设置Trac用户验证
  AuthType Basic
  AuthName "Trac"
  AuthUserFile /etc/apache2/trac.passwd            #trac.passwd文件用htpasswd2命令生成
  Require valid-user
</Location>


最后不要忘记设置Trac实例目录/data/trac的访问权限,使它能被Apache实例访问,设置方法如下:

debian:~# chown -R www-data.www-data /data/trac

重启服务器,使用浏览器访问"http://apache_server/trac"即可。

我们也可以在一台服务器上安装多个trac实例来管理多个Subversion库。假设我们有两个Subversion库,分别是project1和project2,我们就可先用trad-admin命令分别创建两个trac实例,再针对这两个实例配置trac.conf,如:

Alias /trac/chrome/common /usr/share/trac/htdocs
<Directory "/usr/share/trac/htdocs">
  Order allow,deny
  Allow from all
</Directory>

ScriptAlias /trac/project1 /usr/share/trac/cgi-bin/trac.cgi
<Location "/trac/project1">
  SetEnv TRAC_ENV "/data/trac/project1"
</Location>

<Location "/trac/project1/login">           #设置Trac用户验证
  AuthType Basic
  AuthName "Trac"
  AuthUserFile /etc/apache2/trac.passwd     #trac.passwd文件用htpasswd2命令生成
  Require valid-user
</Location>

ScriptAlias /trac/project2 /usr/share/trac/cgi-bin/trac.cgi
<Location "/trac/project2">
  SetEnv TRAC_ENV "/data/trac/project2"
</Location>

<Location "/trac/project2/login">           
  AuthType Basic
  AuthName "Trac"
  AuthUserFile /etc/apache2/trac.passwd            
  Require valid-user
</Location>


这样,我们就可用http://servertotrac/trac/project1和http://servertotrac/trac/project2访问两个项目。

通过FastCGI和Mod_Python方式的配置方法请参考Trac Project网站http://projects.edgewall.com/trac/。

管理访问许可

Trac的许可权限管理简单而有效,它可通过trac-admin命令来管理。用trac-admin可管理用户的许可权限,但用户的管理是通过Apache的htpasswd2命令设置的,根据上面的Apache CGI配置,用户名和密码是存放在/etc/apache2/trac.passwd文件中。下面这个命令可用来列出当前有效的许可权限和已设置的许可权限。

debian:~# trac-admin /data/trac permission list
User       Action
--------------------------
anonymous  BROWSER_VIEW
anonymous  CHANGESET_VIEW
anonymous  FILE_VIEW
anonymous  LOG_VIEW
anonymous  MILESTONE_VIEW
anonymous  REPORT_SQL_VIEW
anonymous  REPORT_VIEW
anonymous  ROADMAP_VIEW
anonymous  SEARCH_VIEW
anonymous  TICKET_CREATE
anonymous  TICKET_MODIFY
anonymous  TICKET_VIEW
anonymous  TIMELINE_VIEW
anonymous  WIKI_CREATE
anonymous  WIKI_MODIFY
anonymous  WIKI_VIEW


Available actions:
BROWSER_VIEW, CHANGESET_VIEW, CONFIG_VIEW, FILE_VIEW, LOG_VIEW,
MILESTONE_ADMIN, MILESTONE_CREATE, MILESTONE_DELETE, MILESTONE_MODIFY,
MILESTONE_VIEW, REPORT_ADMIN, REPORT_CREATE, REPORT_DELETE, REPORT_MODIFY,
REPORT_SQL_VIEW, REPORT_VIEW, ROADMAP_ADMIN, ROADMAP_VIEW, SEARCH_VIEW,
TICKET_ADMIN, TICKET_APPEND, TICKET_CHGPROP, TICKET_CREATE, TICKET_MODIFY,
TICKET_VIEW, TIMELINE_VIEW, TRAC_ADMIN, WIKI_ADMIN, WIKI_CREATE,
WIKI_DELETE, WIKI_MODIFY, WIKI_VIEW

上面列出的内容是还没进行许可权限设置时的情况,Available actions段的内容就是有效许可权限的列表,每个权限的解析可查询TracGuide中的TracPermission节的内容。其中TRAC_ADMIN许可相当于Linux中的root用户,拥有最高的权限。如果我们要把TRAC_ADMIN许可授予jims用户,则可这样设置:

debian:~# trac-admin /data/trac permission add jims TRAC_ADMIN

WIKI_ADMIN是WIKI系统的管理员,具有WIKI_CREATE,WIKI_DELETE, WIKI_MODIFY, WIKI_VIEW权限。也就是WIKI页面的创建、删除、修改和查看四种权限,授予方式同上。

删除用户的许可可用remove关健字,如:

debian:~# trac-admin /data/trac permission remove jims TRAC_ADMIN

在Trac的权限管理中可以设置组以简化权限配置,下例将设置一个admin组,具有TRAC_ADMIN许可权限,把jims和ringkee两个用户加入到该组中,使他们也具有TRAC_ADMIN许可权限:

debian:~# trac-admin /data/trac permission add admin TRAC_ADMIN
debian:~# trac-admin /data/trac permission add ringkee admin
debian:~# trac-admin /data/trac permission add jims admin

在Trac的用户中,有两个默认的用户,一个是anonymous,表示匿名用户;一个是authenticated,表示所有已通过验证的用户。我们可以把许可权赋予这两个用户,从而简化我们的许可权限配置。

定制Ticket字段

Trac的Ticket是可定制的,除默认的Priority、Milestone、Component等字段之外,我们还可增加自已的字段。方法是在trac.ini里增加[ticket-custom]配置段。配置语法如下:

字段名(FIELD_NAME) = 字段类型(TYPE)
字段名选项(FIELD_NAME.OPTION) = 值(VALUE)
...

下面是有效的字段类型和选项说明:

    * text: A simple (one line) text field.
          o label: Descriptive label.
          o value: Default value.
          o order: Sort order placement. (Determines relative placement in forms.)
    * checkbox: A boolean value check box.
          o label: Descriptive label.
          o value: Default value (0 or 1).
          o order: Sort order placement.
    * select: Drop-down select box. Uses a list of values.
          o options: List of values, separated by | (vertical pipe).
          o value: Default value (Item #, starting at 0).
          o order: Sort order placement.
    * radio: Radio buttons. Essentially the same as select.
          o label: Descriptive label.
          o options: List of values, separated by | (vertical pipe).
          o value: Default value (Item #, starting at 0).
          o order: Sort order placement.
    * textarea: Multi-line text area.
          o label: Descriptive label.
          o value: Default text.
          o cols: Width in columns.
          o rows: Height in lines.
          o order: Sort order placement.

下面是一些示例:

[ticket-custom]

test_one = text
test_one.label = Just a text box

test_two = text
test_two.label = Another text-box
test_two.value = Just a default value

test_three = checkbox
test_three.label = Some checkbox
test_three.value = 1

test_four = select
test_four.label = My selectbox
test_four.options = one|two|third option|four
test_four.value = 2

test_five = radio
test_five.label = Radio buttons are fun
test_five.options = uno|dos|tres|cuatro|cinco
test_five.value = 1

test_six = textarea
test_six.label = This is a large textarea
test_six.value = Default text
test_six.cols = 60
test_six.rows = 30

备份和恢复

Trac系统的备份和恢复也可使用trac-admin工具来完成,还可支持热备份。备份命令如下:

debian:~# trac-admin /data/trac hotcopy ~/backup

执行该命令时,Trac会自动锁住SQLite数据库,并把/data/trac目录拷贝到~/backup目录。恢复备份也很简单,只需停止Trac进程,如Apache服务器或tracd服务器。接着把~/backup整个目录恢复回/data/trac目录就可以了。

软件更新

当有新版的Trac软件推出时,为了使用新的功能和减少Bugs,我们需把旧版本的Trac系统升级到新版本。在Debian中系统,Trac软件包的安装脚本会自动帮我们完成升级,但了解手动升级方法可使我们对Trac软件的结构有更深的认识,所以我在这里也简单介绍一下如何手动升级Trac软件包。

为了减少软件冲突,最好把旧版软件包的程序删除:

debian:~# rm -rf /usr/lib/python2.3/site-packages/trac
debian:~# rm -rf /usr/share/trac

  
/data/trac实例目录不能删除。

升级软件包,下载最新的Trac软件包,并安装:

debian:~/inst/trac-0.9.2# python setup.py install

升级实例:

debian:~# trac-admin /data/trac upgrade

升级文档:

debian:~# trac-admin /data/trac wiki upgrade

9.14. 安装Subversion服务器
Subversion是新一代的开源版本控制系统,用以取代CVS。有关Subversion最详尽的资料就是官方的Subversion Book了。它是由开源社区编写的自由图书,已通过O'Reilly Media出版。下面简单介绍一下Subversion在Debian下的安装和配置过程。

安装:

debian:~# apt-get install subversion subversion-tools

创建一个新的储存库:

debian:~# svnadmin create /data/svn

在/data/svn目录创建一个新的空储存库,数据储存方式默认采用Berkeley DB。

导入你的源码:

debian:~# svn import /data/ldap file:///data/svn/ldap

把/data/ldap整个目录导入到储存库中的ldap目录中,储存库的ldap目录会自动创建。

显示储存库内容:

debian:~# svn list file:///data/svn/ldap
ldap_add.py
ldap_del.py
ldap_modify.py
ldap_search.py

显示ldap目录内容,成功导入。

上面我使用了file:///形式的URL来访问Subversion库,这表示在本地通过文件系统访问。但我们的Subversion库可能需要通过网络被其它用户访问,这就需要用到其它的协议,下表是Subversion支持的各种访问协议:

Table 9.1. 访问协议

协议 访问方法
file:/// 通过本地磁盘访问。
http:// 与Apache组合,通过WebDAV协议访问。
https:// 同上,但支持SSL协议加密连接。
svn:// 通过svnserve服务自定义的协议访问。
svn+ssh:// 同上,但通过SSH协议加密连接。

下面介绍与Apache组合通过WebDAV方式访问Subversion库的方式:

首先要安装好Apache2,并安装好提供WebDAV访问和svn访问的的mod_dav模块和mod_dav_svn模块:

debian:~# apt-get install apache2 libapache2-svn

配置文件位于/etc/apache2/mods-enabled/目录下,配置文件共有两个,分别是dav_svn.conf和dav_svn.load,dav_svn.load文件负责装载必要的模块,内容如下:

# Load mod_dav_svn when apache starts
LoadModule dav_svn_module /usr/lib/apache2/modules/mod_dav_svn.so
LoadModule authz_svn_module /usr/lib/apache2/modules/mod_authz_svn.so

在装载mod_dav_svn.so前,必须先装载mod_dav.so模块。它由dav.load文件控制,内容如下:

LoadModule dav_module /usr/lib/apache2/modules/mod_dav.so

dav_svn.conf是mod_dav_svn.so模块的配置文件,内容如下:

# dav_svn.conf - Example Subversion/Apache configuration
#
# For details and further options see the Apache user manual and
# the Subversion book.

# <Location URL> ... </Location>
# URL controls how the repository appears to the outside world.
# In this example clients access the repository as http://hostname/svn/
<Location /svn>                                 #设置访问路径

  # Uncomment this to enable the repository,
   DAV svn                                      #启用

  # Set this to the path to your repository
   SVNPath /data/subversion                     #设置储存库路径,仅支持单个储存库,该路径要可被Apache进程访问。
  #SVNParentPath /data/subversion               #如果subversion下有多个储存库,则用SVNParentPath
  # The following allows for basic http authentication.  Basic authentication
  # should not be considered secure for any particularly rigorous definition of
  # secure.

  # to create a passwd file                     #按下面的步骤创建Apache用户验证文件
  # # rm -f /etc/apache2/dav_svn.passwd
  # # htpasswd2 -c /etc/apache2/dav_svn.passwd dwhedon
  # New password:
  # Re-type new password:
  # Adding password for user dwhedon
  # #

  # Uncomment the following 3 lines to enable Basic Authentication
   AuthType Basic                               #启用Apache基础验证
   AuthName "Subversion Repository"             #设置验证框标题
   AuthUserFile /etc/apache2/dav_svn.passwd     #指定验证用户文件名

  # Uncomment the following line to enable Authz Authentication
   AuthzSVNAccessFile /etc/apache2/dav_svn.authz  #启用目录级别授权,dav_svn.authz是授权配置文档

  # The following three lines allow anonymous read, but make
  # committers authenticate themselves.

  #<LimitExcept GET PROPFIND OPTIONS REPORT>    #允许匿名访问,不允许Commit,不能与AuthzSVNAccessFile同时使用
    Require valid-user                        
  #</LimitExcept>

</Location>

修改/data/subversion目录访问权限使它可被Apache进程访问,我的Apache是用www-data启动的,所以设置方法如下:

debian:~# chown -R www-data.www-data /data/subversion

通过Apache的用户验证功能可以区别匿名用户和验证用户,从而赋予匿名用户读权限和验证用户读/写的权限。这些权限只能在全局范围内设置,不能设置具体的某个目录是否能被某个用户操作。要实现目录级别的授权,就要使用mod_authz_svn.so模块提供的AuthzSVNAccessFile指令。它会指定一个授权文档,该授权文档设置具体的目录权限。根据上面的配置,授权文档名叫dav_svn.authz,它的内容如下:

[groups]              #定义组
admin=jims,ringkee
tests=tester1,tester2

[erp:/]              #定义erp储存库根目录的访问权限
@admin=rw            #admin组有读写权限
tests=r              #test用户只有读权限

[oa:/test]           #定义oa储存库下test目录的访问权限
*=                   #禁止所有用户访问,星号代表所有用户,权限为空代表没有任何权限
ringkee=rw           #打开ringkee用户的读写权限

在该文件中使用的用户需在apache2的用户文件/etc/apache2/dav_svn.passwd中预先设置好。我们也可以通过OpenLDAP服务器来进行用户验证。设置方法同本书中安装MoinMoin服务器中"使用Apache+LDAP进行用户验证"一节的内容,这里就不再介绍了。
关于trac + wiki 的页面显示,我的首页只能显示Available Projects,希望能看到完整的页面。大概好像是需要Clearsilver 或者Genshi 来配置,请教下配置文件在哪里配呢?