`
gdfloyd
  • 浏览: 73444 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

Trac安装过程记录

阅读更多

Trac 安装过程记录

 

最近拿下载Trac1.0来安装到自己RedHat9 Linux VM上玩玩,有种找虐的感觉:不像MS的风格给你一个庞大的东东,让你一路只要点下一步便可,Trac毕竟是个免费的东西,安装起来依赖比较多,依赖又来自不同的Open Source Party,安装的时候,不是缺胳膊就是少腿,要把这些依赖分别一一安装。整个安装过程有点繁琐,决定把自己在Linux VM下整个折腾过程记录下来,供那些不熟悉Linux OS和不熟悉Linux 下软件安装的人,包括我自己以后参考。本文主要参考:

 

Trac官方安装指引文档 http://trac.edgewall.org/wiki/TracGuide
PostgeSQL官方文档 http://www.postgresql.org/docs/manuals/
Apache服务器官方文档 http://httpd.apache.org/docs/2.2
Apache服务器的Python适配模块 http://code.google.com/p/modwsgi/
LDAP验证:http://www.openldap.org/doc/admin24/quickstart.html 
Python模块安装工具SetupTools:http://pypi.python.org/pypi/setuptools
Python模块Genshi:http://genshi.edgewall.org/wiki/Download
Python模块Babel:http://babel.edgewall.org/wiki/Download
Python模块Pygement:http://pypi.python.org/pypi/Pygments/1.6rc1#downloads
Python模块Psycopg2: http://pypi.python.org/pypi/psycopg2

 

先介绍一下TracTrac 一个简单的基于web的软件项目管理工具,目的是有效简化问题、改进及整体进度的追踪处理,设计目标是尽可能帮助开发人员摆脱流程文化桎梏。这是官方说法。这里提到的重点是简单,相对于其他臃肿的软件,Trac核心功能很精简,因而安装包只有不到2.9M。但是,整个trac的安装依赖比较多,这些依赖本身也是一些Open Source的东西,安装配置起来比较繁琐,需要一步步来。

 

  • 编译准备。要用到gcc命令来进行编译,要先找到安装盘里面的gcc相关的rpm然后安装。
$ rpm -ivh binutils-2.13.90.0.18-9.i386.rpm
$ rpm -ivh cpp-3.2.2-5.i386.rpm
$ rpm -ivh gcc-3.2.2-5.i386.rpm
$ rpm -ivh gcc-c++-3.2.2-5.i386.rpm
$ rpm -ivh gcc-g77-3.2.2-5.i386.rpm
$ rpm -ivh gcc-gnat-3.2.2-5.i386.rpm
$ rpm -ivh glibc-devel-2.3.2-27.9.7.i386.rpm
$ rpm -ivh glibc-kernheaders-2.4-8.10.i386.rpm
$ rpm -ivh libstdc++-devel-3.2.2-5.i386.rpm

 

  • Trac是使用Python语言来编写的,要先安装Python。我安装的版本是Python2.7。下载解压运行如下: 
$ tar –zxvf Python-2.7.3.tgz
$ cd Python-2.7.3
$ ./confugre –prefix=/usr/local/python-2.7.3
$ make
$ make install

 

make的过程可能有点久,要耐心等待。完成之后在我的Redhat9的VM上会出现如下提示

写道
 Python build finished, but the necessary bits to build these modules were not found:
 _bsddb _curses _curses_panel
 _sqlite3 _ssl _tkinter
 bsddb185 bz2 dbm
 gdbm readline sunaudiodev
 zlib
 To find the necessary bits, look in setup.py in detect_modules() for the module's name.

 

根据上面的信息,某些Python模块未能构建,如Berkery DB,SQLite3,readline和ssl等这样一些Python模块。这些基础模块在系统上没有找到,需要先安装。SqlLite3和Berkeley的源码可以下载来安装即可,具体步骤类似GNU软件安装(make)。另外的模块,可以在安装盘里可以找到相关的rpm,不管有用没用全给它安装上。

 

rpm -ivh readline-4.3-5.i386.rpm
rpm -ivh readline-devel-4.3-5.i386.rpm
rpm -ivh openssl-0.9.7a-20.2.i386.rpm
rpm -ivh openssl-devel-0.9.7a-20.2.i386.rpm
rpm -ivh ncurses-5.3-4.i386.rpm
rpm -ivh ncurses-devel-5.3-4.i386.rpm
rpm -ivh krb5-devel-1.2.7-14.i386.rpm
rpm -ivh krb5-libs-1.2.7-14.i386.rpm
rpm -ivh gdbm-1.8.0-20.i386.rpm
rpm -ivh gdbm-devel-1.8.0-20.i386.rpm
rpm -ivh zlib-1.1.4-8.i386.rpm
rpm -ivh zlib-devel-1.1.4-8.i386.rpm
rpm -ivh tcl-html-8.3.5-88.i386.rpm
rpm -ivh tcllib-1.3-88.i386.rpm
rpm -ivh tclx-8.3-88.i386.rpm
rpm -ivh tk-8.3.5-88.i386.rpm
rpm -ivh tkinter-2.2.2-26.i386.rpm

 

运行make clean之后再make一次,以为会成功,谁知还是爆错,提示信息如下:

 

写道
Failed to build these modules:
_tkinter
error: Failed dependencies: libtix8.1.8.3.so is needed by tkinter-2.2.2-26

 在安装盘里面找到这个tix模块进行再安装,依赖还是没准备好,错误信息如下:

写道
$ rpm -ivh tix-8.1.4-88.i386.rpm
 warning: ../Python-Install/tix-8.1.4-88.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
 error: Failed dependencies:
 itcl is needed by tix-8.1.4-88
 libitcl3.2.so is needed by tix-8.1.4-88
 libitk3.2.so is needed by tix-8.1.4-88

 

在安装盘里找到itcl-3.2-88.i386.rpm安装之后,那些so还是没找到,让我好是郁闷。Google了一下发现,这是一些Linux下GUI模块。后面两个一个是旧版本DB,另一个是sun的音频设备,相信web-base的Trac不会用的,我就更不会用,决定无视之,就把那个tkinter卸载掉后,重新make clean和make,最后出现如下提示。

写道
Python build finished, but the necessary bits to build these modules were not found:
_tkinter           bsddb185           sunaudiodev    
To find the necessary bits, look in setup.py in detect_modules() for the module's name

 

我的VM上已经有个旧版本的python,为了不与原来的混淆,最好就是修改执行目录下的连接文件。先把原来的/usr/local/python重命名为/usr/local/python2.2.2后运行,这时候显示才是新版本的python

$ ln -s /usr/local/python-2.7.3/bin/python2.7 /usr/bin/python
$ ln -s /usr/local/python-2.7.3/bin/python2.7 /usr/bin/python2.7
$ python

  

写道
Python 2.7.3 (default, Dec 31 2012, 01:38:08)
[GCC 3.2.2 20030222 (Red Hat Linux 3.2.2-5)] on linux2
Type "help", "copyright", "credits" or "license" for more information.

 到此Python 2.7安装完成了。

 

  • 安装Trac依赖的Python模块

Setuptools:必须,Version >= 0.6,Python模块安装工具。下载egg文件后运行:

# sh setuptools-0.6c11-py2.7.egg 

 

  Genshi:必须,Version >= 0.6,用来根据模版将数据转换为HTML输出。下载Source文件后在解压目录:

# python setup.py install

 
  Babel:可选,Version >= 0.9.5,用来提供多语言支持。

# python setup.py install

 

  Pygement:可选,用作代码语法高亮显示。下载Source文件后运行命令后在解压目录下运行命令:

# python setup.py install

 
  Psycopg2:可选,PostgreSQL的Python的适配器。下载Python的Adapter Source文件在解压目录下运行命令:

 

# python setup.py build
# python setup.py install

 

在我的VM上会出现这样的错误:

写道
cc1: unrecognized option `-Wdeclaration-after-statement' error: command 'gcc' failed with exit status 1

 

按照提示,貌似是当前GCC版本不支持某个命令参数。怀疑是当前安装的GCC版本不支持此参数。Google了一下,获知此参数是GCC命令编译兼容性参数。于是在安装目录grep了一下declaration-after-statement,发现有setup.py文件下面有类似内容。没估错的话,元凶就在这里:

 

def finalize_linux2(self):
     """Finalize build system configuration on GNU/Linux platform."""
        # tell piro that GCC is fine and dandy, but not so MS compilers
     for extension in self.extensions:
         extension.extra_compile_args.append(
             '-Wdeclaration-after-statement')

finalize_linux3 = finalize_linux2

 

把这段内容前面加#注释后保存,再重新运行Python的编译安装命令便可正常通过。

 

  • 安装Trac。

到官网下载并解压源码来安装Trac,解压并并运行:

 

$ tar –zxvf Trac-1.0.tar.gz
$ cd Trac-1.0
$ python ./setup.py install

 

这个命令会安装trac-admin和tracd命令行工具到Python安装目录下。trac-admin工具是用来创建项目环境的,而tracd工具是一个Trac内建的Web服务器。这两个工具,可以在Python安装路径子目录bin下面找到,为了以后方便使用,把它们添加到执行目录中去。

 

  • 安装PostreSQL数据库和配置本地信任连接。(可选)

Trac支持SQLite,PostgreSQL和MySQL这三种数据库,默认采用SQLite。SQLite是嵌入型数据库,而PostgeSQL为我们准备的是通常商业提供的客户端/服务器关系型数据库。这里简单介绍一下PostgreSQL的配置。一般有一个OS服务账户postgres,并且使用这个超级账户来安装初始化数据库目录和进行数据库相关配置。

 

用数据库superuser连接到DB,进入命令行psql命令行:

 

[postgres]$ psql 
写道
psql (9.2.2)
Type "help" for help.

postgres=#

  

 创建数据库。Trac推荐使用UTF-8编码设置,PostgreSQL默认是采用OS编码设置的,可用在命令行用-e指定。

 

postgres=# create database –e UTF-8 tracdb;

 

   创建用户并设定登陆密码

 

postgres=# create user trac password ‘dbpwd’;

  

运行命令便可显示数据库信息

 

[postgres]$ psql –l 

 

由于我设置的数据库服务和Trac服务都在同一台VM上,我在这里使用PostgreSQL的本地信任验证,也可以说是OS系统用户验证。默认情况下PostreSQL本地信任验证是启用,如果没有启用,可以在PostreSQL初始化目录下的配置文件pg_hba.conf,添加这样一行并可,意为允许用户trac通过本地信任连接到名为tracdb的数据库:

 

local		tracdb	trac			trust

 

接着,创建OS系统用户验证并设定密码。之后我将会使用这个用户来通过数据库本地信任验证。

 

$ useradd trac
$ passwd trac

 

最后,设定PGHOST环境变量,用于保存本地连接的unix socket文件的目录。目录路径可在PostgreSQL 的cluster目录下postgresql.conf里面找到,我这里设为/var/postgres。这时候,便可在trac用户的命令行下用psql命令连接,而无需键入密码。

 

[trac] $ PGHOST = /var/psotgres/ \
            export PGHOST
[trac] $ psql tracdb

 

  • 创建Trac项目环境

所谓Trac项目环境是指用来保存项目数据和配置以及Web上传附件保存的默认目录,该目录可能会包含SQLite的数据库文件(如使用SQLite存储)。要注意这个项目路径仅支持ASCII编码字符,Unicode编码字符在这里会有问题。命令行下运行:

 

[trac] $ trac-admin /path/to/myproject initenv

 

如果是多个项目同时启动:

 

[trac] $ tracd -p 8080 /path/to/project1 /path/to/project2

 

又比如,目录下每个子目录都是一个project,这些project 同时启动:

 

[trac] $ tracd -p 8080 -e /path/to/project

 

如果此Trac实例仅支持单项目,那么在Trac首页就不会列出项目列表。可运行如下:

 

[trac] $ trac-admin -s /path/to/myproject initenv

 

注意我在这里运行命令用户都是trac,这样运行时就不会项目环境目录就权限阻止问题了。上面的初始化目录命令运行后,会提示输入项目名称和数据库连接路径。如采用默认的SqLite文件数据库可输入:

 

写道
sqlite:db/trac.db

 

使用PostgreSQL的本地信任连接的话,就输入如下连接字符串。这里的连接字符串里面忽略了密码,主机名和端口自动使用PostgreSQL默认。采用这种方式要注意的是,运行trac服务的OS账户必须是trac,否则就未必能树立连接DB。

写道
postgres://trac@/tracdb

 

如果PostgreSQL数据库是使用TCP/IP连接,并且数据库用户设定了密码,可用如下:

 

写道
postgres://trac:dbpwd@l27.0.0.1:5432/tracdb

 

如果是远程连接,把127.0.0.1替换为远程服务器的Host/IP。Trac会默认使用的PostgeSQL Schema是public,如果需要指定schema可以这样指定:

写道
postgres://trac: dbpwd @l27.0.0.1/tracdb?schema=myshcema

 

初始化目录命令运行完毕,即可发现目录下创建了一系列文件/目录,这些目录文件在需要定制trac的时候会用到。

 

README 简介
VERSION  Trac版本
attahcments 上传附件保存位置
conf/trac.ini Trac配置文件
db/trac.db SQLite的DB文件,默认使用SQLite作为存储
htdocs 存放页面引用的静态资源(image/css etc)
log 日志目录
plugins 插件目录
templates/site.html 自定义页面显示的模版

  

  •  Web服务器部署和验证授权

Trac自身内建Web服务器,如果不需要使用到HTTP服务器提供的用户安全和验证设置,缓存设置,性能设置等等,这时候可以使用Trac自带的服务器。运行命令即可启动:

 

[trac] $ tracd –p 8000 /path/to/myproject

 

如有多个项目可放在同一父级目录下,用不同子目录来区分:

 

 [trac] $ tracd -p 8000 /path/to/project1 /path/to/project2

 

浏览器输入如下即可访问trac页面了:

 

写道
http://VM-IP:8000/

 

进去之后可以在里面找到Trac的详细文档介绍具体的trac模块:Wiki知识库的使用,工作流配置和用户自定义等等。但就是找不到核心功能票据管理页面。那是尚未登陆的缘故,默认情况下,未登陆的匿名用户无法浏览和添加修改票据。如果尝试登陆,页面会出现如下错误提示:

 

写道
Authentication information not available. Please refer to the installation documentation.

 

对于这个问题,Trac提供一种简单的名为独立验证的方式来解决。手动创建一个验证文件用来保存用户名和密码,可命名为digest.auth,并在tracd命令里面指定即可。命令如下:

 

[trac] $ tracd –p 8000 --auth=projectDirName,/path/to/digest.auth,trac /path/to/projectDirName

 

如有多个项目,可以这样:

 

[trac] $ tracd -p 8080 \
   --auth="project1,/path/to/digest.auth,trac" \
   --auth="project2,/path/to/digest.auth,trac" \
   /path/to/project1 /path/to/project2

 

digest.auth可用如下Python脚本,可先保存成为trac-digest.py来生成。

 

from optparse import OptionParser
# The md5 module is deprecated in Python 2.5
try:
    from hashlib import md5
except ImportError:
    from md5 import md5
realm = 'trac'

# build the options
usage = "usage: %prog [options]"
parser = OptionParser(usage=usage)
parser.add_option("-u", "--username",action="store", dest="username", type = "string",
                  help="the username for whom to generate a password")
parser.add_option("-p", "--password",action="store", dest="password", type = "string",
                  help="the password to use")
parser.add_option("-r", "--realm",action="store", dest="realm", type = "string",
                  help="the realm in which to create the digest")
(options, args) = parser.parse_args()

# check options
if (options.username is None) or (options.password is None):
   parser.error("You must supply both the username and password")
if (options.realm is not None):
   realm = options.realm
   
# Generate the string to enter into the htdigest file
kd = lambda x: md5(':'.join(x)).hexdigest()
print ':'.join((options.username, realm, kd([options.username, realm, options.password])))

 

然后在命令行调用这个Python文件便可生成digest.auth文件。

 

[trac] $ python trac-digest.py -u username -p password >> /path/to/digest.auth

 

我们通过这个命令在digest.auth里面指定需要添加访问Trac的用户及其密码。用户名和码就保存在这个文件里面,trac就会去查找比对这个文件。这时候我们再重新登陆便可进入系统浏览添加修改票据的权限。但是,仍然无法浏览管理员页面。下面命令是为admin用户添加管理员权限:

 

[trac] $ trac-admin /path/to/myprojectDir permission add admin TRAC_ADMIN

 

运行完之后便可用admin用户登陆,打开管理员面板。里面有一些基础数据的设置和权限设置了。显然易见,独立验证方式的用户维护任务繁重,诸如新增用户重置密码等等,都要管理员去维护一个具有敏感信息digest.auth的文件,非常不便。发现有这样一个Trac插件来管理用户的,推荐安装: http://trac-hacks.org/wiki/AccountManagerPlugin

 

以上所说的就是Trac的独立验证。独立验证方式适合于小型应用或者测试开发环境,如果需要对HTTP服务有全面控制,如在Web服务器配置AD验证来实现类似的单点登陆,就需要将Trac部署到Web服务器上。下面就来安装Apache服务器和LDAP下载后并解压源码包然后运行编译并安装

 

$ tar zxvf httpd-2.2.23.tar
$ cd httpd-2.2.23
$ ./configure --with-included-apr --prefix=/usr/local/apache2 \
--enable-proxy \
--enable-proxy-ajp \
--enable-authnz-ldap \
--enable-ldap \
--enable-ssl
	$ make
	$ make install

 

在上面的配置命令里面,指定了要安装LDAP模块,因为我后面将会AD验证。运行之后,出现如下提示:

写道
mod_authnz_ldap.c:41:2: #error mod_authnz_ldap requires APR-util to have LDAP support built in. To fix add --with-ldap to ./configure.

 

这个提示还是蛮清晰的,就是在命令里面加上--with-ldap的Option在运行:

 

 

./configure --with-included-apr --prefix=/usr/local/apache2 --with-ldap \
--enable-proxy \
--enable-proxy-ajp \
--enable-authnz-ldap \
--enable-ldap \
--enable-ssl

 

结果在configure的时候没错了,在make的时候又爆错了,按照提示貌似需要先安装LDAP模块才能继续。于是到OpenLDAP官网下载源码包后解压并运行:

 

$ tar –zxvf openldap-2.4.33.tgz
$ cd openldap-2.4.33
$ ./configure
$ make depend
$ make 
$ make install

 

很不幸,配置命令运行出错,错误信息如下:

 

写道
configure: error: BerkeleyDB version incompatible with BDB/HDB backends

 

OpenLDAP会使用Berkeley作为后台存储,而当前安装的Berkeley DB版本不被OpenLDAP支持。在装Python的时候,其实我已经安装了一个Berkeley,不幸这个天煞的版本不被OpenLDAP支持,于是我到这里去再下载了当前一个最新的版本来试试:http://download.oracle.com/otn/berkeley-db/db-5.3.21.tar.gz 。

 

$ ./dist/configure
$ make
$ make install

 

Berkeley安装完毕后,继续安装openldap还是存在上面的同样错误。仔细查看输出信息发现如下的警告信息:

 

写道
checking openssl/ssl.h usability... no
checking openssl/ssl.h presence... no
checking for openssl/ssl.h... no
checking gnutls/gnutls.h usability... no
checking gnutls/gnutls.h presence... no
checking for gnutls/gnutls.h... no
checking nssutil.h usability... no
checking nssutil.h presence... no
checking for nssutil.h... no
configure: WARNING: Could not locate TLS/SSL package
configure: WARNING: TLS data protection not supported!

 

从这个提示看SSL包没能找到,找啊找发现OpenLDAP安装目录里面有个config.log,似乎有所发现:

 

写道
configure:15461: checking openssl/ssl.h usability
configure:15461: cc -c -I/usr/local/ssl/include/openssl conftest.c >&5
In file included from /usr/include/openssl/ssl.h:179,
from conftest.c:126:
/usr/include/openssl/kssl.h:72:18: krb5.h: No such file or directory
In file included from /usr/include/openssl/ssl.h:179,
from conftest.c:126:
/usr/include/openssl/kssl.h:134: parse error before "krb5_enctype"
/usr/include/openssl/kssl.h:136: parse error before '*' token

 

原来是系统找不到krb5.h,于是把卡巴罗斯安装目录下的krb5.h连接到inlcude目录下:

 

ln -s /usr/kerberos/include/krb5.h /usr/include/openssl/krb5.h

 

重新运行OpenLDAP的配置命令会发现仍然出错,那是卡巴罗斯的头文件还需要引用com_err.h和profile.h这两个头文件,把这两个头文件也连接到include目录:

 

ln -s /usr/kerberos/include/com_err.h /usr/include/com_err.h
ln -s /usr/kerberos/include/profile.h /usr/include/profile.h

 

再重新configure,这时候ssl模块找不到的警告便消失了。由此我得到启发:OpenLDAP还在引用旧有版本的BerkeleyDB头文件。

 

$ ll /usr/include | grep db

 

写道
cxx_common.h -> db4/cxx_common.h
cxx_except.h -> db4/cxx_except.h
db_185.h -> db4/db_185.h
db4
db_cxx.h -> db4/db_cxx.h
db.h -> db4/db.h

 

于是把原来的连接文件删除,然后加上自己的新版本连接文件

 

rm /usr/include/db.h
rm /usr/include/db_cxx.h
ln -s /usr/local/BerkeleyDB.5.3/include/db_cxx.h /usr/include/ db_cxx.h
ln -s /usr/local/BerkeleyDB.5.3/include/db.h /usr/include/ db.h

 

同样,我把/usr/lib下的连接库文件修改为指向BerkerleyDB5.3目录下的。

 

写道
libdb-5.3.la -> /usr/local/BerkeleyDB.5.3/lib/libdb-5.3.la
libdb-5.3.so -> /usr/local/BerkeleyDB.5.3/lib/libdb-5.3.so
libdb.a -> /usr/local/BerkeleyDB.5.3/lib/libdb.a
libdb.so -> /usr/local/BerkeleyDB.5.3/lib/libdb.so

 

最后重新安装OpenLDAP,再重新安装Apache就可以顺利通过了。

 

$ ./configure --with-included-apr --prefix=/usr/local/apache2 \
--enable-proxy \
--enable-proxy-ajp \
--enable-authnz-ldap \
--enable-ldap \
--enable-ssl
$ make clean
$ make
$ make install

 

至此,Apache服务器和LDAP就准备好了。接下来我在自己的Windows Server 上启用AD服务,在AD里面添加了一个trac-user的域组和两个域用户,并把两个域用户加入域组中去。如果Windows不是Server版本或者没有安装盘去安装的话,可以去安装ADAM来玩玩,可以让动态目录服务以应用程序方式启动:http://www.microsoft.com/zh-cn/download/details.aspx?id=4201

 

下面继续安装mod_wsgi模块。这个Apache模块是Python应用程序在Apache下运行的适配器。mod_wsgi是用C语言编写的,用以代替性能低下的mod_python。因而无需安装mod_python。根据mod_wsgi文档,如果Apache已经安装了mod_python模块的话,反而会引入一些兼容问题。mod_wsgi的安装步骤如下:

 

$ tar –zxvf mod_wsgi-3.4.tar.gz
$ cd mod_wsgi-3.4
$ ./configure

 

在我机器上出现如下错误提示:

 

写道
checking for apxs2... no
checking for apxs... no
checking Apache version... ./configure: line 1: apxs: command not found
./configure: line 1: apxs: command not found
./configure: line 1: apxs: command not found
./configure: line 1: /: is a directory
checking for python... /usr/bin/python
./configure: line 1: apxs: command not found
configure: creating ./config.status
config.status: error: cannot find input file: Makefile.in

 

检查之后发现,那是我的apache没有安装在默认位置/usr/local/apache,以致找不到这个apache命令apxs。可以用with-apxs参数指定Apache 服务器安装位置下的apxs,命令类似:

 

$ ./configure --with-apxs=/path/to/apache/bin/apxs

 

$ make
$ make install

 

 安装完毕,会出现信息提示modules/mod_wsgi.so已经安装到Apache服务器安装位置的modules子目录下。接着使用trac-admin命令生成wsgi脚本:

 

[trac] $ trac-admin /path/to/project/env deploy /path/to/deploy/

 

执行之后便会在目录/path/to/deploy/cgi-bin下面生成mod_wsgi需要用到的trac.wsgi脚本,以及apache服务器需要连接到的一些静态资源诸如image/css/js。打开这个脚本,在里面可以看到,它设定了trac项目路径和trac的egg文件解压目录以供apache的wsgi模块使用。最后在Apache Web服务器配置文件conf/httpd.conf中加入如下配置指令:

 

写道
DocumentRoot /path/to/project_env/htdocs/
Alias /trac/chrome/common /path/to/deploy/htdocs/common
Alias /trac/chrome/site /path/to/deploy/htdocs/site

WSGIScriptAlias /trac /path/to/deploy/cgi-bin/trac.wsgi
WSGIDaemonProcess trac user=trac group=trac threads=25

<Directory /home/trac/apache>
    WSGIProcessGroup trac 
    WSGIApplicationGroup %{GLOBAL} 
    Order deny,allow 
    Allow from all
</Directory>

<Location /trac/login> 
    Order deny,allow 
    AuthType Basic 
    AuthName "Trac" 
    AuthBasicProvider "ldap" 
    AuthLDAPURL "ldap://Win-IP:389/DC=welsney,DC=local?sAMAccountName?sub?(objectClass=user)" 
    authzldapauthoritative Off 
    AuthLDAPBindDN domainName\\domainLoginProfile1 
    AuthLDAPBindPassword " domainLoginProfile1password" 
    Require ldap-group CN=trac-user,CN=Users,DC=welsney,DC=local
</Location>

  

由于我是使用信任连接去连接数据库的,这里设定使用了mod_wsgi模块的运行用户为trac。最后就是启动/重启Apache服务器便可使用AD验证登陆Apache下的Trac了。Cheer !

 

$ apachectl –k start
$ apachectl –k graceful

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics