delphij's Chaos

选择chaos这个词是因为~~实在很难找到一个更合适的词来形容这儿了……

28 Aug 2006

trac+apache+ldap验证

trac确实是个好东西。为了方便(主要是为了少维护一个daemon考虑),我采用的方式是cgi方式(除此之外还有两种常见的用法,一种是使用trac自己的daemon,另一种是通过FastCGI)。

第一步要做的工作是让Apache具有进行LDAP验证的能力。在Apache 2.2和更高版本种,这一工作是通过authnz_ldap模块来实现的。在FreeBSD中,核心工作是在编译ports时指定:

WITH_LDAP_MODULES=yes WITH_LDAP=yes

如果使用来自port的apr(Apache可移植运行环境,实际上是一个平台抽象层)库,则这个库的辅助工具也要支持LDAP:

APR_UTIL_WITH_LDAP=yes

接着就是让Apache的LDAP功能对trac生效了。我目前采用的方式是直接使用邮件系统的LDAP数据:


    <Location "/[YOUR PROJECT]/login">
        AuthType Basic
        AuthName "[YOUR AUTH NAME]"
        AuthBasicProvider ldap
        Order Allow,Deny
        Allow from All
        AuthLDAPURL "ldap://ldap.example.org:389/ou=MailAccounts,dc=[YOUR DC]?mail"
        AuthLDAPBindDN cn=TracDaemon,dc=[YOUR DC]
        AuthLDAPBindPassword [YOUR PASSWORD HERE]
        AuthzLDAPAuthoritative on
        require ldap-user [USER HERE]
    </Location>

由于/是直接ScriptAlias的ScriptAlias / “/usr/local/share/trac/cgi-bin/trac.cgi/",因此还需要有这样的配置:


    <Location "/">
        SetEnv TRAC_ENV_PARENT_DIR "/home/trac/"
    </Location>

注意:此处指定的是TRAC_ENV_PARENT_DIR,而不是TRAC_ENV_DIR,因为我们希望这一个Trac同时支持多个实例。

下面是建立trac实例:

trac-admin /home/trac/[YOUR PROJECT] initenv
chown -R www:www /home/trac/[YOUR PROJECT]

传统上Wiki是希望任何人都可以修改的,但很遗憾在一个缺少文明的环境中,这样做无异于给一些恶心的广告商提供机会。这些就需要使用trac-admin来配置permission了。