配置CVS server,費(fèi)了很大的力氣才把它搞定,我是菜鳥,希望高手不要那磚頭Pai me,我只是不希望其它菜鳥不再費(fèi)這么大的氣力了,其中引用其他作者的文字我用[/c&v]... [c&v/]指出了
我的系統(tǒng)為Redhat 7.0,運(yùn)行Apache
1.CVS Server配置
RHLinux# mount /mnt/cdrom (如果不好用的話,你可以試一下mount -t iso9669 /dev/cdrom /mnt/cdrom)
RHLinux# cd /mnt/cdrom/Redhat/RPM (不用解釋了吧)
RHLinux# rpm -ivh cvs-1.10.8.8.i386.rpm (安裝cvs,你可以用rpm -qpl ...看安裝的詳細(xì)信息)
RHLinux# vi /etc/service
(應(yīng)該有
cvspserver 2401/tcp # cvs client/server operations
cvspserver 2401/udp # cvs client/server operations
這兩行)
([/c&v]以下具體的作者我找不到了,所以,我不能寫出作者的姓名,sorry
感謝他的辛勤勞動要使cvs正常運(yùn)行還需要對需要使用cvs的用戶進(jìn)行設(shè)置,下面是我在配置cvs使用的方法。首先建立一個用戶組cvs,可以使用groupadd或者addgroup命名,也可以直接編輯/etc/group文件添加這個組,然后添加一個用戶cvsroot, 然后修改/etc/passwd文件使cvsroot用戶的缺省組
是cvs組,而不是cvsroot組。建立/cvsroot目錄,然后修改/cvsroot的
屬主及屬性[c&v/])
RHLinux# groupadd cvs
RHLinux# adduser cvsroot
RHLinux# passwd cvsroot
修改/cvsroot的屬主及屬性
RHLinux# chown cvsroot.cvs /cvsroot
RHLinux# chmod 755 /cvsroot(原本應(yīng)該是771,但是我們要配置cvsweb.cgi,下面再談)。
RHLinux# cd /etc/x.netd.d
RHLinux# vi cvspserver(創(chuàng)建一個新文件,文件名隨意,注釋為文件內(nèi)容)
/************************************************
service cvspserver
(service后面的名稱一定要和你在/etc/service文件中的cvs服務(wù)名稱一樣,但是我不知道/etc/service文件中的cvs服務(wù)名稱可以改否,rpm方式安裝完后,那兩行在那了-----我是菜鳥嘛:)
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/bin/cvs
server_args = --allow-root=/home/cvsroot pserver
log_on_failure += USERID
}
************************************************/
RHLinux# cvs -d /home/cvsroot init
(對cvs進(jìn)行初始化,你會發(fā)現(xiàn)/home/cvsroot下多了一個CVSROOT的子目錄)
RHLinux# /etc/init.d/xinetd restart (重新啟動xinetd)
cvs -d :pserver:cvsroot@host:/home/cvsroot login
(輸入cvsroot用戶在服務(wù)器上的口令,沒有出現(xiàn)錯誤提示表示成功了.)
(如果cvspserver成功起動后,netstat -l | grep tcp應(yīng)能看到以下行:
tcp 0 0 *:cvspserver *:* LISTEN)
2.WinCvs(Windows下客戶端的配置):
[/c&v] 啟動wincvs在Admin菜單中選擇preferences然后在global頁中設(shè)置CVSROOT,是:pserver:cvsroot@host:/cvsroot。在認(rèn)證方式中選擇passwd file on the cvs server,
在下面的版本號中選擇合適的版本,執(zhí)行Admin菜單中的login,在提示框輸入口令,如果
Output窗口出現(xiàn)以下提示:
*****CVS exited normally with code 0*****表示我們現(xiàn)在可以在Windows下使用cvs服務(wù)了。[c&v/]
如何使用wincvs把自己的項(xiàng)目加到cvs中去
1) Make sure that all the source files you want to check into CVS are on one directory (orsubdirectories). This directory (folder) should NOT contain anything else! That is, it should notcontain executables, object files (.o), class files (.class), etc. It should only contain the
source files.
1) 確認(rèn)你想加入的源文件全部在一個目錄下。這個目錄僅僅應(yīng)當(dāng)包含源文件,不應(yīng)該有其他任何的可執(zhí)行體、*.O,*.class....等類型的文件
2) 在wincvs "Modules"窗口中包含你的源文件的目錄被選中
3) 在菜單"Create" ->"Import Module"選擇目錄,把它導(dǎo)入CVS
4) 重命名你的目錄
5) 其他相關(guān)的內(nèi)容請看wincvs文檔
cvsweb配置
[/c&v]cvsweb是一個perl程序,現(xiàn)在的版本是1.93,記得要用新版,1.8以下有一個小小的漏洞,可以到綠盟查一查。
由于是cgi程序,是以nobody用戶執(zhí)行的,所以/cvsroot的屬性要設(shè)成775。開始我按章照搬,把屬性改成771,結(jié)果項(xiàng)目的目錄是不出來,埋葬了半天的青春:(還有記得把/cvsroot/CVSROOT/history的屬性改成666。cvsweb.conf里%CVSROOT數(shù)組的Configuration設(shè)成/cvsroot,是cvs倉庫的路徑不要那個長長CVSROOT變量。這些其實(shí)在它的說明文檔和程序注釋里都講到了,只是這個世界是懶人的世界:)
一切都陽春白雪,可以埋頭寫程序了?只是cvs還有一個小小的DoS漏洞要跟大家說一下:(
每個cvs的操作過程會以操作用戶的身份在/tmp下臨時建一個鎖定了的目錄cvs_servPID,這時如果有人建了大量的同類文件會使cvs的操作出錯,會提示:
cannot change permissions on temporary directory
Operation not permitted
下面是測試的perl程序:
#!/usr/bin/perl
#$min和$max的值根據(jù)實(shí)際情況修改
$min=400;
$max=4000;
for ($x=$min;$x<=$max;$x++) {
open CVSTMP, ">>/tmp/cvs-serv$x" or die "/tmp/cvs-serv$x: $!";
chmod 0600, "/tmp/cvs-serv$x";
close CVSTMP;
}
解決方法:
使用server.c中的mktemp(3)函數(shù)或者其它任何可以產(chǎn)生文件名的方法。在/tmp/目錄所在的分區(qū)使用空間配額也能解決部分問題。 主要還是扎緊籬笆,莫讓別人闖進(jìn)來,這畢竟是一個local的問題。
[c&v/]
RHLinux# rpm -ivh cvsweb-1.79-3.noarch.rpm(顧不了那么多了,饑不擇食嘛)
RHLinux# cp /home/httpd/cvsweb.cgi /var/www/cgi-bin
RHLinux# cd /etc/httpd/conf
RHLinux# vi cvsweb.conf
/************************************************************************
找到%CVSROOT項(xiàng)
更改其子項(xiàng) 'Configuration'=>'/home/cvsroot',
*************************************************************************/
在瀏覽器中敲入http://RHLinux/cgi-bin/cvsweb.cgi如果出現(xiàn)CVS Repository頁面也不要高興的太早繼續(xù)進(jìn)入下一級頁面,如果出錯,那么RHLinux# rlog (如果shell提示沒有這個命令的話,找這個文件rcs-xx.-xx.i386.rpm)
RHLinux# rpm -ivh rcs.........