S/W 개발 기반 시스템 구성 – 번외편 : 문서 공유와 공동 작업

개발 과정 또는 업무 중에는 수많은 문서를 만들고 공유합니다. 쉽고 빠르게 문서를 함께 만들고 공유하는 방법으로 위키를 쓰기도 하지만 실무에서는 여전히 파워 포인트, 엑셀 등이 기본이죠. 흔히 문서 작업 과정을 보면 누군가가 처음 문서를 만들고 메일로 돌린 후 응답 내용을 받아 추가하거나 각자 추가하도록 파일을 돌립니다. 또는 공유 폴더에 문서를 두고 돌아가며 편집하기도 하고요. 하지만 이런 과정에서 이전 내용을 덮어 써 버리는 실수를 하기도 하고, 누군가 각자 수정한 내용을 모아 정리해 줘야 하는데 여러모로 불편합니다. 물론 오피스 문서라면 공동 작업 설정을 할 수도 있겠지만 다른 문서라면 어떻게 할까요? 버전 관리 시스템은 병합할 수 있는 텍스트 문서에는 유용하겠지만 바이너리 파일은 병합이란 말이 무의미하므로 효용성이 많이 떨어집니다. 게다가 공유 폴더에 문서를 두고 돌아가며 쓰는 방법이 제대로 동작하지 않는 경우도 있고요. 예를 들면 이전 사용자가 파일 편집을 마쳤는데도 세션이 닫히지 않아 다른 사용자가 해당 파일을 편집할 수 없다든지, 뭐 그렇죠.

아무튼 이런저런 문제 때문에 선택한 게 WebDAV입니다. 문서 공유와 더불어 무엇보다 중요한 배타적 편집을 지원하고 필요할 때는 FTP처럼 파일을 업/다운해 보관하거나 전달할 수 있다는 게 장점입니다. 이 때문에 별도 프로그램을 써야 하는 게 약간 불편할 수도 있지만 인간이란 적응의 산물이므로 그런 점은 가볍게 무시할 수 있어 별 문제가 되지 않습니다. 🙂

미리 준비할 것

  • OpenLDAP: 지금까지 그랬듯 통합 인증 시스템으로 사용합니다. 설치 방법은 인증 시스템 구성 방법 을 참고.
  • Apache 웹 서버: WebDAV 서버로 사용합니다. Apache 설치 방법은 웹 서버 설치 방법 을 참고.
  • BitKinex: 무료 WebDAV 클라이언트입니다. 공식 홈페이지에서 다운로드할 수 있습니다.

WebDAV 서버 설정

이미 사용 중인 Apache 2.2에는 WebDAV 설정이 기본적으로 들어 있으므로 필요한 내용만 주석을 풀어 주면 됩니다. 설치 디렉터리 아래  conf\extra\httpd-dav.conf 파일을 열어 보면 기본적으로 필요한 모듈을 안내하고 있으므로 conf\httpd.conf 파일에서 찾아 주석을 해제하면 됩니다. 간략히 적어 보면 다음과 같습니다.

  • mod_dav.so
  • mod_dav_fs.so
  • mod_setenvif.so
  • mod_alias.so

mod_dav.somod_dav_fs.so 가 필수지만 나머지도 함께 할성화합니다. mod_auth_digest.so, mod_authn_file.so는 인증에 필요하므로 각자 필요에 따라 활성화하면 되는데, 여기서는 LDAP을 사용하므로 다음 모듈을 활성화합니다.

  • mod_ldap.so
  • mod_authnz_ldap.so

그리고 WebDAV를 사용할 수 있도록 conf\httpd.conf 파일에서 다음 설정을 활성화합니다.

# Distributed authoring and versioning (WebDAV)
Include conf/extra/httpd-dav.conf

conf\extra\httpd-dav.conf 파일에 있는 WebDAV 설정은 다음과 같습니다.

DavLockDB "E:/DavLock/DavLockDB"

Alias /wd "D:/webdav"
<Directory "D:/webdav">
  Dav On

  Order Allow,Deny
  Allow from all

  AuthName DAV
  AuthType Basic
  AuthBasicProvider ldap
  AuthzLDAPAuthoritative off
  AuthLDAPURL "ldap://localhost/ou=People,dc=plab,dc=net?uid?sub?(objectClass=*)"
  Require valid-user
</Directory>
## The following directives disable redirects on non-GET requests for
# a directory that does not include the trailing slash. This fixes a
# problem with several clients that do not appropriately handle
# redirects for folders with DAV methods.
#
BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
BrowserMatch "MS FrontPage" redirect-carefully
BrowserMatch "^WebDrive" redirect-carefully
BrowserMatch "^WebDAVFS/1.[0123]" redirect-carefully
BrowserMatch "^gnome-vfs/1.0" redirect-carefully
BrowserMatch "^XML Spy" redirect-carefully
BrowserMatch "^Dreamweaver-WebDAV-SCM1" redirect-carefully

DavLockDB는 파일 잠금에 대한 정보를 처리하기 위한 DB인데, DavLock 디렉터리 아래에 DavLockDB란 이름으로 만들므로 디렉터리는 미리 만들어 둡니다. 또한 WebDAV로 사용할 디렉터리는 D:\webdav 이므로 마찬가지로 먼저 만들어 둡니다. 설정을 마친 후 Apache 웹 서버를 리셋하면 http://<서버주소>/wd/로 접속할 수 있습니다.

WebDAV 클라이언트 설정

WebDAV 클라이언트에는 많은 제품이 있지만 여기서는 BitKinex를 사용합니다. 상용 제품에 비해 드라이브 매핑은 못 하지만 탐색기 형태 패널을 제공해 쉽게 쓸 수 있습니다. 설치 과정은 특별한 것이 없으며 넘어갑니다. 설치를 마친 후 처음 실행하면 설정 마법사를 실행해 접속 서버 설정을 할 수 있지만, 이렇게 했을 때는 WebDAV 서비스로 설정을 못할 때가 종종 생기므로 마법사를 사용하지 않고 직접 설정합니다.

실행하면 다음과 같은 주화면을 볼 수 있는데 현재 WebDAV 서버 두 곳을 설정해 둔 것을 볼 수 있습니다.

BitKinex 실행 화면

WebDAV 서버를 추가하려면 목록에서 Http/WebDAV 를 선택한 후 마우스 오른쪽 버튼을 누르거나 Data Source 메뉴를 선택한 후 New → Http/WebDAV를 선택하면 사용할 이름을 입력할 수 있습니다. 구별할 용도이므로 적절히 입력 후 엔터를 누르면 다음과 같은 설정 창이 뜹니다. 먼저 Server 란에 서버 주소를 입력하는데 http://<서버주소>/wd/에서 <서버주소> 부분만 입력합니다. User와 Password에는 접속 계정 정보를 입력합니다.

BitKinex WebDAV 서버 설정

Site Map 메뉴에서 기본으로 설정되어 있는 내용을 선택한 후 Path 정보를 /wd/로 바꾸고 Type은 Directory (WebDAV-compliant)인 것을 확인하고 Update를 선택해 내용을 바꿉니다.

BitKinex Site Map 설정

확인을 선택해 설정을 마칩니다.

서버에 접속할 때는 설정한 설정을 마친 서버를 더블 클릭하거나 마우스 오른쪽 버튼을 눌러 Browse를 선택하면 됩니다. 다음과 같은 탐색기가 뜨는데 빨간 사각형으로 표시한 부분이 녹색이면 정상적으로 연결된 겁니다. 탐색기 화면에서 왼쪽은 서버, 오른쪽은 로컬 PC입니다.

BitKinex 브라우저

서버 쪽에서 파일을 더블 클릭하면 보기 상태로 열므로 수정해도 서버로 반영할 수 없습니다. 파일을 마우스 오른쪽 버튼으로 선택한 후 Edit를 선택해야 하므로 주의합니다. 편집 상태가 되면 주화면 아래 Acitve 창에 Edit: 로 시작하는, 현재 편집 중인 내용이 나타납니다. 또한 BitKinex 탐색기 화면에서는 파일을 잠그고 표시를 하는데 잠금을 풀 때까지 다른 사람은 편집할 수 없습니다.

BitKinex에서 파일 편집

편집을 마치면 파일을 저장한 후 닫고 Active 창에 있는 편집 중인 내용을 마우스 오른쪽 버튼으로 선택 Continue를 선택합니다. 그러면 변경 내용이 서버에 반영되고 잠금 상태가 자동으로 풀립니다. 취소하려면 Cancel을 선택하면 되는데 이 때는 잠금 상태가 자동으로 풀리지 않으므로 파일을 마우스 오른쪽 버튼으로 선택 후 Unlock으로 잠금 상태를 풀어 줍니다.

마지막으로 한 가지 팁을 알려드리면 전송 방식을 바이너리로 설정하는 게 좋습니다. BitKinex 탐색기에서 Data Source → Transfer Mode 메뉴를 선택하고 Binary로 설정하면 됩니다. BitKinex 탐색기에서 CSV 파일을 엑셀로 열거나 로컬로 다운로드 하면 줄바꿈이 비정상적으로 바뀌는데 다운로드하는 과정에서 줄바꿈 문자 처리 방식이 맞지 않아 생기는 현상이며 알려드린 팁으로 해결할 수 있습니다.

Notes:
1. 사실 현재 상황에서는 이게 최적의 해법이랄까요.
사실 현재 상황에서는 이게 최적의 해법이랄까요.

You may also like...