제목그대로 wsgi를 이용하여 머큐리얼을 설치하는 방법을 소개하겠다.
0. 우분투 8.10 서버, 인텔 x86, python2.6, apache2 환경에서 설치했다.
1. 일단 머큐리얼을 설치한다. apt-get이나 dselect로 mercurial패키지를 깔거나 tarball로 설치하면 된다.
2.머큐리얼로 원하는 위치에 리파지토리를 생성하고 프로젝트를 커밋한다.
[cc lang="bash"]$hg init my_project [/cc]
3. 쉘에서 다음과 같은 명령으로 hgwebdir.cgi파일을 찾아서
머큐리얼용 웹디렉토리로 사용할 위치에 복사해둔다.
나는 /home/hg/webdir폴더를 웹디렉토리로 사용한다.
아파치 세팅이 되어 있다면 그냥 cgi-bin에 넣어도 된다.
[cc lang="bash"]#find / -name hgwebdir.cgi
/usr/share/doc/mercurial/examples/hgwebdir.cgi
#cp /usr/share/doc/mercurial/examples/hgwebdir.cgi /home/hg/webdir/[/cc]
4. 머큐리얼 웹디렉토리에 hgweb.config파일을 다음과 같은 내용으로 만든다.
[cc lang="bash"]
[paths]
프로젝트명 = 프로젝트 디렉토리
[web]
base_url =[/cc]
5. 나는 해당 서버에서 trac과 블로그 등의 서비스를 함께 돌리고 있어서
각각의 서비스에 대한 가상 호스트를 생성하여 관리하고 싶다.
즉, 블로그는 blog.monolith.pe.kr 로 접속하고 트랙은 trac.monolith.pe.kr로 접속하는 식으로.
이럴 경우 다음과 같은 설정을 /etc/apache2/sites-available/default 에 추가해준다.
[cc lang="bash"]
ServerAdmin ldg55d@gmail.com
ServerName hg.monolith.pe.kr
ErrorLog /home/hg/error_log.hg
RewriteEngine On
RewriteRule (.*) /home/hg/webdir/hgwebdir.cgi/$1
Order allow,deny
Allow from all
AllowOverride All
Options ExecCGI
AddHandler cgi-script .cgi
[/cc]
6. 아파치를 다시 시작하고 http://hg.monolith.pe.kr에 접속하면 된다.
7. 작업할 단말에서 hg clone http://hg.monolith.pe.kr/프로젝트이름 하면 잘 클로닝된다.
8. python2.5에서는 이상이 없지만 2.6에서는 hgext관련해서 다양한 임포팅 오류가 일어난다.
이 경우 PYTHONPATH에 /usr/share/python-support/mercurial-common 를
다음과 같이 명시적으로 지정해서 모듈위치를 잡아준다.
[cc lang="bash"]export PYTHONPATH = $PATH:/usr/share/python-support/mercurial-common[/cc]
PS.
1. rewrite모듈이나 wsgi모듈이 깔려서 아파치에 올라와 있다는 전제로 설명했다.
2.rewrite모듈에서 /(.*) 이 아니라 (.*)로 해야 hg.monoilth.pe.kr/프로젝트명 으로 접근가능하다.