`
gdfloyd
  • 浏览: 74173 次
  • 性别: 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

 

分享到:
评论

相关推荐

    后勤智能管理系统-.. (2).pdf

    后勤智能管理系统-.. (2).pdf

    Markdown.Monster.v2.0.9.0-CRD.rar

    Markdown.Monster.v2.0.9.0-CRD

    毕业设计-主成分分析算法Python代码.rar

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、本项目仅用作交流学习参考,请切勿用于商业用途。

    四川大学期末考试试题(开卷).docx

    四川大学期末考试试题(开卷).docx

    c#入门之实现计算器源码

    c#入门之实现计算器源码

    Python项目-游戏源码-10 植物大战僵尸.zip

    Python课程设计,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。

    基于ssm的期末考试考务管理系统源代码(完整前后端+mysql+说明文档+LW).zip

    主要需求:3个权限 该系统功能模块主要为三部分,即学生模块、教师模块、管理员模块。 学生模块包括:查看考试安排信息(随机安排就行)、学生 缓考在线申请(教师查看)、在线签订承诺书(学生签字); 教师模块包括:查询监考表、考试违纪学生信息录入; 管理员模块包括:考试时间地点管理、 调整排班信息、信息管理等(主要是增删改查) 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3 服务器:tomcat7

    springboot-基于SpringBoot的小型民营加油站管理系统.zip

    springboot-基于SpringBoot的小型民营加油站管理系统.zip

    framework-all

    framework_all

    【Ubuntu】【交叉编译】实现跑马灯并以开发板为服务器通过cgi实现远程控制.html

    【Ubuntu】【交叉编译】实现跑马灯并以开发板为服务器通过cgi实现远程控制.html

    基于ssm的学生宿舍管理系统设计与实现源代码(java+jsp+mysql+说明文档+LW).zip

    实现了用户在线选择试题并完成答题,在线查看考核分数。管理员管理常用语句管理、常用语句收藏管理、常用语句留言管理、成语学习管理、成语学习收藏管理、成语学习留言管理、字典管理、论坛管理、基础管理、基础收藏管理、基础留言管理、情景学习管理、情景学习收藏管理、情景学习留言管理、诗词学习管理、诗词学习收藏管理、诗词学习留言管理、用户管理、管理员管理等功能。 项目包含完整前后端源码和数据库文件 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3 部署容器:tomcat7

    RTMPOSE rtmpose-m-2xb64-210e-mpii-256x256-A5000

    RTMPOSE rtmpose-m-2xb64-210e-mpii-256x256-A5000

    jdk-17.0.4.1

    jdk-17.0.4.1

    户外广告全球市场研究报告:2023年市场规模约为14121.8亿元

    户外广告全球市场研究报告:2023年市场规模约为14121.8亿元 在数字时代,户外广告作为传统与现代的交汇点,正以独特的魅力吸引着全球广告主的目光。从繁华都市的霓虹灯到偏远乡村的路牌,户外广告无处不在,以其直观、生动的形式,精准触达消费者的生活与出行场景。然而,在激烈的市场竞争中,如何把握市场趋势,实现精准传播,成为广告主面临的一大挑战。 市场概况 近年来,全球广告市场在经济周期动荡中展现出强大的韧性,不断触及新高度。据QYR最新调研,2023年全球广告市场规模已增至约9044.9亿美元,其中户外广告市场占据了一席之地。作为全球广告市场的重要组成部分,中国广告市场规模同样在快速扩张,2023年市场规模约为14121.8亿元,稳居世界前列。户外广告市场更是表现抢眼,2023年全球户外广告市场规模约为547.8亿美元,中国市场规模则达到约820.5亿元,展现出强劲的增长势头。 技术创新与趋势 随着数字化技术的广泛应用,户外广告的形式和内容不断升级,从传统的平面广告到如今的视频广告,再到未来的智能互动广告,户外广告正逐步走向智能化、个性化。视频广告以其音频视觉双重刺激的特点,通过故事情节、

    基于ssm的班主任助理系统的设计与实现+jsp源代码(完整前后端+mysql+说明文档+LW).zip

    学生信息管理: 添加学生信息:录入新学生的信息到系统。 修改学生信息:对现有学生信息进行更新和修改。 请假管理: 新增请假记录:记录学生的请假信息。 审批请假:对学生的请假申请进行审批。 请假统计:对请假记录进行统计分析。 申请假统计:可能是对请假申请的统计,可能包括未批准的请假。 成绩管理: 新增成绩:录入学生的成绩信息。 修改成绩:对学生的成绩进行修改。 删除成绩:从系统中移除学生的成绩记录。 家长信息管理: 新增家长信息:录入家长的联系信息。 修改家长信息:更新家长的联系信息。 删除家长信息:移除家长的联系信息。 学业预警管理: 新增学业预警:对可能存在学业问题的学生设置预警。 修改学业预警:更新学业预警信息。 删除学业预警:移除学业预警。 实习管理: 新增实习信息:录入学生的实习信息。 修改实习信息:更新学生的实习信息。 删除实习信息:移除学生的实习信息。 项目包含完整前后端源码和数据库文件 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11...

    基于ssm的学生请假系统+jsp源代码(完整前后端+mysql+说明文档+LW).zip

    系统实现: 老师信息管理:老师信息的查询管理,可以删除老师信息、修改老师信息、新增老师信息。 学生信息管理:学生信息的查询管理,可以删除学生信息、修改学生信息、新增学生信息。 请假信息管理:学生的学院、专业、班级、请假类型进行条件查询,还可以对请假数据进行修改、审批、驳回、删除等功能,学生可以进行申请请假信息操作等等。 留言信息管理:对学生添加的留言信息进行回复功能,只有管理员和老师可以进行回复。 项目包含完整前后端源码和数据库文件 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3 服务器:tomcat7

    喜来登五星酒店酒店数字客房管理系统.pdf

    喜来登五星酒店酒店数字客房管理系统.pdf

    Python项目-实例-07 抖音表白.zip

    Python课程设计,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。

    vscode的概要介绍与分析

    以下是一个关于VSCode(Visual Studio Code)的资源描述和项目源码的简要介绍: 资源描述 VSCode是一款由微软开发的开源、免费且功能强大的源代码编辑器,它以其轻量级、高效、多语言支持、智能代码补全、内置调试工具、丰富的扩展市场以及跨平台兼容性等特点,赢得了广大开发者的青睐。在资源方面,VSCode提供了详尽的官方文档,涵盖了从安装配置到高级功能的全面指南。此外,互联网上有大量的在线教程、视频教程以及社区论坛和问答网站,如CSDN博客、Stack Overflow等,为开发者提供了丰富的学习资源和交流平台。 项目源码概述 由于VSCode是开源的,其源码可以在GitHub等代码托管平台上找到。VSCode的源码结构清晰,包含了构建脚本、内置插件、App元信息、平台相关静态资源、工具脚本、源码目录等多个部分。其中,源码目录是核心部分,包含了编辑器、工作区、平台支持等多个模块的代码。每个模块都有详细的注释和文档,方便开发者理解和扩展。 VSCode的源码采用了TypeScript语言编写,并使用了Electron框架来构建跨平台桌面应用程序。开发者可以根据自己的

    Java系统源码+旅游管理系统

    Java系统源码+旅游管理系统 内容概要: 本资源包含了完整的Java前后端源码及说明文档,适用于想要快速搭建并部署Java Web应用程序的开发者、学习者。 技术栈: 后端:Java生态系统,包含Spring Boot、Shiro、MyBatis等,数据库使用Mysql 前端:Vue、Bootstrap、Jquery等 适用场景示例: 1、毕业生希望快速启动一个新的Java Web应用程序。 2、团队寻找一个稳定的模板来加速产品开发周期。 3、教育机构或个人学习者用于教学目的或自学练习。 4、创业公司需要一个可以立即投入使用的MVP(最小可行产品)。

Global site tag (gtag.js) - Google Analytics