Trac 설치 및 실행
현재(2018년)에 Trac 을 설치해서 사용하는 사람이 있을지 모르겠지만, 개인적으로 뭔가를 할때 제일 좋은 툴은 것 같다. 그런데, Trac 설치는 가끔 하는거라 할때마다 헤메곤 하는데 기록해두기 위해서 이 글을 작성한다.
Python 2.7
Trac 은 현재 Python 2.7 에서 잘 작동한다. Python 2.7 이 설치되어 있어야 한다. 현 시점에서 CentOS 7, Ubuntu 16.04 LTS 에서 기본으로 Python 2.7 이 설치되어 있어 별도로 Python 2.7 을 설치할 필요는 없다.
pip, setuptools 설치
Trac 뿐만 아니라 Python 의 라이브러리를 설치하기 위해서 pip 를 이용한다. 역시나 이것도 프로그램이라서 pip 를 설치해줘야 한다.
설치하는 방법은 다음과 같이 두가지가 있다.
- 배포판 패키지로 설치
- setuptools 을 이용한 설치.
CentOS 7 과 Ubuntu 16.04 LTS 에서는 pip 패키지를 제공 한다. 별도로 setuptools 을 이용한 설치를 할 필요가 없다.
설치를 마쳤으면 최신버전으로 다음과 같이 업데이트를 해준다.
1 |
]# pip install --upgrade pip |
그리고 setuptools 은 많은 Python 라이브러리들을 설치할때 이용된다. 이것도 CentOS 7, Ubuntu 16.04 LTS 에서 패키지로 제공 한다. 설치해 주자.
Trac 1.0.15 설치
현재 2018년 1월에 Trac 최신 버전은 1.3 이다. 하지만 Trac 에 설치되는 플러그인들이 아직 1.2 이상을 잘 지원하지 못한다. 그래서 1.0.1 버전을 설치하기로 했다.
1 2 3 4 5 6 7 |
]# pip install py31compat ]# pip install Trac==1.0.15 ]# pip install TracTocMacro ]# pip install TracAccountManager ]# pip install Pygments ]# pip install Genshi ]# pip install Babel |
이렇게 함으로써 Trac 의 설치는 끝난다.
Trac 프로젝트 생성
Trac 은 알겠지만 Project Management 프로그램이다. 그래서 프로젝트를 만들어 줘야 한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
]# trac-admin /home/Trac/LocalProject initenv /home/Trac/LocalProject에 새로운 Trac 저장소 생성 Trac은 프로젝트 데이터베이스를 초기화하고 준비하기 위해서 당신의 환경에 대해서 몇 가지 질문을 할 것입니다. 프로젝트 이름을 입력해 주십시오. 이 이름은 페이지의 제목과 설명에서 사용될 것 입니다. 프로젝트 이름 [My Project]> LocalProject 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 existing MySQL or PostgreSQL database (check the Trac documentation for the exact connection string syntax). 데이터베이스 연결 문자열 [sqlite:db/trac.db]> [그냥 Enter] |
위와같이 프로젝트를 생성해 준다.
프로젝트가 생성이 되었다면 이제 프로젝트를 관리할 ID 에 권한을 부여해줘야 한다. 보통 ID 는 admin 으로 하고 다음과 같이 프로젝트 Administrator 퍼미션(Permision)을 부여해준다.
1 |
]# trac-admin /home/Trac/LocalProject permission add admin TRAC_ADMIN |
admin 이라는 ID 를 추가하면서 퍼미션을 TRAC_ADMIN 으로 부여 했다.
로그인 인증 설정
admin 이라는 ID 로 로그인 인증을 위해서는 인증을 위한 방법을 먼저 정의해야 한다. 인증 방법에는 다음과 같이 두가지 방법이 있다.
- Basic Auth by HTTP
- Htdigest
나의 경우에는 Htdigest 방법을 사용한다. 이를 위해서 AccountManager 플러그인을 설치했다. 그리고 Htdigest 인증 파일을 작성해줘야 한다. 이를 위해서 다음과 같이 Htdigest 인증 파일을 만들어주는 trac-digest.py 파일을 이용한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
from optparse import OptionParser # The md5 module is deprecated in Python 2.5 try: from hashlib import md5 except ImportError: from md5 import md5 realm = 'trac' # build the options usage = "usage: %prog [options]" parser = OptionParser(usage=usage) parser.add_option("-u", "--username",action="store", dest="username", type = "string", help="the username for whom to generate a password") parser.add_option("-p", "--password",action="store", dest="password", type = "string", help="the password to use") parser.add_option("-r", "--realm",action="store", dest="realm", type = "string", help="the realm in which to create the digest") (options, args) = parser.parse_args() # check options if (options.username is None) or (options.password is None): parser.error("You must supply both the username and password") if (options.realm is not None): realm = options.realm # Generate the string to enter into the htdigest file kd = lambda x: md5(':'.join(x)).hexdigest() print ':'.join((options.username, realm, kd([options.username, realm, options.password]))) |
위 소스를 trac-digest.py 로 저장한다. 그리고 다음과 같이 실행해 준다.
1 |
]# python trac-digest.py -u admin -p 14321 -r LocalProject > /home/Trac/LocalProject/users.htdigest |
AccountManager 플러그인을 활성하고 이를 이용해서 이 인증 방법을 지정해준다. 다음과 같이 trac.ini 설정 파일을 편집해 준다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
[components] acct_mgr.admin.accountmanageradminpanel = enabled acct_mgr.api.accountmanager = enabled acct_mgr.htfile.htdigeststore = enabled acct_mgr.macros.accountmanagerwikimacros = enabled acct_mgr.notification.accountchangelistener = enabled acct_mgr.notification.accountchangenotificationadminpanel = enabled acct_mgr.pwhash.htdigesthashmethod = enabled acct_mgr.register.basiccheck = enabled acct_mgr.register.bottrapcheck = enabled acct_mgr.register.emailcheck = enabled acct_mgr.register.emailverificationmodule = enabled acct_mgr.register.regexpcheck = enabled acct_mgr.register.registrationmodule = enabled acct_mgr.register.usernamepermcheck = enabled acct_mgr.web_ui.accountmodule = enabled acct_mgr.web_ui.loginmodule = enabled acct_mgr.web_ui.resetpwstore = enabled trac.web.auth.loginmodule = disabled tracopt.versioncontrol.git.* = enabled tractoc.macro.tocmacro = enabled [account-manager] account_changes_notify_addresses = htdigest_file = /home/Trac/LocalProject/users.htdigest htdigest_realm = LocalProject password_store = HtDigestStore |
Trac 실행
Trac 실행은 먼저 다음과 같이 CLI 로 할 수 있다.
1 |
]# tracd --port 9000 /home/Trac/LocalProject |
CentOS 7, Ubuntu 16.04 LTS 는 Systemd 가 기본이다. 시스템 부팅 프로세스에 등록하기 위해서 systemd 스크립트를 다음과 같이 작성해 준다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
]# vim /etc/systemd/system/trac.service [Unit] Description=Trac Wiki daemon After=syslog.target network.target [Service] Type=forking RuntimeDirectory=tracd StandardOutput=syslog StandardError=syslog SyslogIdentifier=tracd PIDFile=/var/run/tracd/tracd.pid EnvironmentFile=/etc/default/tracd ExecStart=/usr/bin/tracd $DAEMON_ARGS ExecReload=/bin/kill -s SIGHUP $MAINPID User=trac Group=trac KillMode=process Restart=on-failure [Install] WantedBy=multi-user.target Alias=tracd.service |
/etc/default/tracd 파일에 다음과 같이 프로젝트 정보를 기술해 준다.
1 2 |
# trac option DAEMON_ARGS="--daemonize --port 8000 /home/Trac/LocalProject --pidfile=/var/run/tracd/tracd.pid" |
이제 다음과 같이 systemd 스크립트 활성화 하고 시작해준다.
1 2 |
]# systemctl enable tracd ]# systemctl start tracd |
이렇게 한 후 서버에 8000 포트로 접속해서 “LocalProject” 프로젝트 리스트가 나오면 정상이다.
그리고 로그인을 할때에 앞서 설정한 계정과 비밀번호로 로그인을 하면 된다.