安装指南
-------------------------
1) 安装CVS. 你可以在www.cvshome.org找到它。
确认你安装的版本在1.10以上。
1b)首先使用你的cvs命令创建你的cvs仓库 (cvs -d path init)
确认这个仓库目录可以被运行apache http 的daemon进行读写。
实现它的一种方法是让Apache server以cvs组的身份运行(如group1)。
把这个服务器的user ID 加入到这个组来 (例如:nobody)我想cvs会要求你安装RCS
你可以在GUN的镜像网站上找到它。
注意,cvswebread.cgi-script需要对仓库(或者它的拷贝)有访问权,所以
rsh/ssh 或者 pserver 访问还不能工作。
1c) 安装Perl. 你可以在 www.sunfreeware.com 或者 www.activestate.com
你需要安装 Perl5以上版本。
在Win2000下,我使用的是 Perl5.6.0 (build 618),在Solaris 2.7下我使用的是 Perl5.005_03版本.其他的版本也是可以的。
1d) 安装RCS. 你可以在 www.sunfreeware.com 找到它。
你需要使用它使得 'ident', 'rlog' and 'rcsdiff'等命令有效。
我使用的版本是 version 5.7.
1e) 安装 Apache. 你可以在 www.apache.org 找到它。
在Solaris下我使用的是 IBM version 1.3.6.2 在NT下我使用的是Apache 1.3.9.
1f) 安装 GNU's tar package. 你可以在 www.sunfreeware.com 找到它。
1g) 如果你想要使用 CVS-annotate(cvs注释)支持, 确保运行 cvswebread.cgi 的cvs处理过程
(web服务器, 通常以'httpd'或者'nobody'运行) 对CVSROOT/history(如果有这个目录的话)
以及在你的仓库下存放受控文件的其他目录拥有写权限。
. 我认为把httpd-user加入cvs-group组中
(但是,由于安全原因,把'nobody'加入到这个组可能不是个好的注意).确保, cvs-bin目录在你的PATH环境变量中。
注意: cvs 1.10 以上版本支持LockDir选项, 允许你把受控文件移动到其他单独目录,选中这个选项
cvsweb对CVS 仓库目录不需要任何写权限。
2) 将cvs-web解包到你的机器. 文件可以放置在任何一个目录,
例如, 在unix上可以放到/usr/local/cvswebclient/目录,
在winnt上可以放到c:\cvswebclient 目录
在unix上的命令:
cd /usr/local
gzip -d cvswebclient-v2.0.tar.gz
tar xf cvswebclient-v2.0.tar
如果你是用的是GUN tar包,命令如下
cd /usr/local
tar -zxvf cvswebclient-v2.0.tar.gz
在windows下:
使用Winzip, 你可以在 www.winzip.com下载, 或者也可以使用其他可以解开.tar.gz的软件解压。
2b) 这些文件是windows文件. 也就是说, (the files have CRLF rather than just CR.)
之所以这样做的原因之一是对于Windows用户来说Unix用户更容易改变文件类型。
在Unix下, 肢需要输入:
cd cvswebclient
find . -type f -exec dos2unix {} {} \;
3a) 配置http server配置文件, srm.conf 或者, 如果你使用更新版本的apache(>=1.3.9), 更改文件在httpd.conf
最重要的一件事就是标记 /cvs-web 目录为 CGI bin目录
并且告诉服务器,具体的内容可以在你解压的路径中找到(例如Unix下的:/usr/local/cvswebclient). 下面有更详细的介绍.
Additionally:
1) 把cvs-web目录影射到一个网址. 默认的,
.htaccess 文件提供安全保护和指定CGI执行权限. 所有的需要通过web服务器运行的文件需要 .cgi后缀。
2) cvswebadmin 可以通过cvswebclient显示日志,想实现这个功能, 你需要将临时目录 (在
hostname-cvswebconfig.pl文件中指定的目录) 影射为一个网址。
3) 使用ScriptLog标签告诉apache将调试信息输出到哪儿.
这里是操作步骤:
srm.conf (或者 httpd.conf):
# 取消注释或者加入 'AddHandler cgi-script .cgi' 用来允许 .cgi 执行.
AddHandler cgi-script .cgi
# 影射安装目录.
ScriptAlias /cvs-web/ "/usr/local/cvswebclient/cvs-web/"
# or (Win32)
ScriptAlias /cvs-web/ "c:/cvswebclient/cvs-web/"
# Set override Permissions with .htaccess files
# Unix:
<Directory /usr/local/cvswebclient/cvs-web/>
AllowOverride All
</Directory>
# Win32: (actually I didn't need to do this on Windows ?!)
<Directory c:/cvswebclient/cvs-web/>
AllowOverride All
</Directory>
# Map the log files directory, use any URL just as long as it matches
# the in yourshortname-cvswebconfig.pl
Alias /cve/ "/usr/tmp/"
# or (Win32)
Alias /cve/ "c:/temp/"
# ScriptLog for debugging.
# This is not strictly necessary, and in any case should be switched off
# when you are sure that everything works.
ScriptLog /usr/local/cvswebclient/cvs-web/tmp/script.out
# or (Win32)
ScriptLog c:/cvswebclient/cvs-web/temp/script.out
3b) 在windows下你需要让你的机器知道主机名,在httpd.conf文件中的ServerName里指定.
3c) 如果你想要later optimise系统的速度, 有一件事你需要考虑的是使用access.conf 文件代替.htaccess文件(我从来没有担心过此事)
3d) Erik Osthols 对cvswebclient做了一个修改以便作为他的公司的认证系统的插件,这个代码在 cvswebread 文件的结尾,但是没有使用.
4) 拷贝etc/TEMPLATE-FILENAME 文件到 etc/yourshorthostname-FILENAME.
在Unix下, 你的短主机名应该被定义为'basename `hostname`'
例如主机: my.yahoo.com, 使用my-cvswebconfig.pl 作文件名
5a) 修改 etc/yourshorthostname-cvswebconfig.pl 设置
$administrator
$tempdir
$distdir
$installurl
$cvsroot
$cvswebedit_dbg_url
设置你需要浏览的一个仓库(或多个) 的一个CVS-Root(或多个).
如果你的RCS utilities 并没有在cgi执行环境的$PATH环境变量下,你需要在 'Misc' 部分中指定它.
其他的设置基本不用改变.
检查你的etc/yourshorthostname-*.pl 编译完成!
下面的命令可以捡起etc/yourshorthostname-cvswebconfig.pl和 cgi-style.pl
perl cvswebconfig.pl
NB. 当你完成的时候, 变量 $installdir
必须和 httpd.conf文件中的ScriptAlias 标签一致.
5b)另外, 你也许会需要在 $tempdir下建立两个名叫'cvswebcreate' 和'cvsweb_upload'的目录,
使webserver user对这两个目录有写权限:
cd cvswebclient
mkdir temp
mkdir temp/cvswebcreate
mkdir temp/cvsweb_upload
cd temp
chmod a+rwx * .
5c) 把你的用户名和密码放到etc/htpasswd文件中
在Unix下命令:
cd apache/bin
./htpasswd -b /usr/local/cvswebclient/cvs-web/etc/htpasswd username password
将组名放到etc/htgroup文件中, 典型的,每个目录指定一条记录.
原因是将脚本放在不同的目录中,权限比较明显也容易分配. 因该有一个所有目录权限的组; 指定你自己运行的脚本需要写 .htaccess 文件
在Unix下你需要使用Apache's 密码程序生成加密密码. 在windows下,密码以明文的形式保存在/etc/passwd下.
默认的有一个 'test' 用户密码为 'test' 已经被配置.
部署的时候千万不要忘了将这个账号和密码删除!!
5d) 编辑userdb.txt文件. 这里是允许使用cvswebclient的用户名. 格式是 username:full name. 理想的,这个列表应该与etc/htpasswd相关联
, 但是直到我写这个文档时你还是需要自己复制这个信息.
5e) 拷贝在 cvs-web/icons目录下的icons,到你$DocumentRoot并且编辑在cvswebconfig.pl文件里的%ICONS-Hashtable.
这个产品的icons在公共域上部署.
如果你认为默认的icons太大了,使用icons-directory下相应的小图标,cvswebconfig.pl改变里的 %ICONS-Hashtable.
你也按照你的方式可以使用cvs-web/icons 目录
http server并不受影响.
5f) 如果你喜欢你可以在加入一些注释,它将显示在每个目录或者模块名旁边
他们将从 CVSROOT/descriptions文件中读取.
- 捡出一个你的CVSROOT的拷贝
- 编辑 checkoutlist 并且加入这样的一行
descriptions
- 编辑 descriptions. 给每个你需要注释的目录加入一行
你可以在注释中使用html标签
这些行于 $CVSROOT.有关,例如:
JVote/ An application to assist with <A
HREF="IRTChttp://www.irtc.org/">IRTC</A> voting
JVote/images/ Store the images for JVote
JVote/tools/ Scripts to startup JVote
- cvs add descriptions
- cvs commit
- Set $use_descriptions to 1 in cvsweb.conf.
6) 在命令行下运行 etc/write_configs.pl 脚本
它将在cvs-web下的所有目录生成 .htaccess 文件
cd cvswebclient/cvs-web/etc
perl write_configs.pl # Unix
BTW: 我想要用一个.htaccess文件
在树的顶端但是Apache 1.3.1 的语法指南说
我需要使用 <DIRECTORY> 标签, 但是 <DIRECTORY> 标签
却不能被使用在 .htaccess文件, 它只能被用在 access.conf文件. 由于
每个人都有权利写入 access.conf文件,我还是坚持使用多重的 .htaccess 文件, 每个目录下的文件都需要保护.
如果你知道如何使用一个 .htaccess文件去完成这个任务,请告诉我.
这个步骤是使站点安全. 你应该在确认所有一切都正常运行的时候再进行此操作,如果被告知没有访问权限,那么请删除这些文件.
7) [在uinx下] 确认所有.cgi文件拥有执行权限
你可以在/cvs-web根目录下运行以下命令:
find . -name \*.cgi -exec chmod a+rx {} \;
8) 修订 *.cgi 是的第一行 (#!/usr/local/bin/perl -s) 指向你本地的perl位置
在Unix下我倾向于使用一个符号连接从/usr/local/bin/perl到每个Unix的不同perl目录.
如果你需要知道需要更改的所有的位置,运行这个命令:
cd cvs-web
find . -name \*.cgi -exec grep '#!' /dev/null {} \;
And to edit them:
cd cvs-web
vi */*.cgi
9) 确认你已经安装了所有必须的Perl模块 (查看'External
library usage' 下的信息). 你也可以使用cvswebclient自身在cvs-web/lib
目录(以及子目录)下提供的库.
只有在部署时可以有效的一些模块 (Cgilog.pm 和 AuditLog.pm), 会程序需要的在cvs-web/lib 找到
10) 在Unix下, 确认webserver运行的用户(例如 nobody)有一个有效的登陆目录 (在一些文件中,
他被设置在 /non-existent, which indeed is non-existent!).
cvs程序本身(不是 cvswebclient)将会尝试chdir为这个目录党检出一个文件时(虽然文件将会被放置在当前工作目录中)
如果他不是有效的登陆目录,它会提示错误!
11) 在Unix下, the web server对cvs仓库中的文件必须拥有读写访问权限,这个可以通过建立一个组来解决
(例如 cvs) 为仓库文件, 并且把web server用户(例如nobody)在/etc/group文件中加入这个组中
cd CVSROOT
chmod -R a+rwx .
12) 你可以对整个目录作下载操作, 确认你安装了GNU compatible tar 文件, 用来访问
gzip程序, 这一点在yourshorthostname-cvswebconfig.pl明确的被指定了
13) 这个版本应该在win95上正常运行,但是看来我们很少使用它了.
14) 运行apache
cd apache
bin/apachectl start
15) 查看你的cvsweb:
http://localhost/cvs-web/read/cvswebread.cgi
16) 现在返回http://sourceForge.net/projects/cvswebclient
查看错误,任务和补丁等信息.
17) 如果你找到了解决问题的方案, 发信给项目拥有者,以便加入开发组.
测试--请查看测试文档
我安装完以后测试了一下,发现有个问题,就是仓库的文件都看不到,只有目录结构.不知道是哪儿的问题!!!!如果大家谁可以解决请告诉我!!abaw2003@msn.com