2007年9月9日星期日

安装Trac服务器

安装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
      http://trac.edgewall.com/
      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

    Order allow,deny
    Allow from all

    ScriptAlias /trac /usr/share/trac/cgi-bin/trac.cgi

    SetEnv TRAC_ENV "/data/trac/"


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


    最后不要忘记设置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

    Order allow,deny
    Allow from all


    ScriptAlias /trac/project1 /usr/share/trac/cgi-bin/trac.cgi

    SetEnv TRAC_ENV "/data/trac/project1"


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


    ScriptAlias /trac/project2 /usr/share/trac/cgi-bin/trac.cgi

    SetEnv TRAC_ENV "/data/trac/project2"



    AuthType Basic
    AuthName "Trac"
    AuthUserFile /etc/apache2/trac.passwd
    Require valid-user


    这样,我们就可用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
      [Note]
      /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

没有评论: