Linux

SVN 서버 설치

techapi 2025. 3. 11. 22:52
반응형

SVN(Subversion)은 소프트웨어 개발 프로젝트에서 사용되는 버전 관리 시스템. 

 

주요 특징:

  1. 중앙집중식 버전관리: SVN은 중앙 서버에 모든 버전 정보를 저장하고 관리합니다.
  2. 디렉터리 구조: Trunk(주요 개발), Branches(분기 개발), Tags(릴리스 버전 보관)로 구분하여 프로젝트를 관리합니다.
  3. 주요 기능:
    • 파일 및 디렉터리의 버전 관리
    • 이전 상태로의 복원 가능
    • 변경 사항 추적 및 비교
    • 여러 개발자의 협업 지원
  4. 명령어: checkout(소스 다운로드), update(최신 소스 갱신), commit(변경 사항 반영), merge(충돌 해결) 등의 기능을 제공합니다.

SVN은 CVS(Concurrent Versions System)의 한계를 극복하기 위해 2000년에 개발이 시작되었으며, 2001년에 첫 버전이 공개되었습니다. 

현재는 Git과 같은 분산 버전 관리 시스템에 비해 사용 빈도가 줄어들었지만, 여전히 많은 프로젝트에서 사용되고 있습니다.

 

1. 참고 사이트

http://zetawiki.com/wiki/CentOS_%EC%84%9C%EB%B8%8C%EB%B2%84%EC%A0%84_%EC%84%9C%EB%B2%84_%EC%84%A4%EC%B9%98_%EB%B0%8F_%EC%84%A4%EC%A0%95_(svn)

  

2. 설치  (yum 설치시 selinux 해제 해야 )

yum install subversion

 

 

3. 설치 소스 (권장, 아파치와 유사함)

yum -y install wget gcc gcc-c++ pcre-devel openssl-devel zlib-devel expat-devel

 

wget http://apache.tt.co.kr/apr/apr-1.7.0.tar.gz

wget http://apache.tt.co.kr/apr/apr-util-1.6.1.tar.gz

wget http://mirror.apache-kr.org/apache/apr/apr-iconv-1.2.2.tar.gz

wget https://sourceforge.net/projects/pcre/files/pcre/8.44/pcre-8.44.tar.gz

wget http://zlib.net/zlib-1.2.11.tar.gz

wget https://www.sqlite.org/2021/sqlite-autoconf-3350200.tar.gz

wget http://apache.tt.co.kr/subversion/subversion-1.14.1.tar.gz

 

 

yum -y install wget gcc gcc-c++ pcre-devel openssl-devel zlib-devel expat-devel

 

## apr

./configure --prefix=/usr/local/apr

cp libtool libtoolT

make

make install

 

## apr-util

./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr

make

make install

 

## apr-iconv

./configure --prefix=/usr/local/apr-iconv --with-apr=/usr/local/apr

make

make install

 

## pcre

./configure --libdir=/usr/local/lib64

make

make install

 

## zlib

./configure --with-apr=/usr/local/apr

make

make install

 

## subversion

./configure --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-lz4=internal --with-utf8proc=internal

make

make install

 

 

4. 환경 설정

 

/etc/sysconfig/svnserve

#OPTIONS="--threads --root /data/svn/repos --listen-port 9993 --compression 2 --memory-cache-size 4096 --log-file=/home/babasvn/svn_repository.log"

 

#OPTIONS="--threads --root /data/svn/repos --listen-port 9993"

 

OPTIONS="--threads --root /data/svn/repos --listen-port 9993 --memory-cache-size 4096 --log-file=/home/babasvn/svn_repository.log"

 

 

5. 사전작업 (pid / log 정보 폴더)

 

PID 폴더

mkdir -p /var/lib/svnserve_pid; chown babasvn.babasvn /var/lib/svnserve_pid

 

로그 폴더

mkdir /var/log/svnserve

chown babasvn.babasvn /var/log/svnserve/

 

 

6. 데몬 파일

                        

vi /usr/lib/systemd/system/svnserve.service

 

[Unit]

Description=Subversion protocol daemon

After=syslog.target network.target

 

[Service]

Type=forking

EnvironmentFile=/etc/sysconfig/svnserve

ExecStart=/usr/local/bin/svnserve --daemon --pid-file=/var/lib/svnserve_pid/svnserve.pid $OPTIONS

ExecStop=ps -ef|grep svn|grep -v grep|kill -9 `awk '{print $2}'`

KillMode=process

#Restart=on-failure

Restart=no

StartLimitBurst=3

StartLimitInterval=60s

 

User=babasvn

Group=babasvn

UMask=0007

RestartSec=10

#Restart=always

Restart=no

 

[Install]

WantedBy=multi-user.target

 

7. 데몬 설정

systemctl enable svnserve.service

systemctl daemon-reload

 

 

ps –ef |grep svnserve

 

babasvn  11796     1  0 Jul27 ?        00:01:17 /usr/local/bin/svnserve --daemon --pid-file=/var/lib/svnserve_pid/svnserve.pid --threads --root /data/svn/repos --listen-port 9993 --memory-cache-size 4096 --log-file=/home/babasvn/svn_repository.log

 

 

8. 설정

# svn 전용 계정 생성  --> svn 계정 관리만

 

# 프로젝트 생성

svnadmin create --fs-type fsfs /data/svn/repos

 

svn mkdir svn://test.com/trunk -m 'project' --username 'user' --password 'password'

 

svn mkdir svn://test.com/brunches -m ' project ' --username 'user' --password 'password'

 

svn mkdir svn://test.com/trunk -m ' project ' --username 'user' --password 'password'

'

svn mkdir svn://test.com/brunches -m ' project ' --username 'user' --password 'password'

 

 

9. import

svn import대상 directory_root_name svn://localhost/sample/trunk

svn propset svn:ignore -F svnignore.txt /www/repos/test.com

svn proplist -v test.com

 

 

 

10. 로그 로테이트 등록 (?)

 

vi /etc/logrotate.d/svnserve

 

/var/log/svnserve/*.log {

    daily

    missingok

    rotate 14

    compress

    notifempty

    create 640 svn adm

    sharedscripts

    postrotate

            if /bin/systemctl status svnserve > /dev/null ; then \

                /bin/systemctl restart svnserve > /dev/null; \

            fi;

    endscript

}

 

10

반응형

'Linux' 카테고리의 다른 글

Denyhost 설치  (0) 2025.03.11
JenKins 설치  (1) 2025.03.11
Log 일일백업 script  (0) 2025.03.11
일일백업 script  (0) 2025.03.11
Softether VPN  (0) 2025.03.11