cvs 서버 설정하기
글쓴이: 송지석 / 작성시간: 목, 2004/01/29 - 9:54오전
아직 작성중인데 일단 먼저 올리고 추가되는 대로 수정하겠습니다
설치 환경은 Fedora linux core 1이고 서버 설정(no X)으로 설치한 상태입니다.
기본적으로 회사 내의 내부 네트웍에서 쓰기 위해 구축했고, 여러 리포지토리를 쓸 수 있게 했습니다. 프로젝트별로 다른 저장소를 사용하게 말이죠.
viewcvs로 웹으로 소스코드와 로그를 볼 수 있게 하였고 개발자들에게 커밋 로그를 볼 수 있게 메일로 보내도록 해놨습니다. (여긴 추가 안하고 링크만 두었습니다.. pynoos님의 팁 참고했고. 그 글의 글타래에 제 내용을 올려놨습니다.)
cvs 설치 # adduser cvs # su cvs -저장소 초기화.(만들기) $ cvs -d /home/cvs/repository1 init [cvs@team1cvs cvs]$ ls repository1/ CVSROOT xinetd에 cvs password server 등록. root 권한으로. # vi /etc/xinetd.d/cvspserver -------------------------------------------------------------------------------- # default: on # description: The cvspsever serves CVS Passowrd Server sessions; it uses \ # unencrypted username/password pairs for authentication. service cvspserver { disable = no flags = REUSE socket_type = stream wait = no user = cvs server = /usr/bin/cvs server_args = --allow-root=/home/cvs/repository1 pserver log_on_failure += USERID } -------------------------------------------------------------------------------- # service xinetd restart xinetd 를 정지함: [ 확인 ] xinetd (을)를 시작합니다: [ 확인 ] 여러 저장소. 만일 repository를 더 하고 싶다면 --allow-root=/repository2 --allow-root=/repository3 식으로 추가. 파이어월(iptables) 설정. (cvspserver port) # vi /etc/sysconfig/iptables -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2401 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 2401 -j ACCEPT 추가. -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT web서비스를 위해 추가. (cvs passwd) 스크립트. http://www.geocrawler.com/archives/3/382/1999/7/0/2488420/ -------------8-<-------cut here: cryptout.pl---------8-<--------------- #!/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} "; ------------->-8-------------------------------->-8--------------- # su cvs $ ./cryptout.pl mypass PuBBMZhzYN81E 또는 openssl passwd를 사용해도 된다. 대신에 default로 생성하면 암호가 8자를 넘지 못한다. $ openssl passwd Password: Verifying - Password: AZOrHnixS49es 긴 암호로 생성하려면 md5 형식으로 만들면 된다. openssl passwd -1 Password: Verifying - Password: $1$570WvBfD$KgTuHgdZLIzr.5w/4GJcr1 (-apr1 MD5-based password algorithm, Apache variant 형식은 시험결과 지원되지 않는다.) 또, htpasswd를 써도 된다. $ htpasswd -c passwd rommance New password: Re-type new password: Adding password for user rommance 사용자를 추가하려면 (passwd 파일이 있는 경우) -c 옵션(생성)을 빼준다. $ cd /home/cvs/repository1/CVSROOT/ $ vi passwd rommance:PuBBMZhzYN81E:cvs $ chmod o-r passwd 테스트 unix(또는 cygwin) $ cvs -d :pserver:rommance@localhost:/home/cvs/repository1 login Logging in to :pserver:rommance@localhost:2401/home/cvs/repository1 CVS password: $ 여기서 setgid에러가 난다면 passwd에 cvs사용자이름:패스워드코드:실행할사용자 로 구성되었는지 확인해본다. 흔히 그냥 rommancePuBBMZhzYN81E 식으로 뒤에 :cvs를 안쓰는 경우가 있다. 이 때는 cvs 권한으로 사용되지 않고 rommance로 사용되므로 권한 에러가 난다. test]$ cvs -d :pserver:rommance@localhost:/home/cvs/repository1 import -m "test" t1 wooritg v0 (t1 = 이름(repository name). wooritg = vendor-tag v0 = release-tag tortoise cvs 사용. (윈도우즈) 탐색기로 개발하던 디렉토리 안에 가서, 마우스 오른쪽 버튼 -> CVS -> Make new module 후에 나타난 창에서 CVSROOT를 리포지토리 디렉토리로 정해줌. pserver를 사용할 것이기 때문에 다음과 같이 됨. :pserver:rommance@192.168.169.55:/home/cvs/repository1 ~~~~~~~ ~~~~~~~~ ~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~ 프로토콜 아이디 서버 IP 리포지토리의 절대경로. (직접 창에 쳐넣는 것은 아니고 Server, Repository folder, User name 필드를 채워넣으면 됨 ) Module : 모듈 이름 default로 현재 디렉토리(폴더)의 이름임. OK를 누르면 다음 단계로 넘어가서 끝남. 그러면 아래에 CVS라는 숨김 디렉토리가 생기고 탐색기에서 폴더의 색깔이 변함. 하지만 디렉토리만 더해진 것임. 파일들을 따로 더해야 함. CVS 디렉토리 빼고 나머지파일들을 전부 선택한 후 마우스 오른쪽 클릭 -> CVS Add 또는 프로젝트 디렉토리를 오른쪽 클릭하고 CVS Add contents 그러면 cvs에 넣을 파일 목록이 나오고 바이너리,텍스트 포맷이 표시됨. 바꿀수 있음. viewcvs 설치 fedora에서는 useradd시 홈디렉토리의 권한이 타인에게 실행권한이 없게 만들어진다. 오류가 날 수 있으니 주의할 것. viewcvs가 리포지토리에 접근하기 위해서는 실행권한이 디렉토리가 있어야 한다. http://viewcvs.sourceforge.net download viewcvs0.9.2 압축 풀고, 루트 권한으로 ./viewcvs-install 실행 기본 디렉토리로 하면 됨. viewcvs.conf 설정. -----------8<----------------------8<-------- cvs_roots = Prj1 : /home/cvs/repository1, Prj2 : /home/cvs/prj2, test : /home/cvs/test # this is the name of the default CVS root. default_root = Prj2 mime_types_file = /etc/mime.types address = <a href="mailto:you@some.com">Your name</a> main_title = Some name languages = ko, en-us ----------->8---------------------->8-------- httpd.conf 수정. # vi /etc/httpd/conf/httpd.conf (fedora core1의 경우) -----------8<----------------------8<-------- ScriptAlias /viewcvs/ "/usr/local/viewcvs-0.9.2/cgi" <Directory "/usr/local/viewcvs-0.9.2/cgi"> AllowOverride None Options None Order allow,deny Allow from all </Directory> ----------->8----------------------->8--------- 추가. 한글 로그 메시지 잘 보이게. Fedora의 기본 로케일이 UTF8이라 EucKR로 수정. # vi /etc/httpd/conf/httpd.conf -----------8<----------------------8<-------- AddDefaultCharset EUC-KR ----------->8---------------------->8-------- httpd restart. /etc/init.d/httpd restart enscript 설치. # apt-get install enscript #vi viewcvs.conf use_enscript = 1 cvsgraph 설치. http://www.akhphd.au.dk/~bertho/cvsgraph/ # wget http://www.akhphd.au.dk/~bertho/cvsgraph/release/cvsgraph-1.4.0-1.i386.rpm # rpm -ivh cvsgraph-1.4.0-1.i386.rpm 오류: Failed dependencies: libgd.so.1.8 is needed by cvsgraph-1.4.0-1 libpng.so.2 is needed by cvsgraph-1.4.0-1 ->그래서 아직 설치하지 못했음. libpng와 gd는 깔려있음. 컴파일 해야 할 듯. 그러나 그러기 싫어서 놔둠. password를 통한 접근제한을 위해. 4) Optional: adding access control: In your httpd.conf you can control access to certain modules by adding directives like this: <Location "<url to viewcvs.cgi>/<modname_you_wish_to_access_ctl>"> AllowOverride None AuthUserFile /path/to/passwd/file AuthName "Client Access" AuthType Basic require valid-user </Location> This idea is courtesy to Nick Bauman from http://www.cortexity.com/ Unfortunately some additional tweaking is necessary to avoid that people "sneak in" with URLs like http://<server_name>/viewcvs/*checkout*/<module_name> http://<server_name>/viewcvs/~checkout~/<module_name> and get access to seeing the file contents. :-( At the moment the only solution seems to be to create two additional duplicates of the location directives abvoce with paths modified to <Location "<url to viewcvs.cgi>/*checkout*/<modname_you_wish_to_access_ctl>"> and <Location "<url to viewcvs.cgi>/~checkout~/<modname_you_wish_to_access_ctl>"> 여기 참고. http://bbs.kldp.org/viewtopic.php?t=24058 CVS Log Report http://wiki.kldp.org/wiki.php/KLDPNetCVS-HOWTO CVS 커밋 메시지 포스팅 스크립트.
Forums:
많은 도움이 되었습니다.
많은 도움이 되었습니다.
댓글 달기