当前位置: 首页 > 图文教程 > 服务器 > Linux服务器 > 成功进行CVS服务器的配置与测试

Linux服务器
Linux上双网卡绑定方法(Suse9SP3)
Linux操作系统调优参数的意义
Linux下使用SSH客户端及其Sftp文件传送
教你恢复被误删除的Linux文件
SQL Server注入大全及防御
Linux无法解析域名的解决办法
Linux系统下安装和配置MyEclipse的方法
Ubuntu下VirtualBox 1.4.0设置文件共享
Windows与Linux系统共享StarDict字典文件
修改Linux下相关的登陆信息
Windows通过SecureCRT远程登录Linux主机
Linux操作系统如何修改SWAP交换区的大小
Linux操作系统下为Apache目录添加密码
Linux时间设置与同步(NTP)
Linux内核补丁AMD旁路转换缓冲(TLB)错误
Linux架设DHCP服务器的方法
Fedora 8下Apache配置与管理
Linux操作系统下用单网卡捆绑双IP的方法
Ubuntu Linux系统环境变量配置文件
SUSE Linux中将Tomcat作为Service运行

Linux服务器 中的 成功进行CVS服务器的配置与测试


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-18   浏览: 67 ::
收藏到网摘: n/a

一、服务器端的安装与配置

(一)CVS的安装
通常情况下,安装操作系统的时候就安装了CVS.这里首先使用root用户(其他用户下通过sudo)可以通过命令:
debian:~#whereiscvs
cvs:/usr/bin/cvs/usr/X11R6/bin/cvs/usr/bin/X11/cvs/usr/share/man/man1/cvs.1.gz/usr/share/man/man5/cvs.5.gz
这说明我的系统也已经安装了CVS,通常位于/usr/bin下.
如果系统尚未安装CVS的话,可以通过
debian:~#apt-getinstallcvs

对一个不同的发行版有不同的安装方法,最基本的方法就是下载源码包(.tar.gz的包),然后自己一步一步安装。主要就是解压,configure,make,makeinstall这几步。

另外一个要提醒的是,曾有的文章中写到还要安装CVSD。本人Google了一下,得知CVSD是一个CVS的辅助工具,可以是CVS的配置更加方便。不安装他也没关系,所以我们直接配置CVS,而且本生CVS的manual也说了这个安装好的CVS本身就即是服务器也是客户端,主要就是看如何对CVS的配置了。

下面重点介绍CVS服务器段的配置。

(二)CVS服务器端的配置

1.创建cvs组和用户
1)创建cvs组
debian:~#groupaddcvs
2)创建的新用户HOME目录
debian:~#mkdir/home/cvsroot
3)添加新用户cvsroot,并将其添加至cvs组,并指定其HOME目录
debian:~#useradd-gcvs-Gcvs-d/home/cvsrootcvsroot
4)设置cvsroot用户的密码,我这里为:cvsroot
debian:~#passwdcvsroot
EnternewUNIXpassword:
RetypenewUNIXpassword:
passwd:已成功更新密码
5)更改/home/cvsroot/目录及其子目录的属主和属组,因为是在root用户下间的该目录,他的属主和属组都是root,这里我们要将其属主改为cvsroot,属组改为cvs,保证cvs组的用户对该目录有相应的权限。
debian:~#chown-Rcvsroot.cvs/home/cvsroot/
6)更改/home/cvsroot目录属性,保证cvsroot同组(cvs组)的其他用户也有读写和执行权,我们以后要为cvs组添加用户
debian:~#chmod-R775/home/cvsroot/
2.切换至cvsroot用户,并创建一个仓库

1)切换用户
debian~#sucvsroot
2)设置全局变量CVSROOT,指定仓库所在的目录
debian:/root$exportCVSROOT=/home/cvsroot/
3)创建仓库
debian:/root$cvsinit
3.提交源入源代码
1)进入代码所在目录,也就是你想做成CVS控制的源代码目录,我这里是/home/usbprj/,目录下文件有:
debian:/root$cd/home/usrprj/
debian:/home/usbprj$ls
MakefileModule.symverstest.cusb-skeleton.c
装载cvsimport-m"[repositorytest]"[cvstest][vendortag][releasetag]
-m后面引号内填入log内容,接下来是源代码模块名称,接着是装载者,最后是标识符号,我这里是:
debian:/home/usbprj$cvsimport-m"Myproject"usbprjcvsrootstart
Nusbprj/Makefile
Nusbprj/test.c
Nusbprj/Module.symvers
Nusbprj/usb-skeleton.c
Noconflictscreatedbythisimport


此时,我们的源码也提交了,说明module已经建立了。其目录为:/home/cvsroot/usbprj/



2)如果我们在root用户(或者其他用户,但必须保证该用户对于存放module的目录有写的权限)下测试,checkout出这一个module,可以执行如下:

debian:/home/usbprj#cvs-d/home/cvsrootcheckoutusbprj
cvscheckout:Updatingusbprj
Uusbprj/Makefile
Uusbprj/Module.symvers
Uusbprj/test.c
Uusbprj/usb-skeleton.c
说明在本地可以checkout出来,而且他会自动在当前目录下创建以该module名为名的目录项,不管你checkout出来的是一个源码文件还是整个module。我这里checkout出来的module路径为/home/usbprj/usbprj/下。

4.创建登录CVS服务器的用户和密码
1)在/home/cvsroot/CVSROOT/下创建passwd文件,并编辑内容如下:
cvsuser1:*****:cvsroot
cvsuser2:*****:cvsroot
这个文件的意思是有cvsuser1和cvsuser2两个登录cvs服务器的用户,登陆后的权限是cvsroot权限,即第三个字段指定。
注意:这里的新建用户的两个新建登录cvs服务器的用户和系统用户是不同的,这两个用户不能用来登录系统,只能登录cvs服务器。这里我们默认不允许系统用户登录cvs服务器。

2)其中,passwd文件中每行的第二个字段“*****”为用户cvsuser1和cvsuser2密码的加密口令。可以通过下面文件对用户密码加密。
文件名:passwdgen.pl.该文件是perl的脚本。必须保证系统安装了perl才可执行该文件。
内容如下:
#!/usr/bin/perl
srand(time());
my$randletter="(int(rand(26))+(int(rand(1)+.5)%2?65:97))";
my$salt=sprintf("%c%c",eval$randletter,eval$randletter);
my$plaintext=shift;
my$crypttext=crypt($plaintext,$salt);
print"${crypttext}\n";
为该文件添加可执行权限,
debian:~$chmod+xpasswdgen.pl

用户cvsuser1和cvsuser2用户生成加密口令:
debian:~$./passwdgen.plcvsuser1
ZGzWKlE1mv4EY
debian:~$./passwdgen.plcvsuser2
LFfpGaDMC/Cj6
用法:passwdgen.plyourpasswd.其中,yourpasswd即你所需要设定的密码。我这里给我的两个用户的密码和用户名同名,呵呵,为了方便。其中生成的加密口令为13个字符,是由[0-9][A-Z][a-z][.][/]组成。把生成的加密口令替换到passwd文件中相应的“*****”字段即可。

5.设置开机启动CVS服务
我们这里使用xinetd启动,如果系统没有安装xinetd的话,安装之。
1)检查/etc/services中,cvspserver是否开启。cvspserver是远程登录CVS服务器时对用户的验证方式。
debian:~$cat/etc/services|grepcvspserver
#sourceslikehttp://www.freebsd.org/cgi/cvsweb.cgi/src/etc/services.
cvspserver2401/tcp#CVSclient/serveroperations
cvspserver2401/udp
这说明我的系统已打开该服务。如果最后两行前面有“#”字符,把他删除就可以了。

2)创建cvspserver文件

切换至root用户下:
debian:~#cd/etc/xinetd.d/
debian:/etc/xinetd.d#touchcvspserver
编辑该文件,内容如下:
servicecvspserver

{
disable=no
socket_type=stream
wait=no
user=root
server=/usr/bin/cvs
server_args=-f--allow-root=/home/cvsrootpserver
log_on_success+=USERID
log_on_failure+=USERID
}


其中,--allow-root=/home/cvsroot即仓库所在目录。
注意:每行的第一个"="左右两侧要有一个空格。



3)重启xinetd服务,使配置生效
重启xinetd

debian:/etc/xinetd.d#/etc/init.d/xinetdrestart
Stoppinginternetsuperserver:xinetd.
Startinginternetsuperserver:xinetd.

确定cvspserver是否启动
debian:/etc/xinetd.d#netstat-l|grepcvspserver
tcp00*:cvspserver*:*LISTEN

至此,CVS服务器配置全部完成,下面进行测试。

二.客户端测试

客户端的测试包括本地测试和远程测试。
1.本地测试上面我们已经用root用户checkout测试过了。
具体方法就是:

debian:/home#exportCVSROOT=/home/cvsroot/
debian:/home#cvslogin
如果没有提示出错的话,就代表成功了。
但如果在pserver启动以后,再用同种方法进行本地测试的话,就有问题了,提示如下:
debian:/home#cvslogin
cvslogin:canonlyuse`login'commandwiththe'pserver'method
cvs[loginaborted]:CVSROOT:/home/cvsroot/
提示的意思是说,现在这能使用通过pserver验证的方式登录服务器了。那么,在配置完pserver服务器后,本地和远程登录的方法就一样了,都要通过pserver验证。下面介绍远程登录的方法,同样适用于本地登录。

2.远程测试的方法如下:
1)CVS服务器端IP:192.168.1.248。使用另外一台主机,同样是DebianGNU/Linux,同样保证安装了CVS,IP为:192.168.1.244。通过Windows下WinCVS同样可以登录。
客户端主机使用非root用户,我的用户名为david.
首先建立环境变量CVSROOT,以用户cvsuser1登录:
david@debian:~$exportCVSROOT=:pserver:[email protected]:/home/cvsroot

然后登录
david@debian:~$cvslogin

如果没有错误提示,则代表成功登录CVS服务器。
但我这里出现了一个提示:
david@debian:~$cvslogin
Logginginto::pserver:[email protected]:2401/home/cvsroot
CVSpassword:
cvslogin:CVSpasswordfile/home/david/.cvspassdoesnotexist-creatinganewfile
该问题就是在客户端登录时要在HOME目录下有个.cvspass的文件即可。因此,解决方法就是在/home/david/下:
david@debian:~$touch.cvspass

再次登录就没有提示了。本地登录也可以采用这种方法,或者将服务器的IP地址改为localhost.

2)检出模块
我们上面已经建立了一个仓库了,usbprj.我们在客户端将该模块checkout:
david@debian:~$cvscheckoutusbprj
cvscheckout:Updatingusbprj
Uusbprj/Makefile
Uusbprj/Module.symvers
Uusbprj/test.c
Uusbprj/usb-skeleton.c
则在当前目录下生成目录usbprj.

进入该目录,可以对该目录执行文件的修改,添加,然后可以用commit命令对修改后的进行提交。具体CVS的操作,可以看CVS的手册,这里不再多说。

还有一个问题,我们这里CVS服务器有两个用户,cvsuser1和cvsuser2.如果需要对这两个用户设置不同的权限。可以在服务器端/home/cvsroot/CVSROOT/下建立两个文件,readers和writers。文件中每一行可写一个用户名。readers里面的用户具有只读权限,writers里面的用户具有可读可写权限。

上一页[1][2][3]