Blog信息 |
blog名称: 日志总数:1304 评论数量:2242 留言数量:5 访问次数:7630134 建立时间:2006年5月29日 |

| |
[网络与系统管理]Debian学习笔记8 软件技术
lhwork 发表于 2007/2/2 10:15:33 |
10.14.6. Plugin开发
MoinMoin系统是一个高可扩展的系统,我们能在不改变原有软件架构的基础上进行二次开发以扩展MoinMoin的功能。这类扩展在MoinMoin里叫Plugin,有Macro(宏)、Parser(解析器)、Action(操作)、Formatter(格式化工具)、Theme(主题)等。系统级的插件存放在/usr/lib/python2.3/site-packages/MoinMoin/目录下。用户级的插件存放在实例的data/plugin目录下。下面分别介绍这些插件的开发过程。
Macro能使用我们在WiKi页面中插入处理逻辑,扩展WiKi页面的功能。如我们可以开发计数器,日历等。Macro的调用方式是在页面中用[[MacroName(args,...)]]语法调用。MacroName是宏的名称,在macro目录下对应一个MacroName.py文件。下面以一个计数器的例子说明一下。我在macro目录下创建一个count.py文件,内容如下:#-*- coding:utf-8 -*-import timedef execute(macro,args): #macro表示宏的实例,args表示传入该宏的参数 try: now = time.localtime()[7] totle = int(args) count = totle - now + 1 if count > 1: html = "<font color=red>%s</font>" % count else: html = "<font color=red>0</font>" except: html="<font color=red>(出错啦!请输入一个数字)</font>" return macro.formatter.rawHTML(html) #输出HTML
要使新创建的宏生效,需重启服务器。在WiKi页面中用[[count(100)]]即可调用该宏。
10.14.7. About WiKi
WiKi概念是由Ward
Cunningham(中文译文为:沃德.坎宁安)于1995年提出,并创建了第一个WiKi网站---波特兰模式知识库(Portland Pattern
Repository)。WiKi这个名词源自夏威夷语wee kee wee
kee的缩减化英语wiki,原意是"快点,快点"的意思。国内把WiKi译成"维客"。
除MoinMoin外,还有很多其它WiKi引擎:
MadiaWiKi,全球最大的WiKi系统--维基百科就是基于它创建的。
UseModWiKi,用Perl实现的WiKi引擎。
TwikiClone,用Perl实现的WiKi引擎。
PmWiKi,基于PHP开发的WiKi引擎。
WakkaWiKi,另一个用PHP写的WiKI引擎,CooCooWakka是中国人根据WakkaWiKi开发的中文版。
TikiWiKi,提供内容管理和WiKi功能。
JspWiKi,用JSP开发的WiKi引擎。
ZWiKi,Zope应用平台上的WiKi系统。
10.15. 安装Trac服务器
Trac是用Python写的一个基于Web的事件跟踪系统,它使用WiKi作为文档的格式,Subversion作为版本控制系统。可帮助开发人员进行源码版本管理、Bug跟踪和讨论。Debian
Sarge带的Trac是0.8版本,该版本好象有问题,安装完成后不能创建Trac环境。Sid带是0.9版的,可正常使用。下面以0.9版为例介绍安装过程。
安装和配置
要安装Trac,需先安装Subversion、SQLite和ClearSilver。详细需求请参考官方网站http://projects.edgewall.com/trac/wiki/TracInstall。如果你使用的是Debian,则用apt-get
install
trac命令安装即可,Trac依赖的所有软件包系统会自动安装。安装完成后,就可进行配置了。Trac可以设置成Standalone服务器,只供本机使用。也可以与Apache等Web服务器集成,如果与Apache集成,则可配置成CGI、FastCGI或Mod_Python等方式。
配置成Standalone方式:
创建Subversion库:debian~:# svn create /root/subversion
初始化Trac环境:debian~:# trac-admin /root/trac initenv
/root/trac目录不用事先创建,Trac会自动创建。初始化时,trac-admin程序会问你项目名、数据库连接字串和Subversion库位置这三个参数。如果你的数据库是使用SQLite,则它的连接串是sqlite:db/trac.db,系统已默认指定了。所有初始化参考都会保存在/root/trac/conf/trac.ini文件中。[wiki]ignore_missing_pages = false[header_logo]src = common/trac_banner.pngalt = Tracheight = 73link = http://trac.edgewall.com/width = 236[logging]log_file = trac.log #日志文件名,位于trac/log目录下log_level = DEBUG #日志级别,分别是CRITICAL、ERROR、WARN、INFO和DEBUGlog_type = file #日志形式,file:生成trac.log日志文件,syslog:通过命名管道/dev/log传送到syslogd[trac]default_charset = iso-8859-15ignore_auth_case = falsepermission_store = DefaultPermissionStorecheck_auth_ip = truedatabase = sqlite:db/trac.dbtemplates_dir = /usr/share/trac/templatesdefault_handler = WikiModulemetanav = login,logout,settings,help,aboutmainnav = wiki,timeline,roadmap,browser,tickets,newticket,searchrepository_dir = /data/subversion[notification]always_notify_owner = falsesmtp_always_cc =smtp_password =smtp_enabled = falsesmtp_replyto = trac@localhostsmtp_port = 25always_notify_reporter = falsesmtp_server = localhostsmtp_from = trac@localhostsmtp_user =[project]url = http://example.com/footer = Visit the Trac open source project at<br /><a href="http://trac.edgewall.com/">http://trac.edgewall.com/</a>name = Developerdescr = My example projecticon = common/trac.ico[mimeviewer]php_path = phpenscript_path = enscripttab_width = 8max_preview_size = 262144[attachment]max_size = 262144[timeline]changeset_show_files = 0ticket_show_details = falsedefault_daysback = 30[ticket]default_version =default_component = component1default_type = defectrestrict_owner = falsedefault_milestone =default_priority = major[browser]hide_properties = svk:merge
详尽的配置选项说明请参考官方的TracGuide文档。
启动Trac服务:debian~:# tracd --port 8000 /root/trac
使用浏览器访问"http://localhost:8000"即可访问Trac系统了。
Standalone方式只能由本机访问,不能放到网上共享。所以我们一般都是把Trac配置成与Apache服务器集成的形式。这时,我们要配置Apache服务器,告诉它如何执行Trac的CGI程序。如果你的系统是Debian,则在/etc/apache2/conf.d目录下创建一个trac.conf文件,内容如下:Alias /trac/chrome/common /usr/share/trac/htdocs<Directory "/usr/share/trac/htdocs"> Order allow,deny Allow from all</Directory>ScriptAlias /trac /usr/share/trac/cgi-bin/trac.cgi<Location "/trac"> SetEnv TRAC_ENV "/data/trac/"</Location><Location "/trac/login"> #设置Trac用户验证 AuthType Basic AuthName "Trac" AuthUserFile /etc/apache2/trac.passwd #trac.passwd文件用htpasswd2命令生成 Require valid-user</Location>
最后不要忘记设置Trac实例目录/data/trac的访问权限,使它能被Apache实例访问,设置方法如下:debian:~# chown -R www-data.www-data /data/trac
重启服务器,使用浏览器访问"http://apache_server/trac"即可。
我们也可以在一台服务器上安装多个trac实例来管理多个Subversion库。假设我们有两个Subversion库,分别是project1和project2,我们就可先用trad-admin命令分别创建两个trac实例,再针对这两个实例配置trac.conf,如:Alias /trac/chrome/common /usr/share/trac/htdocs<Directory "/usr/share/trac/htdocs"> Order allow,deny Allow from all</Directory>ScriptAlias /trac/project1 /usr/share/trac/cgi-bin/trac.cgi<Location "/trac/project1"> SetEnv TRAC_ENV "/data/trac/project1"</Location><Location "/trac/project1/login"> #设置Trac用户验证 AuthType Basic AuthName "Trac" AuthUserFile /etc/apache2/trac.passwd #trac.passwd文件用htpasswd2命令生成 Require valid-user</Location>ScriptAlias /trac/project2 /usr/share/trac/cgi-bin/trac.cgi<Location "/trac/project2"> SetEnv TRAC_ENV "/data/trac/project2"</Location><Location "/trac/project2/login"> AuthType Basic AuthName "Trac" AuthUserFile /etc/apache2/trac.passwd Require valid-user</Location>
这样,我们就可用http://servertotrac/trac/project1和http://servertotrac/trac/project2访问两个项目。
通过FastCGI和Mod_Python方式的配置方法请参考Trac Project网站http://projects.edgewall.com/trac/。
管理访问许可
Trac的许可权限管理简单而有效,它可通过trac-admin命令来管理。用trac-admin可管理用户的许可权限,但用户的管理是通过Apache的htpasswd2命令设置的,根据上面的Apache
CGI配置,用户名和密码是存放在/etc/apache2/trac.passwd文件中。下面这个命令可用来列出当前有效的许可权限和已设置的许可权限。debian:~# trac-admin /data/trac permission listUser Action--------------------------anonymous BROWSER_VIEWanonymous CHANGESET_VIEWanonymous FILE_VIEWanonymous LOG_VIEWanonymous MILESTONE_VIEWanonymous REPORT_SQL_VIEWanonymous REPORT_VIEWanonymous ROADMAP_VIEWanonymous SEARCH_VIEWanonymous TICKET_CREATEanonymous TICKET_MODIFYanonymous TICKET_VIEWanonymous TIMELINE_VIEWanonymous WIKI_CREATEanonymous WIKI_MODIFYanonymous WIKI_VIEWAvailable actions: BROWSER_VIEW, CHANGESET_VIEW, CONFIG_VIEW, FILE_VIEW, LOG_VIEW, MILESTONE_ADMIN, MILESTONE_CREATE, MILESTONE_DELETE, MILESTONE_MODIFY, MILESTONE_VIEW, REPORT_ADMIN, REPORT_CREATE, REPORT_DELETE, REPORT_MODIFY, REPORT_SQL_VIEW, REPORT_VIEW, ROADMAP_ADMIN, ROADMAP_VIEW, SEARCH_VIEW, TICKET_ADMIN, TICKET_APPEND, TICKET_CHGPROP, TICKET_CREATE, TICKET_MODIFY, TICKET_VIEW, TIMELINE_VIEW, TRAC_ADMIN, WIKI_ADMIN, WIKI_CREATE, WIKI_DELETE, WIKI_MODIFY, WIKI_VIEW
上面列出的内容是还没进行许可权限设置时的情况,Available
actions段的内容就是有效许可权限的列表,每个权限的解析可查询TracGuide中的TracPermission节的内容。其中TRAC_ADMIN许可相当于Linux中的root用户,拥有最高的权限。如果我们要把TRAC_ADMIN许可授予jims用户,则可这样设置:debian:~# trac-admin /data/trac permission add jims TRAC_ADMIN
WIKI_ADMIN是WIKI系统的管理员,具有WIKI_CREATE,WIKI_DELETE, WIKI_MODIFY,
WIKI_VIEW权限。也就是WIKI页面的创建、删除、修改和查看四种权限,授予方式同上。
删除用户的许可可用remove关健字,如:debian:~# trac-admin /data/trac permission remove jims TRAC_ADMIN
在Trac的权限管理中可以设置组以简化权限配置,下例将设置一个admin组,具有TRAC_ADMIN许可权限,把jims和ringkee两个用户加入到该组中,使他们也具有TRAC_ADMIN许可权限:debian:~# trac-admin /data/trac permission add admin TRAC_ADMINdebian:~# trac-admin /data/trac permission add ringkee admindebian:~# trac-admin /data/trac permission add jims admin
在Trac的用户中,有两个默认的用户,一个是anonymous,表示匿名用户;一个是authenticated,表示所有已通过验证的用户。我们可以把许可权赋予这两个用户,从而简化我们的许可权限配置。
定制Ticket字段
Trac的Ticket是可定制的,除默认的Priority、Milestone、Component等字段之外,我们还可增加自已的字段。方法是在trac.ini里增加[ticket-custom]配置段。配置语法如下:字段名(FIELD_NAME) = 字段类型(TYPE) 字段名选项(FIELD_NAME.OPTION) = 值(VALUE) ...
下面是有效的字段类型和选项说明: * text: A simple (one line) text field. o label: Descriptive label. o value: Default value. o order: Sort order placement. (Determines relative placement in forms.) * checkbox: A boolean value check box. o label: Descriptive label. o value: Default value (0 or 1). o order: Sort order placement. * select: Drop-down select box. Uses a list of values. o options: List of values, separated by | (vertical pipe). o value: Default value (Item #, starting at 0). o order: Sort order placement. * radio: Radio buttons. Essentially the same as select. o label: Descriptive label. o options: List of values, separated by | (vertical pipe). o value: Default value (Item #, starting at 0). o order: Sort order placement. * textarea: Multi-line text area. o label: Descriptive label. o value: Default text. o cols: Width in columns. o rows: Height in lines. o order: Sort order placement.
下面是一些示例:[ticket-custom]test_one = texttest_one.label = Just a text boxtest_two = texttest_two.label = Another text-boxtest_two.value = Just a default valuetest_three = checkboxtest_three.label = Some checkboxtest_three.value = 1test_four = selecttest_four.label = My selectboxtest_four.options = one|two|third option|fourtest_four.value = 2test_five = radiotest_five.label = Radio buttons are funtest_five.options = uno|dos|tres|cuatro|cincotest_five.value = 1test_six = textareatest_six.label = This is a large textareatest_six.value = Default texttest_six.cols = 60test_six.rows = 30
备份和恢复
Trac系统的备份和恢复也可使用trac-admin工具来完成,还可支持热备份。备份命令如下:debian:~# trac-admin /data/trac hotcopy ~/backup
执行该命令时,Trac会自动锁住SQLite数据库,并把/data/trac目录拷贝到~/backup目录。恢复备份也很简单,只需停止Trac进程,如Apache服务器或tracd服务器。接着把~/backup整个目录恢复回/data/trac目录就可以了。
软件更新
当有新版的Trac软件推出时,为了使用新的功能和减少Bugs,我们需把旧版本的Trac系统升级到新版本。在Debian中系统,Trac软件包的安装脚本会自动帮我们完成升级,但了解手动升级方法可使我们对Trac软件的结构有更深的认识,所以我在这里也简单介绍一下如何手动升级Trac软件包。
为了减少软件冲突,最好把旧版软件包的程序删除:debian:~# rm -rf /usr/lib/python2.3/site-packages/tracdebian:~# rm -rf /usr/share/trac
500)this.width=500'>
/data/trac实例目录不能删除。
升级软件包,下载最新的Trac软件包,并安装:debian:~/inst/trac-0.9.2# python setup.py install
升级实例:debian:~# trac-admin /data/trac upgrade
升级文档:debian:~# trac-admin /data/trac wiki upgrade |
|
|