아파치고 뭐고 별로 건들고 싶지 않다 ㅡ,.ㅡ
http://forcecore.tistory.com/928
필자의 트랙 설정한 것을 보면 알겠지만 -_-; standalone을 무지 좋아하고 그냥 최대한 간단히 가는걸 좋아한다. 물론 큰 시스템/프로젝트면 이렇게 하면 곤란하다.
필자가 원하는 사양은 이렇다.
1. 웹으로 접속해서 보고 commit할 수 있어야 한다. ssh프로토콜로 pull/push하지 않을 것임.
2. 아무나 여기 접근하지 못해야 한다. 인증해야 내용을 볼 수 있다.
3. 인증된 사용자는 push도 가능해야 한다.
4. 되도록 아파치를 안 거치고, 그냥 hg serve 로 어떻게든 해본다. (optional)
1, 2, 3을 이루기 위해 hg serve가 불충분하면 아파치를 쓰긴 해야 함...
...??!!
authentication 부분이 없다?
컨닝 교재와 방식을 바꾸자.
http://www.selenic.com/mercurial/wiki/index.cgi/HgWebDirStepByStep#head-f023b01c83cbf2b92bab261b782a988325fd5f38
apache - CGI 방식을 택하겠다.
... CGI를 켜야 한다 ㅡ,.ㅡ
아파치는 이미 설치되어 있다고 치자.
이미 CGI는 켜있다. 다만, 어디 설정이 있는지 약간 헤맬 수 있다.
/usr/lib/cgi-bin이 cgi파일을 놓아야 할 곳이군...
hgwebdir.cgi를 찾아보니
/usr/share/doc/mercurial/examples/hgwebdir.cgi 에 있다.
이를 /usr/lib/cgi-bin 에 복사. chmod +x 도 해줘야만 된다.
아파치 설정을 조금 건드려줘야 한다. 필자의 경우...
/etc/apache2/sites-enabled/000-default 에다가
성공한다면,
http://myserver/hg/ 여기가 접속 가능해야 한다.
이제 hgwebdir.cgi 를 적당히 설정을 해줘야 한다.
이 파일의 제일 아래 부분에 보면...
이런 부분이 있는데... hgweb.config 이게 설정파일의 위치이다. 절대 경로로 지정해줘도 됨.
hgweb.config나... 어쨌거나 지정해준 설정파일의 내용은 대충 아래와 같이 하면 된다.
이제 보안 부분.
아까 설정 부분에서...
디렉토리 부분을 잘 설정해주면 된다.
이런식으로 하면 된다.
/export/trac/passwd 파일은, tracd 설정 나름인데, 트랙과 공유 가능하다.
단... --basic-auth 옵션으로 tracd를 돌려야지 된다.
아닌가... basic auth를 쓰지 않으려면, htdigest 명령어로 파일을 관리하면 됨...
Realm이 들어가서 약간 더 복잡해지긴 할 것이다.
http://forcecore.tistory.com/928
필자의 트랙 설정한 것을 보면 알겠지만 -_-; standalone을 무지 좋아하고 그냥 최대한 간단히 가는걸 좋아한다. 물론 큰 시스템/프로젝트면 이렇게 하면 곤란하다.
필자가 원하는 사양은 이렇다.
1. 웹으로 접속해서 보고 commit할 수 있어야 한다. ssh프로토콜로 pull/push하지 않을 것임.
2. 아무나 여기 접근하지 못해야 한다. 인증해야 내용을 볼 수 있다.
3. 인증된 사용자는 push도 가능해야 한다.
4. 되도록 아파치를 안 거치고, 그냥 hg serve 로 어떻게든 해본다. (optional)
1, 2, 3을 이루기 위해 hg serve가 불충분하면 아파치를 쓰긴 해야 함...
...??!!
authentication 부분이 없다?
컨닝 교재와 방식을 바꾸자.
http://www.selenic.com/mercurial/wiki/index.cgi/HgWebDirStepByStep#head-f023b01c83cbf2b92bab261b782a988325fd5f38
apache - CGI 방식을 택하겠다.
... CGI를 켜야 한다 ㅡ,.ㅡ
아파치는 이미 설치되어 있다고 치자.
이미 CGI는 켜있다. 다만, 어디 설정이 있는지 약간 헤맬 수 있다.
/etc/apache2/sites-enabled여기 이 파일에 있다.
/usr/lib/cgi-bin이 cgi파일을 놓아야 할 곳이군...
hgwebdir.cgi를 찾아보니
/usr/share/doc/mercurial/examples/hgwebdir.cgi 에 있다.
이를 /usr/lib/cgi-bin 에 복사. chmod +x 도 해줘야만 된다.
아파치 설정을 조금 건드려줘야 한다. 필자의 경우...
/etc/apache2/sites-enabled/000-default 에다가
ScriptAliasMatch ^/hg(.*) /usr/lib/cgi-bin/hgwebdir.cgi$1이 한 줄을 넣었다. (사실 필자는, 000-default말고, 다른 파일을 만들어서 다른 port를 listen하도록 설정하여 virtual host를 사용하고 있다 ㅡ,.ㅡ)
... 생략 ...필자의 설정은 이런 식이다.
# hg stuff
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
# ScriptAlias /hg/ /usr/lib/cgi-bin/ 이거 넣으면 엉터리로 동작하게 됨.
ScriptAliasMatch ^/hg(.*) /usr/lib/cgi-bin/hgwebdir.cgi$1
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
...생략...
성공한다면,
http://myserver/hg/ 여기가 접속 가능해야 한다.
이제 hgwebdir.cgi 를 적당히 설정을 해줘야 한다.
이 파일의 제일 아래 부분에 보면...
# Alternatively you can pass a list of ('virtual/path', '/real/path') tuples
# or use a dictionary with entries like 'virtual/path': '/real/path'
application = hgwebdir('hgweb.config')
wsgicgi.launch(application)
이런 부분이 있는데... hgweb.config 이게 설정파일의 위치이다. 절대 경로로 지정해줘도 됨.
hgweb.config나... 어쨌거나 지정해준 설정파일의 내용은 대충 아래와 같이 하면 된다.
[paths]
pljec = /export/hg/pljec
[web]
; style = gitweb
contact = fcore
description = pljec
allow_push = *
push_ssl = false
allow_archive = gz zip bz2
이제 보안 부분.
아까 설정 부분에서...
디렉토리 부분을 잘 설정해주면 된다.
# hg stuff
ScriptAliasMatch ^/hg(.*) /usr/lib/cgi-bin/hgwebdir.cgi$1
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
AuthType Basic
AuthUserFile /export/trac/passwd
AuthName "login please"
require valid-user
</Directory>
이런식으로 하면 된다.
/export/trac/passwd 파일은, tracd 설정 나름인데, 트랙과 공유 가능하다.
단... --basic-auth 옵션으로 tracd를 돌려야지 된다.
아닌가... basic auth를 쓰지 않으려면, htdigest 명령어로 파일을 관리하면 됨...
Realm이 들어가서 약간 더 복잡해지긴 할 것이다.