손이 많이 가네요;
삽질 끝에 성공하고 정리하는 거라서,
마지막에 안될 수도 있지만.. 그쪽은 각자 센스로 커버합시다.
설정 파일들 건드리기 전에 준비부터 다 해봅시다.
1. apt 관리자를 이용해 필요한 패키지 설치
subversion python libapache2-svn libapache2-mod-python python-setuptools python-genshi python-sqlite
2. openssl로 인증서 만들기
<SSL 인증서 넣어둘 경로에서> # openssl req -new -x509 -nodes -out server.crt -keyout server.key
3. python easy_install을 이용해 필요한 모듈 설치
easy_install babel
easy_install Pygments
easy_install docutils
easy_install epydoc
easy_install textile
4. trac 및 trac plugin 설치
# trac 설치
svn co http://svn.edgewall.org/repos/trac/branches/0.12-stable trac
cd trac
./setup.py compile_catalog --use-fuzzy
./setup.py install
# trac plugin
# http://trac-hacks.org/wiki/HackIndex
# 들어가서 필요한 플러그인 받아서 설치
# 우선 주요 플러그인만..
# AccountManagerPlugin, SvnAuthzAdminPlugin, TracIniAdminPanelPlugin, PermRedirectPlugin
이제 필요한건 대충 설치 한 것 같으니, 설정하러 가봅니다.
1. 우선 apache2부터 합니다.
# /etc/apache2/sites-enabled 디렉터리에서
cp ../sites-available/default-ssl ./ssl
# /etc/apache2/sites-enabled/ssl 파일을 열어서
SSLCertificateFile <2번의 SSL 인증서 넣어둘 경로에서>/server.crt
SSLCertificateKeyFile <2번의 SSL 인증서 넣어둘 경로에서>/server.key
2. https를 위한 apache2 configuration
# /etc/apache2/sites-enabled/ssl 파일을 열어서 VirtualHost 를 *:443 으로 바꿔주고,
# 기본 root url로 접속할 디렉터리를 각자 맞게 지정해줍니다.
# (내비둬도 되고요. 바꾸시면 default http 도 바꿔주시는게 좋을 듯?)
# 그리고 전 제가 관리하는 디렉터리에서 직접 trac/svn 경로 설정 파일을 두려고 .vhost 라는 파일을 만들었어요.
# sites-enabled/ssl 파일에는 제일 밑에 아래처럼 해두었어요
include <VIRTUAL_HOST_PATH>/.vhost
# 이렇다 보니, apache2도 제 계정으로 동작하는게 편해서 데몬 계정을 제 계정으로 바꿨어요
# /etc/apache2/envvars에서 이렇게.
export APACHE_RUN_USER=<USERNAME>
export APACHE_RUN_GROUP=<GROUPNAME>
# ssl 설정이 끝났다면, apache2에 ssl 모듈을 enable 시켜줍니다.
sudo a2enmod ssl
# 참고로 작업이 끝난 후의 .vhost 파일 내용은 이래요.
<Location /trac>
SetHandler mod_python
SetEnv PYTHON_EGG_CACHE /home/repository/trac/.cache
PythonHandler trac.web.modpython_frontend
PythonOption TracEnvParentDir /home/repository/trac
PythonOption TracUriRoot /trac
</Location>
<Location /svn>
DAV svn
SVNParentPath /home/repository/svn
AuthType Basic
AuthName "cheroxy"
AuthUserFile /home/repository/.passwd
AuthzSVNAccessFile /home/repository/svn/authz
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>
# <LimitExcept>는 권한이 필요 할 때만 인증하도록 해줍니다
# 계정 관리는 아래에서 따로 합니다.
# 만약 설치 후 첫 접속에서, 관리자 권한으로 trac에 접속하지 못하면,
# trac에서 http-basic-authentication 으로 접속하고 설정 후에 복구하시면 될거 같네요
이제 svn과 trac 설정을 해보죠
1. svn repository 및 trac 초기 설정
# 전 /home/repository 에 svn 디렉터리와 trac 디렉터리를 만들어 두고, 각각을 따로 작업했습니다.
# trac은 밑에 .cache 라는 캐시 디렉터리도 만들어줬고요.
# 설명을 위한 프로젝트 명은 cheroxy 예요 :)# subversion
# svn 명령어 뒤 쪽에 -m 옵션은 changeset 메시지니까 바꾸셔도 됩니다.
svnadmin create /home/repository/svn/cheroxy
svn mkdir file://localhost/home/repository/svn/cheroxy/branches -m "initial structure1"
svn mkdir file://localhost/home/repository/svn/cheroxy/tags -m "initial structure2"
svn mkdir file://localhost/home/repository/svn/cheroxy/trunk -m "initial structure3"
# trac 생성 및 관리자 권한 주기
trac-admin /home/repository/trac/cheroxy initenv
trac-admin /home/repository/trac/cheroxy permission add <USERNAME> TRAC_ADMIN
# 계정 파일 생성 해 줘야해요. 전 .passwd라는 파일로 만들었습니다
htpasswd -c .passwd <USERNAME>
# authz 파일도 만들어요
# 대문자로 된 것들이 직접 써주면 됩니다
# 그룹 지정도 가능하고 프로젝트 하위의 특정 경로에 권한을 주는 것도 가능해요
# 아래 예제는 프로젝트에 GROUP1은 읽기/쓰기, USER3은 읽기만, 그 이외에는 아무 권한도 없도록 설정한 것이에요
[groups]
GROUP1=USER1,USER2
[/]
*=
USER1=r
[PROJECT:/]
*=
@GROUP1=rw
USER3=r
...
2. trac 설정. <trac-project>/conf/trac.ini
# svn 경로 입력
# 보통 설치하면 다 연동되는 거 처럼 기재된 내용들이 많았는데, 전 안되서 한참 고민하다가 해결했네요.
# apache2 restart 하고 접속 했더니, 소스보기도 되고 잘되는거 같다 ! 하시면 안해도 될 듯.
# 이건 있는 내용이니 repository_dir 만 수정하시면 됩니다.
[trac]
...
authz_file = /home/repository/svn/authz
authz_module_name = cheroxy
...
repository_dir = /home/repository/svn/cheroxy
# tab-width 조정
# 있는거에서
[mimeviewer]
...
tab_width = 4
# trac 로그인 페이지 사용하기
# 없으면 추가하시면 되요.
[components]
trac.web.auth.loginmodule = disabled
# PermRedirectPlugin
# 없으면 추가하시면되요.
# 참고로 자동으로 설정되면 기본으론 이렇게 나옵니다.
# permredirect.filter.permredirectmodule = enabled
[components]
permredirect.* = enabled
# account-manager plugin
# 없으면 추가하시면 되요.
# password_store 설정 안했더니, trac에서 계정 조회 할 때 이런 오류가 나더라구요.
# This password store does not support listing users.
[account-manager]
...
password_file = /home/repository/.passwd
password_store = HtPasswdStore
Trouble-Shoot
# Unsupported version control system "svn"
# 이 처럼 나오는 경우, trac admin page 에서 SubversionConnector 를 enable 시키거나,
# trac.ini 에서 다음과 같이 입력합니다.
tracopt.versioncontrol.svn.svn_fs.subversionconnector = enabled
# 이랬는데 No module named 라는 오류가 뜬다면, 다음 패키지를 설치하세요
python-subversion
# python 에서 import svn 해보시고 오류 메시지가 안나타나면 되는 것 같네요.
# Invalid command 'AuthzSVNAccessFile', perhaps misspelled or defined by a module not included in the server configuration
# 이렇게 나오면,
/etc/apache2/mods-available/authz_svn.load
# 이 아이를
/etc/apache2/mods-enabled/authz_svn.load
# 로 symbolic-link 해줍니다
기억을 더듬고 자료를 검색해 가면서 정리하면 이정도 인 것 같네요.
https://<domain>/trac
접속 해서 로그인하고 설정은 각자 알아서 해봅시다.
위 과정이 다 되면 이렇게 됩니다.
'Dev./Sec. Study > 참고자료' 카테고리의 다른 글
[SQLite3] improve performance for transaction (0) | 2012.06.13 |
---|---|
links for programming (0) | 2012.01.10 |
mysql에서 동일한 환경 및 encoding을 사용한 db 이전 시 한글 깨질 때 (0) | 2009.12.30 |
IPv6 정보 (0) | 2009.06.28 |
[펌] Visual C++ 6.0 에서 "열기" 시에 오류 (5) | 2009.04.07 |