# cd /usr/ports/www/apache22 # make WITH_BERKELEYDB=db42 WITH_MPM=worker install서브버전은 벡엔드로 Berkeley DB를 사용하는데, 이를 지원하도록 Apache를 컴파일 합니다. 시행착오를 거치면서, 저는 다음과 같은 사실을 알게 되었습니다. 즉, 특정 시간 경과 후 "prefork MPM"은 httpd의 동작이 둔감해지다가 결국 멈춰버린다는 사실이죠. "worker MPM"에서는 이러한 문제가 개선된 것으로 보입니다. 다음 단계는 Subversion 인스톨입니다.
# cd /usr/ports/devel/subversion # make WITH_PYTHON=yes WITH_MOD_DAV_SVN=yes WITH_APACHE2_APR=yes installmake의 첫 옵션은 python을 Trac에 바인딩하도록 하는 것이고, 뒤의 두 옵션들은 DAV 모듈을 컴파일하고, Apache의 ARP를 사용하도록 하는 것입니다. 제각각 동작하지 않고 말이죠.
# cd /usr/ports/www/mod_python3 # make all install clean부가적인 WITH_* 타켓들은 필요 없습니다. 그냥 컴파일되고 인스톨되도록 놔두시면 됩니다.
# cd /usr/ports/databases/postgresql82-server/ # make install /* 옵션 메뉴에서 libc_r 옵션을 선택하세요 */혹은
# cd /usr/ports/databases/postgresql82-client # make install /* 옵션 메뉴에서 libc_r 옵션을 선택하세요 */libc_r은 plpython이 사용합니다. Trac을 사용할 것이기 때문에 이렇게 하는 것이 바람직하죠.
# cd /usr/ports/www/trac # make install /* 옵션 메뉴에서 PGSQL support를 선택하세요 */소프트웨어 인스톨은 끝났습니다. 이제 설정을 해야 합니다.
LoadModule dav_module libexec/apache22/mod_dav.so(위에서 인스톨한 방법으로 2개의 개별적인 엔트리가 만들어집니다. 따라서 하나를 지우셔야 합니다.)
LoadModule python_module libexec/apache22/mod_python.so이제 시스템이 부팅될 때, Apache가 시작되도록 세팅해야 합니다. /etc/rc.conf에 다음을 추가하세요.
apache22_enable="YES"postgreSQL 서버를 인스톨한 상태라면, 이것도 시작하게 합시다. /etc/rc.conf에 다음을 추가하세요.
postgresql_enable="YES"다음의 두 명령을 실행시킵니다. postgerSQL 데이터베이스를 초기화하고 시작하게 하는 명령들입니다.
# sh /usr/local/etc/rc.d/postgresql initdb # sh /usr/local/etc/rc.d/postgresql start상세설정
# svanadmin create /home/svn/projectname # trac-admin /home/trac/projectname initenvsvnadmin 명령은 Subversion 저장소를 초기화하고, 새로운 프로젝트의 코드를 저장할 수 있게 준비하도록 합니다. trac-admin은 Trac 환경을 초기화하고 웹브라우저를 통한 접근을 허용해 줍니다. 이 과정 이전에 PostgreSQL 데이터베이스를 먼저 생성해야 합니다. 위에서 생성한 두 서브디렉토리의 usr:group 권한이 잘못되어 있습니다. 다음 명령을 통해 바로잡도록 합시다.
# chown -R www:www /home/svn/projectname # chown -R www:www /home/trac/projectname이렇게 하면 Apache 프로세스가 위 디렉토리들을 변경할 수 있습니다.
# cd /usr/ports/www/trac-webadmin # make all install cleanplugin을 사용하기 위해 사용자 자신의 trac_admin 권한도 설정해야 합니다. 다음의 명령을 실행하고 나서, 로그아웃 한 후 다시 로그인 해보면, Track 네비게이션 메뉴에 "Admin" 탭이 생긴 것을 확인할 수 있습니다.
# trac-admin /home/trac/projectname permission add yourusername TRAC-ADMIN다음 단계는 일반적인 인스톨 시나리오를 조작하기 위해 Apache와 Trac을 셋업하는 것입니다. 이 설정은 오픈 소스 프로젝트에 알맞습니다. 다시 말해서, 누구든지 저장소에 접근하여 checkout 하고, Trac에 장애 보고서를 생성하는 것은 가능하지만, SVN의 쓰기 기능과 Trac의 로깅 기능은 SSL 상에서 수행되는 프로젝트에 적당합니다.
/usr/local/etc/apache22/extra/httpd-ssl.conf에서:ServerName svn.projectname.org ServerAlias projectname.org ServerAdmin webmaster@projectname.org ErrorLog /var/log/apache/projectname.org/svn/httpd-error.log TransferLog /var/log/apache/projectname.org/svn/httpd-access.log SetHandler mod_python PythonInterpreter main_interpreter PythonHandler trac.web.modpython_frontend PythonOption TracEnv /home/trac/projectname PythonOption TracUriRoot / Redirect permanent /login https://svn.projectname.org/projectname/login/ DAV svn SVNPath /home/svn/projectname AuthzSVNAccessFile /home/svn/ro_access
위 코드를 Apache SSL 설정 파일의 적절한 위치에 추가하시면 됩니다. 127.0.0.4는 IRC를 통한 공지가 가능하도록 나중에 수정할 부분이니까, 잘 보아두세요.SetHandler mod_python PythonInterpreter main_interpreter PythonHandler trac.web.modpython_frontend PythonOption TracEnvParentDir /home/trac PythonOption TracUriRoot / AuthType Digest AuthName "svn" AuthDigestDomain / AuthDigestProvider file AuthUserFile /home/svn/htdigest Require valid-user order allow,deny allow from 127.0.0.4 Satisfy any DAV svn SVNParentPath /home/svn AuthzSVNAccessFile /home/svn/access AuthType Digest AuthName "svn" AuthDigestDomain / AuthDigestProvider file AuthUserFile /home/svn/htdigest Require valid-user
htdigest /home/svn/htdigest svn yourusername/home/svn/access에서:
[/] yourusername = rwrw는 yourusername라는 사용자가 저장소의 모든 것을 읽고 쓸 수 있도록 허용합니다.
[/] * = r*는 모든 사용자를 의미하며, 이들 모두를 read-only 모드로 설정하는 것입니다.
IRC 공지에 사용될 127.0.0.4에 다시 한번 주목합시다. 이제 Trac과 SVN은 오직 인증된 사용자들만 사용할 수 있습니다.SetHandler mod_python PythonInterpreter main_interpreter PythonHandler trac.web.modpython_frontend PythonOption TracEnvParentDir /home/trac PythonOption TracUriRoot / AuthType Digest AuthName "prometheus" AuthDigestDomain / AuthDigestProvider file AuthUserFile /home/svn/htdigest Require valid-user order allow,deny allow from 127.0.0.4 Satisfy any
# cd /usr/ports/irc/py-supybot-plugins/ # make all install clean이렇게 하시면, Supybot과 RSS plugin을 포함해서 추가적인 plugin 팩이 컴파일 됩니다.
# supybot-wizard등장하는 질문들에 답을 하시다가, plugin에 대한 질문이 나오면 RSS plugin을 활성화하도록 하세요. 이 RSS plugin이 우리의 주요 관심 대상입니다. 하지만 앞서 언급한 바와 같이, Supybot은 기능 향상을 위한 많은 plugin들을 가지고 있습니다. 시간을 좀 들이셔서 관심이 가는 것을 한 번 찾아보세요. 이제 다 하셨습니다. 실행시켜 볼 차례입니다.
nohup supybot YourBotName.conf &잠시 후에 여러분의 IRC 채널에 공지 bot(announcement bot)이 나타날 것입니다. 동작하지 않으면 log를 확인하시고 문제를 고치세요. bot이 여러분의 채널에 나타나면, 조금 전 선택하신 사용자명과 암호를 통해 여러분이 누구인지 알려주어야 합니다.
/msg YourBotName identify YourUsername YourPassword이렇게 하시면 bot은 "The operation succeeded"나 비슷한 메시지로 응답할 것입니다.
config plugins.rss.announcementprefix "" config plugins.rss.waitperiod 60 config plugins.rss.announce.showlinks true rss add projectname http://svn.yourproject.org/projectname/timeline? ticket=on&ticket_details=on&milestone=on&changeset=on&wiki=on&max=5&daysback=1&format=rss rss announce #channel projectname각 라인들은 다음과 같은 기능을 합니다.
이전 글 : XForms Thick Clients
최신 콘텐츠