svn을 통해서 웹서버를 버전관리 할 경우 커스터마이징시 매우 쓸모 있어요.

따라서 svn 설치 및 svn서버와 웹서버간의 연동을 다뤄볼게요.





1. 상태

1-1. 기존의 웹서버가 운영되고 있었음

1-2. 운영체제는 centos7 이며 svn은 설치되어 있지 않음

1-3. 별도의 서버가 운영되고 있음





2. 요구사항

2-1. 외부에서 다수의 사용자가 접속하여 버전 관리가 가능해야함

2-2. commit 시 자동으로 웹서버에 파일들을 적용 되어야 함





3. svn 설치 여부 확인


[root@localhost ~]# svnserve --version


에러가 발생한다면 미설치 상태 입니다.





4. svn 설치


[root@localhost ~]# yum install subversion


중간의 질문을 한다면 y를 눌러서 설치합니다.





5. 관리를 편하게 하기 위해 svn 이라고 별도의 디렉토리 생성


[root@localhost ~]# mkdir /svn

[root@localhost ~]# cd /svn


관리를 편하게 하기 위해 svn 이라고 별도의 디렉토리 생성후 생성한 디렉토리로 이동 합니다.





6. 저장소생성 (프로젝트 단위) 및 폴더 권한 수정


[root@localhost svn]# svnadmin create --fs-type fsfs 프로젝트명(디렉토리명)
[root@localhost svn]# chmod -R g+ws 프로젝트명(디렉토리명)


권한을 변경하지 않을 경우 root 이외에는 svn 명령어가 동작하지 않을수 있습니다.



7. 저장소 내에 svn 설정


[root@localhost svn]# vi 프로젝트명/conf/svnserve.conf


anon-access = none  //모든사용자접속(인증된 사용자만 접속)

auth-access = write  //작성가능여부

password-db = db  //인증설정파일

authz-db = authz  //권한설정파일


svnserve.conf 내에 설정을 위와 같이 변경해 줍니다.





8. svn 접속 아이디 만들기 (인증생성)


[root@localhost svn]# vi 프로젝트명/conf/passwd


[users]

아이디 = 패스워드


svn 이용할 아이디와 패스워드를 설정 합니다.





9. svn 접속 아이디 권한 설정


[root@localhost svn]# vi 프로젝트명/conf/authz


[/]

아이디 = rw  //읽기쓰기 보두 가능


권한 설정이 안되어 있을 경우 접속이 안됩니다.





10. svnserve 를 systemctl 에 등록


[root@localhost svn]# vi /etc/sysconfig/svnserve


OPTIONS="--threads --root /svn"


systemctl start svnserve 와 같이 svn 서버의 동작/멈춤을 위해서 등록합니다. 





11. svn 동작


[root@localhost svn]# systemctl start svnserve





12. 서버동작시 자동 실행 설정


[root@localhost svn]# systemctl enable svnserve.service


자동실행을 원치 않는다면 서버가 재부팅 또는 켤때마다 11번을 이용해 svn을 동작시켜 주세요.





13. 외부에서 svn 사용 가능하도록 방화벽 설정


[root@localhost svn]# vi /etc/firewalld/zones/public.xml


<port protocol="tcp" port="3690"/> //추가

</zone>



[root@localhost svn]# firewall-cmd --reload


</zone> 바로 위에 3690 포트 설정을 추가해주시고 방화벽을 재시작해주셔야 적용되요.





14. 주작업 컴퓨터와 svn을 연동

14-1. http://tortoisesvn.net/ 에서 프로그램을 다운로드 하여 설치합니다.

14-2. 원하는 위치에 폴더를 만들고 폴더 내에 반영하고자 하는 프로젝트(파일들)를 넣어 둡니다.

14-3. 폴더를 우클릭하여 SVN Checkout.. 을 클릭합니다.

14-4. URL of repository (저장소 URL) 을 입력하고 OK 합니다.



14-5. 인증하면 프로젝트(파일들)이 svn에 업로드 됩니다.






15. svn서버와 웹서버 연동

svn을 commit 할 경우 별도의 업데이트 없이 웹서버에 바로 적용 가능하도록 설정 합니다.



15-1. 상태

svn서버 : /svn/프로젝트명

웹서버 : /home/프로젝트명



15-2. svn서버와 웹서버 연결


[root@localhost svn]# svn checkout file:///svn/프로젝트명 /home/프로젝트명


최초 checkout 해서 연결을 만들어 줍니다.



15-3. Commit 시 자동 동작 설정 (post-commit)


[root@localhost svn]# vi 프로젝트명/hooks/post-commit


#!/bin/sh

export LANG=en_US.UTF-8

svn update /home/프로젝트명

chwon -R 소유자:그룹명 /home/프로젝트명


export LANG = en_US,UTF-8 은 한글 파일명이 프로젝트 내에 있을 경우 작성하며, commit 될 경우 svn update 가 자동으로 동작 합니다.



15-4. post-commit 파일 권한 변경


[root@localhost svn]# chmod 777 post-commit


post-commit 이 권한에 구애 받지 않고 정상적으로 동작할수 있도록 권한을 777 로 변경합니다.


















+ Recent posts