2010년 4월 7일 수요일

CentOS - Apache + SVN + Trac 연동

 

 

 

작성자 : 김용복 (ruo91@yongbok.net) - 2010/03/24 PM 1:45
원제목 : CentOS - Apache + SVN + Trac 연동
환 경 : CentOS 5.4 Final
설치순 : Apache - > Subversion -> mod_dav_svn -> Trac

svn 설치시 기본 저장소는 /var/www/svn 으로 하며 trac 은 /var/www/trac 로 사용합니다.

1. Apache 설치
아파치가 설치 되어 있는지 확인 합니다. (CentOS 5.4에서는 자동 설치 되어 있는듯..)
[root@ruo91 ~]# rpm -aq | grep httpd
system-config-httpd-1.3.3.3-1.el5
httpd-2.2.3-31.el5.centos

만약 설치가 안된 경우라면 설치를 진행 합니다.
[root@ruo91 ~]# yum install -y httpd
[root@ruo91 ~]# chkconfig httpd on

2. subversion (SVN) 설치
SVN 을 설치하게 되면 의존성 패키지인 neon 과 perl-URI 가 같이 설치 됩니다.
[root@ruo91 ~]# yum install -y subversion


subversion 스크립트 생성

[root@ruo91 ~]# touch /etc/init.d/subversion

[root@ruo91 ~]# chmod +x /etc/init.d/subversion

[root@ruo91 ~]# vi /etc/init.d/subversion

#!/bin/bash
. /etc/rc.d/init.d/functions

[ -x /usr/bin/svnserve ] || exit 1

RETVAL=0
prog="svnserve"
desc="Subversion server"
OPTIONS="--threads --root /var/www/svn"

start() {
        echo -n $"Starting $desc ($prog): "
   daemon $prog -d $OPTIONS
   RETVAL=$?
   [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
   echo
}

stop() {
   echo -n $"Shutting down $desc ($prog): "
   killproc $prog
   RETVAL=$?
   [ $RETVAL -eq 0 ] && success || failure
   echo
   [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
   return $RETVAL
}

case "$1" in
  start)
   start
   ;;
  stop)
   stop
   ;;
  restart)
   stop
   start
   RETVAL=$?
   ;;
  condrestart)
        [ -e /var/lock/subsys/$prog ] && restart
   RETVAL=$?
   ;;
  *)
   echo $"Usage: $0 {start|stop|restart|condrestart}"
   RETVAL=1
esac

exit $RETVAL
EOF


subversion 시작

[root@ruo91 ~]# /etc/init.d/subversion start


3. Apache + SVN 연동
아파치와 SVN을 연동하기 위해서 mod_dav_svn 을 설치 합니다.
[root@ruo91 ~]# yum install -y mod_dav_svn

설치가 완료 되면 httpd/modules 디렉토리에 두가지의 모듈이 있는걸 확인 할수 있습니다.
[root@ruo91 ~]# find /usr/lib/ | grep svn
/usr/lib/httpd/modules/mod_dav_svn.so
/usr/lib/httpd/modules/mod_authz_svn.so

또한 httpd.conf 에 위 두가지 모듈을 따로 추가 하지 않아도 이미 subversion.conf 에 있기 때문에 몇가지 설정 만 해주시면 됩니다.

svn 디렉토리와 SVN 사용자 계정을 생성하고 아파치 계정이 접근할수 있도록 변경 합니다.
[root@ruo91 ~]# mkdir -p /var/www/svn ; cd /var/www/svn
[root@ruo91 ~]# svnadmin create ruo91
[root@ruo91 ~]# chown -R apache.apache ruo91

SVN 사용자의 인증 패스워드 파일을 생성합니다.
[root@ruo91 ~]# htpasswd -cm [패스워드 파일] [사용자]
[root@ruo91 ~]# htpasswd -cm /var/www/svn/user-ruo91-passwd ruo91
New password:
Re-type new password:
Adding password for user ruo91

옵션 설명
-c : 새로운 파일 생성
-m : MD5 로 암호화
다른 새로운 사용자 추가 할때는 아래와 같이 -c 옵션을 빼고 추가 해주면 됩니다.
[root@ruo91 ~]# htpasswd -m /var/www/svn/user-ruo911-passwd ruo911

인증할 사용자를 설정 해주기 위해 authz 파일을 설정 합니다.
[root@ruo91 ~]# cp /var/www/svn/ruo91/conf/authz /var/www/svn/authz
[root@ruo91 ~]# vi /var/www/svn/authz
[groups]
authz = ruo91,ruo911,test,test2
@authz = rw

subversion 설정을 합니다.
[root@ruo91 ~]# vi /etc/httpd/conf.d/subversion.conf
LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

<Location /repos>
   DAV svn
   SVNParentPath /var/www/svn
   AuthType Basic
   AuthName "Authorization!!"
   AuthzSVNAccessFile /var/www/svn/authz
   AuthUserFile /var/www/svn/user-ruo91-passwd
   Require valid-user
</Location>

4. Trac 설치
RPMforge 에서 다운받고 설치 합니다.
[root@ruo91 ~]# wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.1-1.el5.rf.i386.rpm
[root@ruo91 ~]# rpm -Uvh rpmforge-release-0.5.1-1.el5.rf.i386.rpm
[root@ruo91 ~]# yum install -y mod_python trac

trac 프로젝트를 설치 합니다.
[root@ruo91 ~]# trac-admin /var/www/trac/ initenv
Creating a new Trac environment at /var/www/trac

Trac will first ask a few questions about your environment
in order to initialize and prepare the project database.

 Please enter the name of your project.
 This name will be used in page titles and descriptions.

Project Name [My Project]> Yongbok Project

 Please specify the connection string for the database to use.
 By default, a local SQLite database is created in the environment
 directory. It is also possible to use an already existing
 PostgreSQL database (check the Trac documentation for the exact
 connection string syntax).

Database connection string [sqlite:db/trac.db]>

 Please specify the type of version control system,
 By default, it will be svn.

 If you don't want to use Trac with version control integration,
 choose the default here and don't specify a repository directory.
 in the next question.

Repository type [svn]>

 Please specify the absolute path to the version control
 repository, or leave it blank to use Trac without a repository.
 You can also set the repository location later.

Path to repository [/path/to/repos]> /var/www/svn

Creating and Initializing Project
 Installing default wiki pages
 PageTemplates imported from /usr/lib/python2.4/site-packages/trac/wiki/default-pages/PageTemplates
 TracGuide imported from /usr/lib/python2.4/site-packages/trac/wiki/default-pages/TracGuide
.....................
................................
........................................
---------------------------------------------------------------------
Warning: couldn't index the repository.

This can happen for a variety of reasons: wrong repository type,
no appropriate third party library for this repository type,
no actual repository at the specified repository path...

You can nevertheless start using your Trac environment, but
you'll need to check again your trac.ini file and the [trac]
repository_type and repository_path settings in order to enable
the Trac repository browser.
---------------------------------------------------------------------
Project environment for 'Yongbok Project' created.

You may now configure the environment by editing the file:

  /var/www/trac/conf/trac.ini

If you'd like to take this new project environment for a test drive,
try running the Trac standalone web server `tracd`:

  tracd --port 8000 /var/www/trac

Then point your browser to http://localhost:8000/trac.
There you can also browse the documentation for your installed
version of Trac, including information on further setup (such as
deploying Trac to a real web server).

The latest documentation can also always be found on the project
website:

  http://trac.edgewall.org/

Congratulations!

아파치가 사용할수 있도록 변경합니다.
[root@ruo91 ~]# chown apache:apache /var/www/trac/*
[root@ruo91 ~]# chmod -R 777 /var/www/trac

Trac 인증 패스워드 파일을 생성합니다.
[root@ruo91 ~]# htpasswd -cm /var/www/trac/user-ruo91-trac-passwd ruo91
New password:
Re-type new password:
Adding password for user ruo91

subversion 에 Trac 설정을 추가 해줍니다.
[root@ruo91 ~]# vi /etc/httpd/conf.d/subversion.conf
LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

<Location /repos>
   DAV svn
   SVNParentPath /var/www/svn
      AuthType Basic
      AuthName "Authorization!!"
      AuthzSVNAccessFile /var/www/svn/authz
      AuthUserFile /var/www/svn/user-ruo91-passwd
      Require valid-user
</Location>

<Location /trac>
     SetHandler mod_python
      PythonHandler trac.web.modpython_frontend
      PythonOption TracEnv /var/www/trac
      PythonOption TracUriRoot /trac
      AuthType Basic
      AuthName "Yongbok Trac Environment"
      AuthUserFile /var/www/trac/user-ruo91-trac-passwd
      Require valid-user
</Location>

연동 확인을 위해 아파치를 시작 합니다.
[root@ruo91 ~]# service httpd start

Trac 확인을 해봅니다.

 

참고
http://wiki.centos.org/HowTos/Subversion
http://www.brandonchecketts.com/archives/installing-svn-and-trac-on-a-centos-5-server





// trac 관리자 계정 등록

#trac-admin /var/www/trac permission add <username> TRAC_ADMIN

http
#service httpd start

svn
#/etc/init.d/subversion start






댓글 1개: