下载最新的安装包,确认 GNATS 和 Gnatsweb 版本是否匹配
下载 GNATS 4 beta2: ftp://ftp.gnu.org/gnu/gnats/gnats-3.999.2.tar.gz ;
直接从 CVS 服务器检出 Gnatsweb 4: cvs -z3 -d:pserver:anoncvs@subversions.gnu.org:/cvsroot/gnatsweb co gnatsweb ;
注意 GNATSWEB 和 GNATS 的版本是否兼容,Gnatsweb 2.9.x 和 GNATS 3.113.1 版本兼容,Gnatsweb 3.99.x 和 GNATS 3.999.x 兼容。 |
建立名为 gnats 的账号
创建 gnats 用户账号,系统维护以 gnats 身份运行,以减少系统安全风险。
$ useradd gnats
安装 GNATS
以 root 用户登录,执行下列命令
$ tar zxvf gnats-3.999.2.tar.gz $ cd gnats-3.999.2 $ configure --prefix=/usr/local/gnats $ make all info $ make install install-info
到底安装了些什么?
/usr/local/gnats/bin
GNATS 工具。应将此路径加入 PATH 环境变量,或者在 /usr/local/bin 中建立符号链接。
/usr/local/gnats/libexec/gnats/
GNATS 维护工具。应将此路径加入 PATH 环境变量,或者在 /usr/local/bin 中建立符号链接。
/usr/local/gnats/etc/gnats/
GNATS 全局配置信息。可以由 databases 文件将一台服务器配置为多个项目提供缺陷追踪服务(database);gnatsd.host_access 用于控制基于主机地址的安全选项。
/usr/local/gnats/etc/gnats/defaults/
GNATS 服务器配置信息模板。每配置一个 GNATS 缺陷追踪服务(database),将该路径下的文件作为模板复制到项目各自独立的配置目录中,如确省的配置目录为 /usr/local/gnats/com/gnatsdb/gnats-adm。其中 gnatsd.user_access 用于配置用户名和口令,dbconfig 数据库配置文件;categories 文件用于设置类别;responsible 设置负责人的邮件地址等。
配置确省的数据库
这里说的数据库不是我们经常听到的关系型数据库,而是指 GNATS 为一个项目提供缺陷追踪的一组配置文件和相应数据,GNATS 实际上是以文本文件形式存储的。 在配置文件文件 databases 中,确省设置了一个名为 default 的数据库。
default:Bug database:/usr/local/gnats/com/gnatsdb
运行 mkdb 维护工具,初始化确省数据库。
$ mkdb default
Copying default files from /usr/local/gnats/etc/gnats/defaults
mkdb 简单的将配置文件模板从 /usr/local/gnats/etc/gnats/defaults 目录下拷贝到指定的路径下。
/usr/local/gnats/com/gnatsdb/gnats-adm 目录存放配置文件,初始来自于配置文件模板的拷贝;
/usr/local/gnats/com/gnatsdb/pending 目录存放未知分类(Category)的 PR;
/usr/local/gnats/com/gnatsdb/gnats-queue 目录存放等待处理的 PR;
其它目录对应于各自的 Category 名称,存储对应 Category 的 PR,由此我们看出 PR 的 Category 命名为上述的三个保留名称。
设置 crontab
为避免 DOS 攻击,用户提交的 PR,先进入缓冲队列,待 queue-pr 命令执行时,方进行投递。因此将 queue-pr 加入 crontab,定时执行。
$ crontab -e 0,10,20,30,40,50 * * * * exec-prefix/libexec/gnats/queue-pr --run
设置邮件别名
因为 GNATS 初始设计为使用 Email 即可工作,因此需要设置邮件别名,通过管道,将邮件送交 GNATS 工具处理。将如下内容加入邮件别名文件(/etc/aliases):
gnats-admin: root bugs: "| exec-prefix/libexec/gnats/queue-pr -q" query-pr: "| exec-prefix/libexec/gnats/mail-query"
注意:如果 sendmail 设置了 smrsh,需要将 queue-pr 和 mail-query 配置为 sendmail 可以执行的命令。简单的,可能只需要在 /etc/smrsh 目录下建立相应的符号链接。 |
运行守护进程
GNATS 的守护进程是最为重要的一环,它使 GNATS 支持多种 PR 方式。
确认是否在 /etc/services 中配置了相应的服务,服务名为 support
support 1529/tcp # GNATS
配置以 inetd 或 xinetd 方式执行 gnatsd (守护进程)。
对于 inetd,在 /etc/inetd.conf 中加入:
support stream tcp nowait gnats /usr/local/gnats/libexec/gnats/gnatsd gnatsd
对于 inetd,在 /etc/xinetd.d/ 目录下加入文件 support,内容如下:
service support { disable = no socket_type = stream protocol = tcp wait = no user = gnats server = /usr/local/gnats/libexec/gnats/gnatsd }
至此,完成了 GNATS 的安装。但是,如果只凭借命令行工具 send-pr,和 Email 来提交和管理 PR,显然太专业而难以推广,不具有竞争力。因此 Gnatsweb 几乎成了唯一选择。下面马上来安装 Gnatsweb。
注意版本兼容
Gnatsweb 2.9.x 和 GNATS 3.113.1 版本兼容,Gnatsweb 3.99.x 和 GNATS 3.999.x 兼容。Gnatsweb 3.99.x 在本文撰写之时,只能通过 CVS 检出代码。
$ cvs -z3 -d:pserver:anoncvs@subversions.gnu.org:/cvsroot/gnatsweb login $ cvs -z3 -d:pserver:anoncvs@subversions.gnu.org:/cvsroot/gnatsweb co gnatsweb
GNATS 权限设置
Gnatsweb 作为 cgi 程序运行在 WEB 服务器上,需要在 GNATS 服务器上配置 WEB服务器的访问权限。
有两种方法,一种是在全局的 gnatsd.host_access 配置文件中设置 WEB 服务器的 IP 地址具有 edit 权限,如下:
127.0.0.1:edit:
由于 GNATS 的权限设置的特殊性,权限只能升不能降,因此各自数据库设置的用户权限全部实效,所有用户都至少拥有 edit 权限,即修改 PR 的权限。
另外,就是在全局的 gnatsd.host_access 配置文件中设置 WEB 服务器的 IP 地址具有比较低的权限:
127.0.0.1:listdb:
再在各自独立的数据库配置文件中设置用户的权限。
修改 gnatsweb-site.pl 脚本中的 GNATS 主机名和端口号
确省的主机名为 localhost,确省端口为 1529。若实际配置有变,灵活修改之。
确认是否安装了所需的 PERL 包
$ perl -MCPAN -e 'install CGI' $ perl -MCPAN -e 'install MIME::Base64'
测试链接
$ make test USERNAME=user PASSWORD=password DATABASE=default
错误的输出:
connect...........................................FAIL Gnatsweb was unable to connect to the GNATS server. There are several possible reasons for this. Start off by checking that the USERNAME, PASSWORD and DATABASE parameters you supplied are valid. If they are, there may be a problem in the configuration of your GNATS server. Check your GNATS installation, particularly the host access files (remember that the web server needs access to the GNATS server), then run the tests again. make: *** [test] Error 9
正确的输出:
connect...........................................pass query.............................................pass fix_email_addrs 1.................................pass fix_email_addrs 2.................................pass fix_email_addrs 3.................................pass fix_email_addrs 4.................................pass fix_email_addrs 5.................................pass trim_responsible 1................................pass trim_responsible 2................................pass trim_responsible 3................................pass All tests passed.
开始安装
需要指定网站的 cgi-bin 目录。关于 Apache 配置 CGI,请参见相关章节,在此不再赘述。
$ make install CGI_DIR=/usr/local/apache/cgi-bin
其实,只是将脚本 gnatsweb.pl 和 gnatsweb-site.pl 简单的拷贝到路径 /usr/local/apache/cgi-bin 之下。
访问 Gnatsweb
打开浏览器,访问网址:http://localhost/cgi-bin/gnatsweb.pl。
Copyright © 2006 WorldHello 开放文档之源 计划 |