Slackware下安装配置CVSweb

Gavin [Unix/Linux]

2008.11.15

CVSweb就是CVS的WEB界面,可以大大提高程序员定位修改的效率:

使用的样例可以看:http://www.freebsd.org/cgi/cvsweb.cgi

1、系统环境

操 作 系 统 :slackware 12.0

CVSweb版本 :3.0.6

Apache版本 :2.2.4(slackware 12.0默认)

说 明 :以下说明中,”#”表示超级用户运行的命令,”$”表示用户”user”运行的命令,其它表示命令内容。

2、假定

2.1、Apache配置(slackware 12.0默认):

配置文件 :/etc/httpd/httpd.conf

DocumentRoot : /srv/httpd/htdocs/

cgi directory : /srv/httpd/cgi/

2.2、安装用户为pub,其根目录为/home/pub/

2.3、安装CVSweb之前,要确保CVS已经安装好(安装方法可参考:http://lagvin.bokee.com/viewdiary.15620466.html)

3、安装

3.1、下载CVSweb(当前最新版本是3.0.6)

$cd ~

$wget http://people.freebsd.org/~scop/cvsweb/cvsweb-3.0.6.tar.gz

3.2、解压

$tar zxvf cvsweb-3.0.6.tar.gz

3.3、把配置文件cvsweb.conf复制到apache的配置文件所在目录

$cd cvsweb-3.0.6

#cp cvsweb.conf /etc/httpd/

3.4、把cvsweb.cgi复制到apache的cgi-bin目录的cvsweb子目录下

#cd /srv/httpd/cgi-bin/

#mkdir cvsweb

#cp /home/pub/cvsweb-3.0.6/cvsweb.cgi ./cvsweb/

3.5、在DocumentRoot下创建cvsweb的目录

#mkdir /srv/httpd/htdocs/cvsweb

3.6、放置好cvsweb的icons和css目录

#cp -fr /home/pub/cvsweb-3.0.6/icons/ /srv/httpd/htdocs/cvsweb/

#cp -fr /home/pub/cvsweb-3.0.6/css/ /srv/httpd/htdocs/cvsweb/

4、配置

4.1、cvsweb.cgi的配置

4.1.1、设置CVS资源库

#vi /etc/httpd/cvsweb.conf

查找@CVSrepositories,找到如下段落:

#

# ’symbolic_name’ => ['Name to display', '/path/to/cvsroot']

#

@CVSrepositories = (

‘local’ => ['Local Repository', '/var/cvs'],

# ‘freebsd’ => ['FreeBSD', '/var/ncvs'],

# ‘openbsd’ => ['OpenBSD', '/var/ncvs'],

# ‘netbsd’ => ['NetBSD', '/var/ncvs'],

# ‘ruby’ => ['Ruby', '/var/anoncvs/ruby'],

);

其中’symbolic_name’用来标识一个CVS repository,’Name to display’部分用来显示库名,

‘/path/to/cvsroot’就是实际CVS库的路径

(注意:这里说的路径,是指CVSROOT目录所在的目录。例如,我的目录是/home/cvsroot/projects/CVSROOT,则填:/home/cvsroot/projects)

4.1.2、设置icons和css路径

查找$iconsdir,找到以下段落:

my $iconsdir = ‘/icons’;

# format: TEXT ICON-URL width height

%ICONS = (

back => [('[BACK]‘, “$iconsdir/back.gif”, 20, 22)],

dir => [('[DIR]‘, “$iconsdir/dir.gif”, 20, 22)],

file => [('[TXT]‘, “$iconsdir/text.gif”, 20, 22)],

binfile => [('[BIN]‘, “$iconsdir/binary.gif”, 20, 22)],

graph => [('[GRAPH]‘, “$iconsdir/minigraph.png”, 16, 16)],

);

undef $iconsdir;

# An URL where to find the CSS.

#

$cssurl = ‘/css/cvsweb.css’;

修改$iconsdir和$cssurl值为:

my $iconsdir = ‘/cvsweb/icons’;

$cssurl = ‘/cvsweb/css/cvsweb.css’;

4.1.3、个性化设置

cvsweb.conf还有许多其它个性化设置,常见的有这些变量:

$logo 图标设置

$defaulttitle 标题设置

$address 管理员email地址设置

$long_intro 介绍文字

$short_instruction 说明文字

4.2、cvsweb.cgi的配置

4.2.1、指定配置文件cvsweb.cgi路径

#vi /srv/httpd/cgi-bin/cvsweb/cvsweb.cgi

查找$config,找到段落:

##### Start of Configuration Area ########

# == EDIT this ==

# Locations to search for user configuration, in order:

for (catfile($mydir, ‘cvsweb.conf’), ‘/usr/local/etc/cvsweb/cvsweb.conf’) {

if (-r $_) {

$config = $_;

last;

}

}

##### End of Configuration Area ########

更改’/usr/local/etc/cvsweb/cvsweb.conf’部分为你的存放cvsweb.conf的实际路径,比如我的是’/etc/httpd/cvsweb.conf’,则改成

for (catfile($mydir, ‘cvsweb.conf’), ‘/etc/httpd/cvsweb.conf’) {

if (-r $_) {

$config = $_;

last;

}

}

4.2.2、中文页面支持

#vi /srv/httpd/cgi-bin/cvsweb/cvsweb.cgi

查找sub html_header($;$),找到如下函数段落:

sub html_header($;$)

{

  my ($title, $moddate) = @_;

  $title  = htmlquote($title);

  my $l   = $logo || ”;

  my $css = $CSS || ”;

  http_header(‘text/html’, $moddate);

  print <<EOH;

$HTML_DOCTYPE

<html>

<head>

<title>$title</title>

$HTML_META$css</head>

<body>

$l <h1>$title</h1>

EOH

}

在<head> <title>之间插入一行:<meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″>

4.3、Apache配置

配置Aapche支持cgi

#vi /etc/httpd/httpd.conf

4.3.1、确保对cgi使用脚本别名:

ScriptAlias /cgi-bin/ “/srv/httpd/cgi-bin/”

4.3.2、确保Apache能对.cgi后缀做解释

AddHandler cgi-script .cgi

4.3.3、修改cgi-bin目录的访问权限为:

AllowOverride None

Options Indexes ExecCGI -MultiViews SymLinksIfOwnerMatch

Order allow,deny

Allow from all

4.3.4、增加访问控制

#vi /etc/httpd/httpd.conf

添加内容:

#

# Control cvsweb accessing permission

#

AuthName “CVS Authorization”

AuthType Basic

AuthUserFile /etc/httpd/cvsweb.passwd

require valid-user

4.4、更改/srv/httpd/cgi-bin/cvsweb/cvsweb.cgi的访问权限

#chmod 755 /srv/httpd/cgi-bin/cvsweb/cvsweb.cgi

4.5、生成访问的帐号密码

#htpasswd -c cvsweb.paaswd 

如果是添加多个用户和密码到文件cvsweb.passwd,则不用-c参数

5、错误处理:

5.1、如果发生类似

Permission denied: exec of ‘/srv/httpd/cgi-bin/cvsweb/cvsweb.cgi’ failed

Premature end of script headers: cvsweb.cgi

的错误,则大多数是因为Apache CGI的配置和cgi权限的问题,请重看4.3

5.2、安装cvsweb.cgi前,必须已安装File::Temp、IPC::Run、URI等3个perl模块,如果报错:

Can’t locate IPC/Run.pm in @INC (@INC contains: /usr/lib/perl5/5.8.8/i486-linux-thread-multi /usr/lib/perl5/5.8.8 /usr/lib/perl5/site_perl/5.8.8/i486-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl) at /srv/httpd/cgi-bin/cvsweb/cvsweb.cgi line 100.

则说明IPC::Run没有安装,下载个安装则可:

$wget http://search.cpan.org/CPAN/authors/id/R/RS/RSOD/IPC-Run-0.80.tar.gz

$tar zxvf IPC-Run-0.80.tar.gz

$cd IPC-Run-0.80/

#cp -fr lib/IPC/ /usr/lib/perl5/5.8.8/i486-linux-thread-multi/

有其他错误的话,请查看apache的error.log来分析解决:

#vi /var/log/httpd/error.log


评论

输入后可按 Ctrl+Enter 提交评论.