'Trac'에 해당되는 글 2건

  1. 2007.12.14 Trac에 mail 연동
  2. 2007.12.04 Trac on ubuntu

Trac에 mail 연동

Linux 2007. 12. 14. 10:33
5명이 하는 작은 프로젝트니까 메일 연동 필요없겠지... 했는데 아무래도 있어야 될거 같다 -_- (전날 누가 뭘했고 어떤 티켓이 발급되었는지 알길이 없다!)

trac.ini를 적당히 수정하면 되는데, 메일서버 구축까지도 필요없다. 다만 보내는 사람은 smtp 서비스가 되는 메일 계정이 있어야 하는데, gmail이 가장 무난할듯 싶다.

[notification]
smtp_always_cc = 받을 사람의 메일 주소를 적고, 복수일 경우는 쉼표로 구분한다
smtp_default_domain = gmail.com
smtp_enabled = true
smtp_from = 보내는 사람의 메일 주소
smtp_password = 보내는 사람의 메일 주소 비밀번호
smtp_replyto = 보내진 메일에 대해 reply를 보냈을 때 받을 메일 주소
smtp_server = smtp.gmail.com
smtp_user = smtp server의 실 사용자
use_tls = ture

오.. 잘 된다. 그런데 trac+svn server의 ID와 보고자의 ID가 틀려서 좀 문제가 있다 -_-; 다음에 할땐 메일 서버를 구축해야겠다 -_-;
Posted by 강군님
TAG mail, Trac

댓글을 달아 주세요

Trac on ubuntu

Linux 2007. 12. 4. 15:08
일단 참고한 자료는 당연히 한글 자료인...

http://kldp.org/node/84957 ... 따라친거 말고는 한게 없지만 자료들이 여기저기 흩어져 있는 상황이라... 앞으로 계속 업데이트를 하면 좋을 것 같다. 기술 방식은 위에서 언급한 링크대로 하는 것이 좋을 듯 싶다.  원저자의 양해를 구하지는 않았지만... ;;

http://www.pyrasis.com/main/Subversion-HOWTO 에서도 svn에 관한 자료들을 참조하였다.

원글에서 필요하다고 생각되는 부분은 수정하였으며, 쉘 커맨드로 입력해야 할 부분은 이탤릭 채로, 사용자가 직접 입력하거나 해야할 부분은 볼드 처리를 하였다.

사용환경은 ubuntu 6.06 LTS dapper에서 edge로의 한단계 업데이트를 거쳤다.

1. 필요한 package 설치

$ sudo apt-get install subversion libapache2-svn

다른 곳에서는 apt-get install trac으로 trac package를 설치하라고 하는데, 나는 계속 찾을 수 없는 package라는 메세지만 나왔다. 결국 구글링으로 trac package를 다운로드 받아서 설치하였는데, (ubuntu trac package) 의존적인 package들인 python-support와 (그런데 이건 dapper->edge로 넘어갈 때에 되는 것 같다) python-clearsiver가 필요하다.  이것 역시 구글링으로 검색해서 설치하면 trac package가 설치가 된다.

$ sudo apt-get install libapache2-mod-python

2. 디렉토리 구조 설명

이 문서에서 사용할 디렉토리 구조를 설명한다.
이 문서의 끝까지 계속해서 사용될 것이므로 잘 기억해 주시길..

Subversion 저장소의 root
/var/lib/svn

Trac 환경의 root
/var/lib/trac

test1 이라는 이름의 프로젝트가 사용하는 디렉토리
Subversion저장소 : /var/lib/svn/test1
Trac 환경 : /var/lib/trac/test1

Cool_Project 라는 이름의 프로젝트가 사용하는 디렉토리
Subversion저장소 : /var/lib/svn/Cool_Project
Trac 환경 : /var/lib/trac/Cool_Project

<프로젝트이름> 라는 이름의 프로젝트가 사용하는 디렉토리
Subversion저장소 : /var/lib/svn/<프로젝트 이름>
Trac 환경 : /var/lib/trac/<프로젝트 이름>

이해가 가시죠??

3. root 디렉토리 생성
$ sudo mkdir /var/lib/svn
$ sudo chown -R www-data:www-data /var/lib/svn

$ sudo mkdir /var/lib/trac
$ sudo chown -R www-data:www-data /var/lib/trac

4. SSL암호화에 사용할 서버인증서 생성하기
불특정 다수를 대상으로 SSL서버를 구축할 경우
공인인증기관이 서명한 서버인증서를 구입하는 것이 좋다.
공인인증기관이 서명한 서버인증서 구입하는 방법은
http://httpd.apache.org/docs/2.0/ssl/ssl_faq.html
How do I create a real SSL Certificate? 부분을 참고하면 된다.

이 문서에서는 자기 스스로 서명한 서버인증서 기준으로 진행한다.
자기 스스로 서명한 서버인증서의 사용상 불편한 점은
처음 접속할 때 인증서의 사용을 허가하겠다고
'클릭을 1번 해줘야 한다'는 것이다.

자세한 내용은 다음과 같다.

OpenSSL 설치하기 (대부분의 경우 이미 설치되어 있음)
$ sudo apt-get install openssl

비밀키파일과 인증서 생성하기
$ sudo su -
# openssl req -new -x509 -nodes -out server.crt -keyout server.key
----------------------- 실행화면 시작 ------------------------------
Generating a 1024 bit RSA private key
.......................++++++
....++++++
writing new private key to 'server.key'
-----
...생략...
-----
Country Name (2 letter code) [GB]:KR
(국가코드를 입력한다.)
State or Province Name (full name) [Some-State]:
(주 혹은 도 이름을 입력한다.
글쓴이는 직할시에 거주하므로 엔터키를 눌러서 넘어갔다.)
Locality Name (eg, city) []:Pusan
(거주하는 도시이름을 입력한다. 서울에 거주한다면 Seoul을 입력하면 될 듯하다.)
Organization Name (eg, company) [Internet Widgits Pty Ltd]:MyCompany
(조직명(혹은 회사명)을 입력한다.)
Organizational Unit Name (eg, section) []:Development
(부서이름을 입력한다.)
Common Name (eg, YOUR name) []:www.hostname.com
(Common Name은 인증서 생성시 입력하는 정보 중에서 가장 중요한 항목이다.
Common Name을 직역하면 '공통이름'이 되며,
메세지에서는 예제로 실제 이름을 입력하라고 하지만,
그것은 개인 인증서 생성할 때나 해당되는 이야기이며,
지금처럼 서버 인증서를 생성할 때에는 '서버 완전한 도메인 이름'을 입력해야 한다.
이 항목을 잘못 입력하면 사용자는 인증서에 심각한 에러가 있다는 메세지를 받게 되고,
대개의 경우 에러메세지에 겁 먹고 인증서를 거부하게 되므로,
Subversion 및 Trac서비스를 제공할 수 없게 된다.
웹서버에 접속할 때 주소창에 http://www.hostname.com 이라고 입력한다면,
Common Name은 www.hostname.com 이 된다.)
Email Address []:xxx@daum.net
(전자우편주소를 입력한다. 글쓴이는 다음메일을 쓴다.)
----------------------- 실행화면 끝 ------------------------------

생성된 인증서 확인하기
# ls server*
server.key, server.crt 파일이 생성된 것을 알 수 있다.

server.key -> 비밀키(private key) 파일
server.crt -> 인증서(public key를 포함) 파일

인증서 파일을 적절한 위치로 복사
# cp server.key /etc/apache2/ssl/
# cp server.crt /etc/apache2/ssl/
# chmod 600 /etc/apache2/ssl/server.key
# rm ./server.key
# rm ./server.crt

5. Apache 웹서버 설정변경
SSL암호화를 지원하기 위해서 mod_ssl 모듈을 활성화 시킨다.
$ sudo ln -s /etc/apache2/mods-available/ssl.load /etc/apache2/mods-enabled/
$ sudo ln -s /etc/apache2/mods-available/ssl.conf /etc/apache2/mods-enabled/

Apache서버가 https의 기본포트인 443번을 듣도록 한다.
$ sudo vi /etc/apache2/ports.conf
-------- /etc/apache2/ports.conf 에 추가할 내용 시작 ---------
Listen 443
-------- /etc/apache2/ports.conf 에 추가할 내용 끝 ---------

https서비스를 제공하는 VirtualHost가 사용할 DocumentRoot를 생성한다.
생성한 후에 빈 디렉토리로 놔둬도 된다.
$ sudo mkdir /var/www-ssl

VirtualHost를 이용해서 https를 설정한다.
$ sudo vi /etc/apache2/sites-available/ssl

--------- /etc/apache2/sites-available/ssl 내용 시작 --------------
# 무슨 의미인지 명확하지 않다면,
# 이 문서에 텍스트 화일로 첨부한 ssl.txt를 보십시오.

NameVirtualHost *:443
<VirtualHost *:443>
  DocumentRoot /var/www-ssl

  SSLEngine On
  SSLProtocol -all +TLSv1 +SSLv3
  SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM
  SSLOptions +StrictRequire
  SSLVerifyClient none
  SSLCertificateFile    /etc/apache2/ssl/server.crt
  SSLCertificateKeyFile /etc/apache2/ssl/server.key

  <Location /svn>    # Subversion 설정
    DAV svn

    # any "/svn/foo" URL will map to a repository /var/lib/svn/foo
    SVNParentPath /var/lib/svn

    AuthType Basic
    AuthName "Subversion Repository"
    AuthUserFile /etc/dev_passwd
    Require valid-user
  </Location>

  <Location /projects> # Trac 설정
    SetHandler mod_python  
    PythonHandler trac.web.modpython_frontend  
    PythonOption TracEnvParentDir /var/lib/trac  
    PythonOption TracUriRoot /projects

    AuthType Basic
    AuthName "Trac, Issue Tracking and Documenting"
    AuthUserFile /etc/dev_passwd
    Require valid-user
  </Location>
</VirtualHost>
--------- /etc/apache2/sites-available/ssl 내용 끝   --------------

$ sudo ln -s /etc/apache2/sites-available/ssl /etc/apache2/sites-enabled/
$ sudo /etc/init.d/apache2 restart

apache2를 재시작할 때, FQDN관련 경고 메세지가 뜨는데, 이게 싫다면 /etc/hosts에 자신의 domain을 정확히 기재해줘야 한다. 별로 domain이 없다면 굳이 신경쓸 문제는 아닌 것으로 생각된다.

VirtualHost를 이용해서 http, https를 동시에 지원하며,
Subversion과 Trac의 모든 전송내용이 암호화되며,
하나의 사용자인증화일을 공유한다.

6. 사용자 생성
사용자를 생성하고, 암호를 저장하는 데 htpasswd라는 프로그램을 사용한다.

htpasswd에서 자주 사용하는 옵션은 다음과 같다.
-c : 파일 생성하기. 처음 실행할 때 1번만 주면 된다.
-m : MD5 암호화하기.

예를 들어서, user1, user2, user3 에 대해서
Subversion 및 Trac 공용 사용자 계정을 생성할려면 다음과 같이 한다.
$ sudo htpasswd -cm /etc/dev_passwd user1
$ sudo htpasswd -m /etc/dev_passwd user2
$ sudo htpasswd -m /etc/dev_passwd user3

암호를 물어올 때 2번 입력해 주면 된다.
New password: ***** (암호 입력)
Re-type new password: ***** (암호 다시 입력)
Adding password for user user1

7. Ubuntu서버에 저장소(repository) 생성

Subversion 저장소를 생성한다.
$ sudo svnadmin create /var/lib/svn/<프로젝트 이름>
$ sudo chmod -R g+w <프로젝트 이름>

Trac은 특정한 구조를 가진 Subversion저장소만 인식할 수 있다.
$ sudo svn mkdir file://localhost/var/lib/svn/<프로젝트 이름>/branches -m "initial structure1"
$ sudo svn mkdir file://localhost/var/lib/svn/<프로젝트 이름>/tags -m "initial structure2"
$ sudo svn mkdir file://localhost/var/lib/svn/<프로젝트 이름>/trunk -m "initial structure3"

Apache웹서버를 재시작 한다.
$ sudo /etc/init.d/apache2 restart

웹브라우저로 https://<서버주소>/svn/<프로젝트 이름> 에 접속해 본다.
웹브라우저에서 프로젝트 소스가 보여야 정상이다.
(서버주소에 localhost나 127.0.0.1을 입력하면 연결이 안 될 수도 있다.
ifconfig을 실행시키면 나오는 진짜 IP주소를 사용해야 한다.
응답이 없으면, iptable방화벽에서 443번 포트를 막고 있는 지 확인한다.
https://<서버주소>/svn 으로 접속하면 Forbidden에러가 난다.
URL 마지막에 반드시 <프로젝트 이름>을 붙여야 한다.
접속과정에서 인증서 관련해서 팝업창이 뜨면 영구히 허가한다.
인증서 생성과정에서 서버이름을 잘못 입력한 경우
에러메세지가 1번 더 뜨는 데, 무시하면 된다.)

8. Trac 환경 생성 및 초기화

Trac 환경 생성하기 전에 다음 2가지 명령을 실행한다.
$ sudo chown -R www-data:www-data /usr/share/trac
$ sudo chown -R www-data:www-data /var/lib/svn
$ sudo /etc/init.d/apache2 restart

Trac 환경 생성 한다.
$ sudo trac-admin /var/lib/trac/<프로젝트 이름> initenv
-------------------- 실행화면 시작 ----------------------------------
Creating a new Trac environment at /var/lib/trac/<프로젝트 이름>
(/var/lib/trac/<프로젝트 이름> 디렉토리에 새로운 Trac환경을 생성중임.)

Trac will first ask a few questions about your environment
in order to initalize and prepare the project database.
(Trac은 프로젝트 데이터베이스를 준비하고 초기화시키기 위해서,
당신의 환경에 대해서 몇 가지 질문을 할 것입니다.)

Please enter the name of your project.
This name will be used in page titles and descriptions.
(당신의 프로젝트의 이름을 입력하십시오.
이 이름은 페이지 제목과 비고에 사용될 것입니다.)

Project Name [My Project]> test
(프로젝트 이름. 아무 값도 입력하지 않고 엔터키를 누를 경우 기본값은 My 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).
(데이터베이스 연결문자열을 지정해 주십시오.
기본값으로 로컬에 SQLite 데이터베이스가 생성됩니다.
이미 존재하는 Postgresql 데이터베이스를 사용할 수도 있습니다.
(정확한 연결문자열 구성은 Trac문서를 참조하십시오.)
)

Database connection string [sqlite:db/trac.db]>
(데이터베이스 연결 문자열. 기본값은 'sqlite:db/trac.db' 임
데이터베이스 연결 문자열에 대해서 아는 바 없으므로 엔터키를 눌러서 기본값을 사용함.)

Please specify the absolute path to the project Subversion repository.
Repository must be local, and trac-admin requires read+write
permission to initialize the Trac database.
(프로젝트의 Subversion저장소가 위치한 절대경로를 지정해 주십시오.
그 저장소는 로컬에 위치해야 하고, trac-admin은 Trac 데이터베이스를 위해서
읽기, 쓰기 권한을 가지고 있어야 합니다.)

Path to repository [/var/svn/test]> /var/lib/svn/test
(저장소의 path. 기본값은 '/var/svn/test'
우리는 프로젝트 저장소를 /var/lib/svn/test에 생성해 두었으므로 그것을 입력한다.)

Please enter location of Trac page templates.
Default is the location of the site-wide templates installed with Trac.
(Trac 페이지 템플릿의 위치를 입력하십시오.
기본값은 Trac과 함께 설치된 템플릿의 위치입니다.)

Templates directory [/usr/share/trac/templates]>
(템플릿 디렉토리. 기본값은 '/usr/share/trac/templates'.
이에 대해 아는 바 없으므로 엔터키를 눌러서 기본값을 사용한다.

Creating and Initializing Project
Configuring Project
trac.repository_dir
trac.database
trac.templates_dir
project.name
Installing default wiki pages
/usr/share/trac/wiki-default/TracTicketsCustomFields => TracTicketsCustomFields
... 생략 ...
/usr/share/trac/wiki-default/WikiNewPage => WikiNewPage
Indexing repository

Project environment for 'test' created.
(test 프로젝트를 위한 환경이 생성되었습니다.)

You may now configure the environment by editing the file:
(당신은 다음 위치의 파일을 편집해서 환경설정을 바꿀 수 있습니다.)

/var/lib/trac/test/conf/trac.ini

... 생략 ...

Congratulations!
(축하합니다!)
-------------------- 실행화면 끝 ----------------------------------

Apache웹서버에게 읽기, 쓰기 권한을 준다.
$ sudo chown -R www-data:www-data /var/lib/trac

Apache 웹서버를 재시작해야 새로운 설정화일이 반영된다.
$ sudo /etc/init.d/apache2 restart

웹브라우저로 https://<서버주소>/projects 에 접속해 본다.
프로젝트 리스트가 보여야 정상이다.
개별 프로젝트로 들어가면 Trac이 설정해 놓은 페이지가 보인다.
(서버주소에 localhost나 127.0.0.1을 입력하면 연결이 안 될 수도 있다.
ifconfig을 실행시키면 나오는 진짜 IP주소를 사용해야 한다.
응답이 없으면, iptable방화벽에서 443번 포트를 막고 있는 지 확인한다.)

이로서 전송내용이 암호화되고 사용자인증을 거치는 Subversion, Trac의 설치를 마쳤다.
이제 사용법만 공부하면 된다. --;

9. Webadmin plugin 설치

Trac을 설치하고 나서 관리하기가 좀 귀찮은 경향이 있는데, Webadmin plugin을 설치하면 그나마 관리가 좀 쉬워진다(라고 한다. 아직 테스트 못해봤음 -_-;)

# wget http://peak.telecommunity.com/dist/ez_setup.py
# python ez_setup.py
# easy_install http://svn.edgewall.com/repos/trac/sandbox/webadmin
# easy_install http://trac-hacks.org/svn/accountmanagerplugin/0.10
# trac-admin /var/lib/trac/test permission add user1 TRAC_ADMIN

# vi /var/lib/trac/test/conf/trac.ini

   [components]
   webadmin.* = enabled (맨 아래에 이렇게 2줄을 추가하면 된다)

Trac에서의 모든 plugin은 이런 절차로 설치하고 설정한다고 생각하면 될 것이다.
Posted by 강군님

댓글을 달아 주세요