Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

Git기반의 위키 : Gollum

블로그를 운영하고 있기는 하지만 블로그와는 다르게 위키에 대한 욕구가 있었습니다. 블로그로 포스팅하기 어려운 내용이지만 정리는 좀 해보거나 나중에 참고하고픈 내용들도 있기 때문입니다. 전에는 스프링노트도 약간 써봤고 이런 저런 위키들의 맛을 약간씩은 봤었지만 딱히 맘에드는 것들은 없었습니다.

개인적으로는 ATLASSIANConfluence이 제일 깔끔해 보이긴 했지만 개인 호스팅서버에 돌리기에는 좀 무거워보였고 미디어위키는 좀 너무 안이쁜 느낌이었습니다. 꾸미려면 손도 많이 가고요. 서비스형을 쓰는게 젤 마음이 편하기는 한데 마크업 문법도 각각 조금씩 다르고 시간이 지나다 보니 서비스가 종료되는 문제들 때문에(별거 아닌 데이터임에도) 신경쓰이는 부분도 있었습니다.




Gollum
최근에는 githubbitbucket을 쓰면서 이런저런 용도의 범용적인 마크업으로 Markdown을 주로 쓰고 있는데 그러던 중 눈에 들어온 것이 Github에서 만든 gollum입니다.(반지의 제왕에 나오는 그 골룸 맞습니다.)

github를 보면 웹에서 대부분의 마크업언어를 지원하고 있습니다. 프로젝트 첫페이지를 위한 Readme파일도 readme.md라고 만들어서 올리면 자동으로 github가 마크다운파싱을 해서 웹에서 보여주게 됩니다. Rdoc, textile등 수많은 마크업들을 지원하면 사실 github의 Wiki페이지도 git으로 관리되고 있기 때문에 clone받아서 수정하고 push할 수 있습니다.(git주소에 프로젝트명.git을 프로젝트명.wiki.git으로 해서 클론받아서 사용하면 됩니다.)

gollum은 이 git기반의 위키를 별로도 분리해서 공개한 Ruby on Rails(kroisse님의 댓글로 수정합니다. Rails없이 Sinatra기반으로 동작한답니다.)로 만들어진 솔루션입니다. git저장소를 기반으로 동작하는 위키로 페이지를 만들면 새파일을 생성하고 변경사항에 대한 설명을 커밋메시지로 하여 커밋을 하게 됩니다. 형상관리를 해주는 git의 히스토리를 위키에서 그대로 이용할 수 있으며 웹으로 띄운 gollum에서 페이지추가나 수정을 하여도 되고 에디터를 사용하여 직접 파일을 조작해도 상관없습니다. 어차피 git기반이니까요.(이글을 쓰는 시점의 최신 버전은 v1.1.1입니다.) 원격저장소를 이용할 경우 원격저장소를 등록하고 push만 하면 자동으로 백업역활까지 하게 됩니다.

사실 기능이 대단하진 않고 아주 심플한 편인데 그냥 위키의 문서화 기능에 충실한 점이 맘에 들었습니다.(사실 저도 Wiki를 잘쓰는 편은 못됩니다. 그냥 메모적는정도로만...) 그리고 웹에만 의존하지 않고 git기반이기 때문에 제가 자유롭게 접근할 수 있다는 점과 상당히 Geek스럽게 느껴지는 부분이 좋았습니다. 파일기반의 마크다운이기 때문에 나중에 다른 위키나 시스템으로 옮겨가게 될 경우에도 크게 손이 가지 않을 것 같았습니다.(플랫폼에 대한 의존성이 적다고 할 수 있겠죠.)




Gollum 설치
Gollum은 루비온레일즈로 만들어졌기 때문에 rubygem에서 관리가 되고 있기 때문에 Ruby on rails(kroisse님의 댓글로 지웁니다. Rails는 필요없더군요.)와 gem이 설치가 되어 있어야 합니다.

[sudo] gem install gollum

위 명령어만 실행하면 gollum의 최신 버전을 설치할 수 있습니다.(권한문제 오류가 나올경우 sudo권한으로 실행해야 합니다.) 이렇게 설치한 gollum은 gem설치폴더에 설치가 되는데 이 폴더의 위치는 ruby -r rubygems -e "p Gem.path"를 실행하면 gem의 설치폴더 위치를 확인할 수 있습니다. 저같은 경우 OSX에서는 ~/.gems/1.8/이었고 Ubuntu에서는 /var/lib/gems/1.8/ 이었습니다. 이폴더 아래의 bin폴더를 PATH에 등록하면 어느 위치에서나 gollum을 실행할 수 있습니다. gollum 설명페이지 에 나온것처럼 자신이 사용할 마크업언어에 대한 툴도 프레임워크를 설치해 주어야 합니다. 저같은 경우는 Markdown을 사용하기 때문에 gem install rdiscount를 실행해서 설치해 주었습니다.




Gollum 사용
git저장소로 쓰이는 폴더에서 gollum 명령어를 입력하면 서버가 시작되고 http://localhost:4567을 입력하면 아래처럼 위키페이지를 볼 수 있습니다.

gollum 위키의 페이지 생성 화면

gollum 위키의 HOME 페이지 화면

gollum [--port 포트번호] [--host 접근할URL] [폴더명] 같이 입력해서 포트번호나 호스트를 지정할 수 있습니다. [폴더명]은 위키로 사용할 폴더의 위치이고 지정하지 않을 경우 현재위치가 디폴트가 됩니다. 포트번호는 4567, 호스트는 localhost가 디폴트값입니다. webrick으로 구동되는데 webrick의 성능문제는 많이 듣기는 했지만 localhost로 돌릴 경우는 크게 문제는 없어보이는데 호스트를 설정해서 외부에서 접속하려고 하면 쓸수 없을 정도로 느리더군요.(webrick때문인지는 잘 모르겠지만 페이지당 25초씩이나 찍혀버리는 황당한 속도가 ㅡㅡ;;) 파일을 직접 수정했을때는 커밋을 해주어야 하지만 gollum위키상에서 수정했을 경우에는 자동으로 커밋을 해주기 때문에 별도로 커밋을 해주지 않아도 됩니다.

디자인이 Github스러운게 참 맘에 들었습니다.아직 많이 써보지는 않았지만 푸터등 페이지를 꾸미는 것도 가능하고 API도 사용할 수 있어서 다른 프로그램을 개발해서 gollum와 연결하는 것도 가능한 것 같습니다. git저장소의 계정을 기반으로 돌아가기 때문에 퍼블릭으로 위키를 띄워놓으면 아무나 수정할 수 있게 됩니다. 추가로 이부분에 대한 수정이 가능한지는 아직 확인되지 않았지만 현재로써는 개인용으로 쓸 수 있는 위키라는 의미입니다. 위키에 채울 내용이 엄청 많은 것은 아니지만 당분간은 gollum을 주로 써보려고 하고 있습니다.


덧) 1.1.1에서는 웹에서 변경할 때 global config는 적용되지 않는것 같습니다. 로컬 저장소에 user.name과 user.email에 대한 config를 추가해 주어야 Anonymous로 나오지 않는것 같습니다.
2011/01/17 23:59 2011/01/17 23:59