본문 바로가기

데비안 리눅스 설치 가이드/APM

[APM] SVN 체크인시 웹 서버에 바로 반영되도록 해보자

반응형

소개



개인적은 서버 공부 및 활용을 위해 홈페이지도 운영하고 있다.

Eclipse를 사용하면서 개인 서버에 설치해둔 SVN을 활용해 파일 버전을 관리하고 있는데, 홈페이지를 변경 할 때마다 체크인 한 파일을 웹 서버에 적용하는 것이 불편했다.

여기서는 체크인을 한 경우 자동으로 웹 서버에도 반영 되도록 하는 방법을 살펴 보겠다.


기초적으로 SVN을 통해 디렉토리를 만들고 다룰줄 알아야 글이 이해가 갈 것이다.


구조



서버의 디렉토리 구조는 다음과 같다.


SVN 관리 디렉토리 : /home/svn/reposiroty/web


Apache2 웹 서버 디렉토리 : /var/www/web



위 그림처럼 개발자는 수정된 파일을 SVN에 체크인 하고, SVN은 체크인된 파일을 감지하여 자동으로 홈페이지를 제공하는 디렉토리에 해당 파일을 업데이트 해주는 방식이다. 


이제 체크인된 파일이나, 변경된 파일을 수동으로 Apache가 제공하는 디렉토리에 가서 업데이트 시키는 바보같은 짓은 하지 않도록 설정해보자.




SVN 체크인과 동시에 웹 서버에 반영하기



웹 서비스를 제공하는 디렉토리에 가서 SVN 체크아웃을 실행시켜야 한다.

이 작업을 통해 SVN은 체크아웃된 디렉토리를 기억하고나서, 이 경로를 통해 업데이트, 체크인 등의 작업을 할 수 있다.


여기서는 /var/www/web 디렉토리가 사용자에게 홈페이지를 제공하는 Apache 디렉토리가 된다.


1. SVN 체크아웃


cd /var/www/web

svn checkout file:///home/svn/repository/web


체크인된 파일이 있다면, /var/www/web/ 안에 체크인한 파일들이 생겼을 것이다.



2. post-commit 설정


post-commit은 SVN에 체크인 작업이 끝난 후에 실행되는 파일이다.

경로는 SVN이 생성한 디렉토리마다 하나의 post-commit가 있는데 hooks 디렉토리 내에 있다.

즉, 여기서는 /home/svn/repository/web/hooks/ 디렉토리 내에 있는 것이다.


cd /home/svn/repository/web/hooks

vi post-commit


post-commit에 아래와 같은 내용을 넣는다.


#!/bin/bash
svn update /var/www/web 


이제 post-commit가 실행 가능하도록 속성을 변경한다.


chmod 755 post-commit


이제 Eclipse를 통해 파일을 체크인하는 경우 post-commit가 실행되어 업데이트를 통해 /var/www/web에 체크인된 파일을 반영한다.



마침



글을 쓰고나서 보니 SVN을 처음 다루는 분들에게는 마냥 어렵게 느껴질 것 같다.


추가로 /var/www/web 디렉토리 내의 파일을 직접 수정하였다면, SVN은 변경된 파일을 내용을 갖고 있지는 않게된다. 그래서 Eclipse에서는 수정전의 파일만 볼 수 있다.

따라서 아래와 같이 SVN을 통한 변경이 아닌 체크아웃된 디렉토리 내의 파일을 직접 수정하 경우 수정된 파일 내용을 SVN에 알려주기 위해 체크인을 시켜줘야 한다.



cd /var/www/web

svn ci -m "변경한 내용 로고"


반응형