Trac安装
trac+mercurial+apache安装
ren-zhang@163.com
1.服务器设置
1.
代码库位置:/CodeDepository
2.
Trac库目录:/var/trac
3.
Apache设置目录:/etc/httpd/conf.d/trac.conf
2.安装相关组件
1.
安装apache
2.
安装mercurial
3.
安装trac
A.
安装Genshi
easy_install Genshi-**.egg
B. 安装trac
Python setup.py install
3.
修改appche设置
将trac解压缩后的目录下cgi-bin/trac.cgi和trac.fcgi解压缩到appche的cgi-bin目录下。
4.
初始化Trac
使用Trac的命令行管理工具来初始化一个代码项目,管理工具会问一些问题来完成初始设置:
trac-admin /path/to/myproject initenv
然后就可以用Trac自带的http服务器来启动服务了:
tracd --port 8000 /path/to/myproject
5.
与apache集成
可以像svn一样,结合apache来进行web方式访问,(实际上,Trac有3种方式和web
server进行通信:CGI,FastCGI和mod_python)需要mod_python
或者
mod_wsgi
的支持。
Web服务器,在支持CGI或FastCGI的Web服务器上,Trac可以通过脚本和接口作为一个CGI来运行。还可以使用Apache服务器,但需要安装mod_python或mod_wsgi。
采用cgi的方式,需要把trac安装包下的trac.cgi文件拷到appache的cgi-bin目录下。
修改appache设置,修改位置为建立文件/etc/httpd/conf.d/trac.conf
内容为:
ScriptAlias /trac /var/www/cgi-bin/trac.cgi
#Trac needs to know where the database is located
#SetEnv TRAC_ENV /var/trac/egg_trac
#AllowOverride None
SetEnv TRAC_ENV_PARENT_DIR /TRAC
#Order allow,deny
#Allow from all
<Location /trac/*/login>
AuthType Basic
AuthName "Trac Projects"
AuthUserFile "/TRAC/users.htdigest"
Require valid-user
</Location>
6.
启用用户认证
进一步的设置需要设置trac.ini文件(在创建的代码项目的conf目录下),Trac
0.11以后也集成了Web界面的管理工具来维护trac.ini文件,但Web管理界面要求当前登录在Trac上的用户有管理员权限,否则会报“No
administration panels available”的错误。因此现在我们来为Trac启用用户认证功能。
用tracd方式启动的服务要开启用户认证,相关的文档可参考:http://localhost:8000/trac/wiki/TracStandalone
这里使用的是Apache里面带的htdigest工具来创建认证文件:
htdigest [-c] passwordfile realm username
,比如我用
htdigest -c users.htdigest Test elias
就创建了一个名为users.htdigest的文件,里面有Test这个域下面的名为elias的用户的登录信息。
然后将users.htdigest文件拷贝到trac.ini相同的目录下。改为使用以下语句来启动Trac:
tracd -p 8000 --auth=*,/path/to/users.htdigest,mycompany.com /path/to/project1
比如我这里就是
tracd --port 8000 --auth=*,D:/tmp/trac/conf/users.htdigest,Test D:/tmp/trac
现在就可以用elias用户登录了。我们还得给新建的用户赋以管理员权限。相关的文档参考:http://trac.edgewall.org/wiki/TracPermissions
比如给elias用户管理员权限,那么可以这样操作:
trac-admin /path/to/projenv permission add elias TRAC_ADMIN
然后重启Trac服务就可以在网址
http://localhost:8000/trac/admin
看到Web形式的trac.ini修改界面了。
7. HG在apache上的安装
有时也需要将HG本身的web界面集成到apache中(hg
serv主要用于临时查看和传输)。
安装方法如下:
1. 确定安装好 apache2
dpkg –l
| grep apache2, 若没装则用 sudo apt-get install apache2
安装
2. 变身成 root
$ sudo su
3. 建立 hg repositories
和 cgi-bin
的存放路径
# mkdir /var/hg
# /var/www/cgi-bin(apache默认cgi路径)
# mkdir /var/hg/repos
- 将hgweb.cgi(用于查看单个项目)或者hgwebdir.cgi(用于查看多个hg项目)拷到cgi-bin目录下,并修改权限
# cp /usr/share/doc/mercurial/examples/hgwebdir.cgi /var/hg/cgi-bin/
# chmod a+x /var/hg/cgi-bin/hgwebdir.cgi
5. 建立 /var/hg/cgi-bin/hgweb.config,
写入以下内容
[collections]
/var/hg/repos/ = /var/hg/repos/(仓库路径)
6. 设定 apache
1. 建立 /etc/apache2/sites-available/hg,
写入以下信息,
一行而已
ScriptAlias /hg "/var/hg/cgi-bin/hgwebdir.cgi"
2. 启用该设定
# a2ensite hg
# /etc/init.d/apache2 reload
7. 开启浏览器,
输入 http://localhost/hg
应该就可以看到 mercurial
的画面
若要 allow push,
有两个设定要调整
1. 确定 apache
有 /var/hg/repos/
的写入权限
# chown –R www-data.www-data /var/hg/repos/
2. 在 allow push
的 repository
的 .hg
目录下编辑 hgrc
文件
[web]
push_ssl = false
allow_push=*
详细权限可在hgaccess中设定
8. 若有中文问题(中文变成?)
解决方式为修改hgweb.cgi或者hgwebdir.cgi,将其中
Import os
Os.environ[“HGENCODING”]=”UTF-8”
前的注释去掉,或者加上这两行。
8.
插件安装
1. webadmin
0.11后内置有,WebAdmin只向拥有TRAC_ADMIN权限用户开放,所以建议在安装WebAdmin之前先设置一个TRAC_ADMIN权限的用户。
webadmin使用帮助
在Admin目录中,有两个模块,分别为General和Ticket
System,下面对他们进行分别介绍
General模块
(1)Basic Settings:这个目录主要用于对当前项目的基本信息进行配置,其中包括Name,URL和Description三个字段,说明项目名称,项目URL地址,以及项目的描述信息,这几个字段也可以到trac.ini文件中的project代码段进行修改;
(2)Logging:这个目录用来配置日志记录的一些参数,其中包括Type,Log
Level和Log File三个字段,Type说明日志记录的类型,分为Console,File,Syslog和Windows
Event Log四种,Log Level分为Debug,Info,Warning,Error和Ctitical五种,Log
File用于指定日志文件的位置;
(3)Permissions:用于控制用户权限,在这个目录中,可以方便的进行用户组添加,用户添加,用户权限管理等功能;
(4)Plugins:用于管理Trac的插件,可以对插件进行删除,添加(这里可以直接添加*.egg类型的插件至本项目中,而不必再去进行控制台操作);
Ticket System模块
这个模块的功能是控制Ticket相关的属性,例如创建一个Ticket时,需要设定这个Ticket所属的Component,Milestone,Prioritie,Ticket
Type和Version等,在这里便可以对这些属性进行配置。[本系列教程版权归G客所有,请注明出处:G客园www.gisblogs.net]
(1)Components:这个目录的功能是管理Components,在这里可以对Components进行添加,删除和修改;
(2)Milestones:这个目录的功能是管理Milestones,在这里可以对Milestones进行添加,删除和修改;
(3)Priorities:这个目录用来管理可用的优先级别,可以新建一个优先级,设定某个优先级的级别,设定默认优先级,删除某个优先级;
(4)Ticket Types:这个目录用来管理Ticket Types,在这里可以对Ticket
Types进行添加删除和修改;
(5)Versions:这个目录用来管理版本,同样可以进行添加删除和修改。
注:(i) WebAdmin的所有功能均可以通过操作TracAdmin或者修改trac.ini来实现,在附录1中列出了TracAdmin的所有命令及功能;
2. mercurial
下载插件。
创建一个egg:
Cd mercurial-plugin-0.11
Python setup.py bdist_egg
$ cd mercurial-plugin-0.11
$ python setup.py bdist_egg
将这个egg放到<trac_environment>/plugins下。
修改<trac_environment>/conf/trac.ini:
#启用组件
[components]
tracext.hg.* = enabled
#修改项目的代码版本库位置和类型
[trac]
repository_type = hg
repository_dir=/path/to/my/hg/repository
还有一些mercuial的特殊设置:
[hg]
#显示在changeset
hash中显示revision数字
show_rev = yes
# changeset hash
格式
Node_format = short
# hex:
显示全部SHA1 hash
# short:
显示一个短hash
注意:
如果hg库中有中文文件,则可能显示乱码。解决方法为:
修改python库源文件,在/usr/local/lib/python2.6/site.py中的main函数,line
505增加一句:
os.environ[‘HGENCODING’]=’utf-8’
附录1
TracAdmin的所有命令及其功能
about
-- Shows information about trac-admin
help
-- Show documentation
initenv
-- Create and initialize a new environment interactively
initenv <projectname> <db> <repostype> <repospath> <templatepath>
-- Create and initialize a new environment from arguments
hotcopy <backupdir>
-- Make a hot backup copy of an environment
resync
-- Re-synchronize trac with the repository
resync <rev>
-- Re-synchronize only the given <rev>
upgrade
-- Upgrade database to current version
wiki list
-- List wiki pages
wiki remove <name>
-- Remove wiki page
wiki export <page>