Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1720877
  • 博文数量: 171
  • 博客积分: 11553
  • 博客等级: 上将
  • 技术积分: 3986
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-25 20:28
文章分类

全部博文(171)

文章存档

2012年(2)

2011年(70)

2010年(9)

2009年(14)

2008年(76)

分类: LINUX

2010-06-20 09:25:51

一、CVS服务器安装及初始配置

1、 CVS服务器的安装
       安装RPM包:

    #yum install cvs* 

       查看cvs安装情况: 
    #rpm -qa|grep cvs

    #which cvs
    /usr/bin/cvs

Fedora 上的CVS依赖于xinetd服务,所以要安装xinetd:

    #yum install xinetd*

检查安装情况:

    #rpm -qa|grep xinetd
 

2、建立cvs用户组:
    #/usr/sbin/groupadd cvs

3、建立cvs组的cvsroot用户和所属的目录/home/cvsroot:
     
#/usr/sbin/useradd -g cvs -G cvs -d /home/cvsroot cvsroot

4、为 cvsroot用户添加密码
     
#passwd cvsroot
  

5、 改变 /cvsroot/ 的目录属性:

       因为是在root用户下间的该目录,他的属主和属组都是root,这里我们 要将其属主改为cvsroot,属组改为 cvs,保证cvs组的用户对该目录有相应的权限。

      #chown -R cvsroot.cvs  /home/cvsroot/  
     
#chmod –R 775 /home/cvsroot

6、 改变用户登陆身份
     
  # su cvsroot

       bash-3.2$

7、 设置全局变量CVSROOT

       #vim /etc/bashrc

       加入:

       export CVSROOT=/home/cvsroot:$CVSROOT

       检查一下变量设置:

       #echo $CVSROOT

    /home/cvsroot/ 


8、开始建立仓库:
     
#cvs –d /home/cvsroot/ init
 

9、建立CVS服务启动文件,使用xinetd方式:
      #[Crtl]+[d]   //切换到root用户身份
      #cd /etc/xinetd.d

      目录下已经存在一个名为cvs的文件,内容如下:

  1. # default: off
  2. # description: The CVS service can record the history of your source \
  3. #              files. CVS stores all the versions of a file in a single \
  4. #              file in a clever way that only stores the differences \
  5. #              between versions.
  6. service cvspserver
  7. {
  8.         disable                 = yes
  9.         port                       = 2401
  10.         socket_type       = stream
  11.         protocol               = tcp
  12.         wait                       = no
  13.         user                       = root
  14.         passenv               = PATH
  15.         server                   = /usr/bin/cvs
  16.         env                         = HOME=/var/cvs
  17.         server_args        = -f --allow-root=/var/cvs pserver
  18. #      bind                    = 127.0.0.1
  19. }

       复制这份文件为cvspserver,并改为如下:

       #cp cvs cvspserver

       #vim cvspserver

  1. # default: off
  2. # description: The CVS service can record the history of your source \
  3. #              files. CVS stores all the versions of a file in a single \
  4. #              file in a clever way that only stores the differences \
  5. #              between versions.
  6. service cvspserver
  7. {
  8.         disable                 = no
  9.         port                       = 2401
  10.         socket_type       = stream
  11.         protocol               = tcp
  12.         wait                       = no
  13.         user                       = root
  14.         passenv               = PATH
  15.         server                   = /usr/bin/cvs
  16.         env                         = HOME=/home/cvsroot
  17.         server_args        = -f --allow-root=/home/cvsroot pserver
  18. }


注:由于xinetd的server_args长度限制,当你想运行很多的单个仓库的时候,可以这么做

       
#vim cvspserver

  1. service cvspserver
  2. {
  3.          disable                 = no
  4.          port                       = 2401
  5.          socket_type       = stream
  6.          protocol               = tcp
  7.          wait                       = no
  8.          user                       = root
  9.          passenv               = PATH
  10.          server                   = /home/cvsroot/cvs.run
  11.          env                        = HOME=/home/cvsroot
  12.         
  13. }
       然后编写启动CVS的脚本cvs.run

       #vim /cvsroot/cvs.run

  1. #!/bin/bash
  2. /usr/bin/cvs -f --allow-root=/home/cvsroot/ pserver


  3.     
        #chmod 755 /home/cvsroot/cvs.run

10、加入cvs服务
   
     #vim /etc/services
        在文件的最后加入以下两行:
        cvspserver 2401/tcp #pserver cvs service
        cvspserver 2401/udp #pserver cvs service


11、重启cvs服务
      
#/etc/init.d/xinetd restart
     
12、检查cvspserver服务是否已经启动
      
#netstat -l |grep cvspserver
       应该有如下结果:
        tcp   0    0            *:cvspserver           *:*               LISTEN


二、CVS服务的用户管理:

上面我们已经建立了CVS仓库,下面我们给 仓库建立cvs用户。
13、创建可以登陆cvs服务器的用户名和密码
      
#su cvsroot
       $su
        口令:  
        #vim /home/cvsroot/CVSROOT/passwd

        为新用户my_name和your_name设置密码,加入以下两行:
       
my_name:*********:cvsroot
       
your_name:*************:cvsroot
        这两个文件的意思是有my_name和your_nameg两个cvs用户,同时拥有cvsroot的使用权限,登陆后  的权限是cvsroot权限。
        注意:这里的cvs用户和系统用户是不同的。

14、 *********为密码,由以下文件生成

       
#vim /home/cvsroot/passwdgen.pl
  1. #!/usr/bin/perl
  2. srand (time());
  3. my $randletter = "(int (rand (26)) + (int (rand (1) + .5) % 2 ? 65 : 97))";
  4. my $salt = sprintf ("%c%c", eval $randletter, eval $randletter);
  5. my $plaintext = shift;
  6. my $crypttext = crypt ($plaintext, $salt);
  7. print "${crypttext}\n";
         #chmod a+x /home/cvsroot/passwdgen.pl
         这个文件是功能是给你想设的密码加密,变为暗码。如果你想生成一个密码是“123456”,则:
        
# ./passwdgen.pl “123456”
         回车即可得到加密暗码:ZaNGzWEtXCZZI , 用其替换passwd文件中的********

15、 cvs的服务器端现在已经全部安装完成了
         最后,试着登陆一下:
        
#cvs -d :pserver:my_name@192.168.1.111:/home/cvsroot login
          敲入命令回车后提示输入my_name的密码,你按照自己设置的密码输入,如果没有什么错误信息出现就是成功了。

-------------------------------------------
可能出现的错误:
-------------------------------------------
CVS pserver安装好后,连接的时候,会显示错误信息:
cvs [login aborted]: reading from server: Connection reset by pserver...
这个问题的原因很可能有:

1. xinetd.d的配置上:

    在cvspserver文件中,port =2401 没有设置
或者
    server =  /usr/local/bin/cvs这个cvs的执行路径设置错了(正确的路径可以通过运行#which cvs命令得到)
或 者
    env = /var/cvs没有改成你设置好的目录,我这里是/home/cvsroot

2. cvspsever服务没有添加进/etc/services中

注意:
1.密码生成程序gen.pl:
  #!/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";
执行
perl gen.pl "password"
2.导入工程出现错误
cvs add: resources.ap_ added independently by second party
删除CVS关联,重新加入到CVS


阅读(2408) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~