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了。