카테고리 없음

CentOS 7 에서 Subversion 설치 및 설정

Edward. K 2021. 11. 29. 15:43
반응형

* VM 세팅이 완료되었다 하여.. 프로그램들 설치를 하려고 보니./ 에러가 발생.

  [root@localhost ~]# yum list subversion
  Loaded plugins: fastestmirror, langpacks
  Loading mirror speeds from cached hostfile
 Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock error was
  14: curl#6 - "Could not resolve host: mirrorlist.centos.org; 알 수 없는 오류"


 * VM 생성 담당자에게 확인하니..  뭔 말인지 모르지만..해결..;;
   내부망 VM으로 외부 repository 서버와 통신되지 않기 때문에 리눅스 ISO로 내부 repository 설정 하였습니다.

 

 


ㄱ. Subversion 설치

ㄱ.1. 설치 할 수 있는 Subversion 확인. yum list subversion

[root@localhost /]# yum list subversion
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Installed Packages
subversion.x86_64                         1.7.14-14.el7                         @anaconda

 
ㄱ.2. Subversion  설치   yum install -y subversion       * '3. 설치확인' 후  미설치상태인 경우.

[root@localhost /]# yum install -y subversion

   
ㄱ.3. 설치확인     rpm -qa | grep subversion  혹은    svn --version

[root@localhost /]# rpm -qa | grep subversion
subversion-libs-1.7.14-14.el7.x86_64
subversion-1.7.14-14.el7.x86_64

[root@localhost /]# svn --version
svn, 버젼 1.7.14 (r1542130)
Apr 11 2018, 02:40:28에 컴파일 됨

Copyright (C) 2013 The Apache Software Foundation.
This software consists of contributions made by many people; see the NOTICE
file for more information.
Subversion is open source software, see http://subversion.apache.org/
..

 



ㄴ.  Subversion 설정

ㄴ.1. 저장할 폴더(svn_repos) 생성     mkdir svn_repos

[root@localhost /]# cd /
[root@localhost /]# mkdir svn_repos
[root@localhost /]# ls
ISO  boot  dev  home  lib64  mnt  proc  run   srv        sys  usr
bin  data  etc  lib   media  opt  root  sbin  svn_repos  tmp  var


ㄴ.2. svnserve 파일에 방금 생성한 svn 저장소를 관리할 폴더를 지정.   
    * /etc/sysconfig/svnserve 파일을 vi로 열고 수정합니다.
    (이 파일을 생성해주어야 service svnserve start/stop/restart가 가능하다고 합니다)

[root@localhost /]# cd /etc/sysconfig
[root@localhost sysconfig]# vi svnserve
[root@localhost sysconfig]# cat svnserve
# OPTIONS is used to pass command-line arguments to svnserve.
#
# Specify the repository location in -r parameter:
OPTIONS="--threads --root /svn_repos"


ㄴ.3. Subversion 서비스 포트 방화벽 해제 설정       * 개발서버에 firewall 미실행중.. 
* Subversion의 서비스 포트를 리눅스 방화벽에서 제외     ( SVN의 기본 포트: 3960 )
   * firewall 관련 : https://avaiable.tistory.com/153

sudo firewall-cmd --permanent --zone=public --add-port=3690/tcp
sudo firewall-cmd --reload

[root@localhost sysconfig]# sudo firewall-cmd --permanent --zone=public --add-port=3690/tcp
FirewallD is not running
[root@localhost sysconfig]# firewall-cmd --state
not running
[root@localhost sysconfig]#


ㄴ.4. Subversion 실행   

[root@localhost sysconfig]# ps -ef | grep svn
root      60907  60381  0 13:35 pts/1    00:00:00 grep --color=auto svn

[root@localhost sysconfig]# systemctl start svnserve.service
[root@localhost sysconfig]# ps -ef | grep svn
root      61221      1  0 14:08 ?        00:00:00 /usr/bin/svnserve --daemon --pid-file=/run/svnserve/svnserve.pid --threads --root /svn_repos
root      61223  60381  0 14:08 pts/1    00:00:00 grep --color=auto svn
[root@localhost sysconfig]# netstat -anp | grep svnserve
tcp        0      0 0.0.0.0:3690            0.0.0.0:*               LISTEN      61221/svnserve


    systemctl start svnserve.service   # 실행
    systemctl stop svnserve.service    # 중지
    systemctl restart svnserve.service # 재실행
    ps -ef | grep svn  #  서브버전의 프로세스의 동작여부를 확인
    netstat -anp | grep svnserve  # 서브버전의 서비스 포트를 확인(기본적으로 3690 포트 사용)





ㄷ.  Subversion 저장소 관리

ㄷ.1.  Subversion에  저장소 생성  *  svn repos 경로에서 저장소를 생성합니다. 

[root@localhost sysconfig]# cd /svn_repos
[root@localhost svn_repos]# svnadmin create --fs-type fsfs AAA
[root@localhost svn_repos]# svnadmin create --fs-type fsfs BBB
[root@localhost svn_repos]# svnadmin create --fs-type fsfs CCC
[root@localhost svn_repos]# svnadmin create --fs-type fsfs DDD
[root@localhost svn_repos]# ls
AAA  BBB  CCC  DDD

[root@localhost svn_repos]# cd AAA
[root@localhost AAA]# ls
README.txt  conf  db  format  hooks  locks
[root@localhost AAA]# cd conf
[root@localhost conf]# ls
authz  passwd  svnserve.conf

  TBS(저장소명)
      |-  conf     * svn 설정파일 폴더
            |-  authz :    접근  계정 권한
            |-  passwd   : 접근할 계정정보
            |-  svnserve.conf  : 접근한을 관리하는 설정파일
 

********************************************************************
**  ㄷ.2 ~ ㄷ.4  :   각각 저장소 별로 세팅 합니다.  START  

ㄷ.2.  저장소 접근 권한  설정      *  저장소명/conf/svnserve.conf  
        anon-access, auth-access, password-db, authz-db 항목 주석을 제거, anon-access 수정

[root@localhost AAA]# cd conf
[root@localhost conf]# ls
authz  passwd  svnserve.conf
[root@localhost conf]# vi authz
[root@localhost conf]# vi svnserve.conf
[root@localhost conf]# cat svnserve.conf
### This file controls the configuration of the svnserve daemon, if you
### ..
### ..
[general]
### The anon-access and auth-access options control access to the
### ..
### ..
anon-access = none
auth-access = write
### ..
### ..
password-db = passwd
### The authz-db option controls the location of the authorization
### ..
### ..
authz-db = authz
### This option specifies the authentication realm of the repository.
### ..
### ..
realm = THE AAA SVN
###  이하 수정없음 

[sasl]
###  이하 수정 없음



ㄷ.3.  저장소에 접근할 계정(아이디/비번)정보 추가      *  저장소명/conf/passwd  파일을 열어 계정정보(아이디 = 비번) 추가합니다.   

[root@localhost conf]# vi passwd
[root@localhost conf]# cat passwd
### This file is an example password file for svnserve.
### ..

[users]
karl = karl
edward = edward


ㄷ.4.  저장소에 접근할 계정정보 추가      *  저장소명/conf/authz   파일을 열어 계정정보 추가합니다.  

[root@localhost conf]# pwd
/svn_repos/AAA/conf
[root@localhost conf]# vi authz
[root@localhost conf]# cat authz
### This file is an example authorization file for svnserve.
### ..
### ..

# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r:q:q

# add TBS authz
[/]
* = r
root = rw
karl = rw
edward = rw

      * = r          #TBS저장소의 루트경로에 모든 사용자가 read 할수 있는 권한을 부여
      root = rw    #TBS 저장소의 루트경로에 root 계정은 read, write 권한 부여
      admin = rw  #TBS1저장소의 루트경로에 admin 계정은 read, write 권한 부여
 
**  ㄷ.2 ~ ㄷ.4  :   각각 저장소 별로 세팅 합니다.  END
********************************************************************


  
ㄷ.5. svnserve 데몬 재시작      service svnserve restart

[root@localhost conf]# systemctl restart svnserve.service

     systemctl start svnserve.service   # 실행
     systemctl stop svnserve.service    # 중지
     systemctl restart svnserve.service # 재실행
     ps -ef | grep svn  #  서브버전의 프로세스의 동작여부를 확인
     netstat -anp | grep svnserve  # 서브버전의 서비스 포트를 확인(기본적으로 3690 포트 사용)
 

ㄷ.6. SVN 저장소 확인     svn list svn://ip 또는 도메인 주소/저장소명

[root@localhost conf]# svn list svn://127.0.0.1/AAA

[root@localhost conf]# svn info svn://127.0.0.1/AAA
[root@localhost conf]# svn info svn://127.0.0.1/BBB
[root@localhost conf]# svn info svn://127.0.0.1/CCC
[root@localhost conf]# svn info svn://127.0.0.1/DDD
더보기

* 첫 접속시  
[root@localhost conf]# svn info svn://127.0.0.1/AAA
인증 영역(realm):  AAA SVN REPO
'root'의 암호:
인증 영역(realm):  AAA SVN REPO
사용자명:karl
'karl'의 암호:

-----------------------------------------------------------------------
주의! 인증정보 영역:

    AAA SVN REPO

에 대한 당신의 비밀번호는 디스크에 암호화되어 저장되지 않습니다.
가능하면, 비밀번호를 암호화하여 저장하도록 설정을 바꾸십시오.
자세한 것은 문서를 참조하세요.

이 주의 문구를 다음에 보이지 않게 하려면, 'store-plaintext-passwords'의
설정을 'yes' 혹은 'no'로 지정하면 됩니다. 설정 파일은 다음과 같습니다.
'/root/.subversion/servers'
-----------------------------------------------------------------------
비밀번호를 평문으로 저장하겠습니까 (yes/no)?yes
경로: AAA
URL: svn://127.0.0.1/AAA
저장소 루트: svn://127.0.0.1/AAA
저장소 UUID: d***********
리비전: 0
노드 종류: 디렉토리
마지막 수정 리비전: 0
마지막 수정 일자: 2021-11-29 14:17:59 +0900 (2021-11-29, 월)

더보기

 * 이후 접속시  ***********************************
[root@localhost conf]# svn list svn://127.0.0.1/AAA
[root@localhost conf]# svn info svn://127.0.0.1/AAA
경로: AAA
URL: svn://127.0.0.1/AAA
저장소 루트: svn://127.0.0.1/AAA
저장소 UUID: d***********

리비전: 0
노드 종류: 디렉토리
마지막 수정 리비전: 0
마지막 수정 일자: 2021-11-29 14:16:58 +0900 (2021-11-29, 월)



    
 **  SELinux가 활성화되어있는 경우, SVN 저장소 접근이 안됩니다. 

 [root@localhost conf]# sestatus
SELinux status:                 disabled

 ** 만약  활성화(enabled)되어있는 경우라면   /etc/selinux/config 파일을 열어 수정합니다.

[root@localhost conf]# vi /etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     ..
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
#     ..
SELINUXTYPE=targeted


  

*  서버동작시 SVN 서비스 자동 실행하기  systemctl enable svnserve.service

[root@localhost conf]# systemctl enable svnserve.service
Created symlink from /etc/systemd/system/multi-user.target.wants/svnserve.service to /usr/lib/systemd/system/svnserve.service.

 

 

SVN 관리 심플 : https://eknote.tistory.com/2126

반응형