от Владимир Витков(10-03-2008)
рейтинг (32)
[ добре ]
[ зле ]
Вариант за отпечатване Disclaimer: Описаните техники в този документ могат да ви помогнат но не е задължително да са напълно вярни и изчерпателни. Не поемам отговорност за каквито и да било реални или нереални, вреди, ползи, пропуски, паднали къщи или каквото и да е произтичащи от ползването или неползването на този документ.
История
- 25.01.2007 - Първа версия
Тук ще се постарая да опиша по какъв начин съм настроил система състояща се от Trac и SVN която използвам за управление на проекти.
Оригиналът
На бълагарски
In English
Идеята
Тъй като се занимавам с много и най-вече различни проекти, стана ясно че имам мужда от система за управление на проекти. И докато това ми се търкаляше в главата реших че ще е добре ако може да се използва за множество проекти с множество хора. Почна се търсенето, като минах през dotProject, TikiWiki, Mantis и някои други. Но просто някак си не ми допадаха. В крайна сметка се спрях на Trac и SVN.
Мотивацията
Избрах комбинацията Trac + SVN по следните причини
- Свикнал съм със SVN пък макар и от конзола
- Trac се разработва относително активно
- Вече имах инсталиран Python заради част от системата ми
- В самия Trac има вградено wiki което ще се ползва за описанието на проектите и документацията
- Има билетчета за проблеми
- Куп други дреболии
След всичко казано Trac се оказа едно добро решение.
Желязото
Машината на която работи всичко това е следната
Debian Unstable
600 Mhz CPU
256 MB Ram
20G HDD
Върху нея работят доста услуги: mysql, apache, exim, routing/shaping/nat, dns, dhcp, ntp, ftp, shell, samba (в режим на Master Browser) и други.
Като цяло доста слабичка машинка по днешни стандарти, но полезна и гледана с любоФ
Необходим Софтуер
За да може системата да работи като хората ни трябва следният софтуер
- Trac
- subversion
- libneon
- Python
- pysqlite
- python-subversion-bindings
- mod_python
- clearsilver
- xinetd
- други дреболии
Като цяло най-лесно е ако си имате дебиан. Ако е такъв случая процедурата е пределно проста
apt-get install trac libapache2-mod-python xinetd
И започва веселбата :)
Допълнително към Python сме инсталирали python-setuptools, tracwebadmin, tracaccountmanager.
Разположение на файловете
Тъй като ще има няколко проекта, ще отделим специално място за цялата система. Препоръчително е да е на отделен дял.
При мен се спрях на директорията /home/projects която има следната структура
/home/projects/
/home/projects/trac
/home/projects/trac/project1
/home/projects/trac/project2
... ... ...
/home/projects/svn
/home/projects/svn/project1
/home/projects/svn/project2
... ... ...
Възможно е Trac и SVN инстанциите да се намират в директориите на проектите но така се усложнява млко конфигурацията
Същинското изпълнение
Създайте си директорната структура която ще ви е удобна:
mkdir -p /home/projects/{trac,svn}
Създайте си съответните проекти (това става с trac-admin)
trac-admin /home/projects/trac/project1 initenv
Ще ви бъдат зададени няколко въпроса и по точно: Име на проекта, База данни (sqlite е добър избор), тип на хранилището за код, къде се намира самото хранилище.
Ограничение е че хранилището на код трябва задължително да е на същата машина (не се поддържат отдалечени), но това може лесно да се заобиколи с помощта на nfs.
Създайте съответните хранилища за код (svnadmin)
svnadmin create /home/projects/svn/project1
Променете правата на така създадените директории съответно на потребителя като който вървят Trac системата и svn сървъра
chown -R www-data:www-data /home/projects/trac/project1
chown -R svnserv:svnserv /home/projects/svn/project1
Използваме www-data тъй като под този потребител работи Apache сървъра. Потребителя svnserv сме създали предварително като за домашна директория сме му задали /home/projects/svn
След като имаме вече създадени проектите време е да можем да ги покажем в браузър (иначе са безполезни).
Trac може да работи като самостоятелен демон (tracd), като CGI процес (trac.cgi, trac.fcgi) или в контекста на Apache (което сме и избрали) с помощта на mod_python.
В конфигурацията на Apache добавяме
LoadModule python_module modules/mod_python.so
# или го разрешаваме с помощта на дистрибуцията си
# с какво ще обработваме съдържанието
SetHandler mod_python
# точно с какво (trac)
PythonHandler trac.web.modpython_frontend
# коя информация точно ще сервираме
PythonOption TracEnvParentDir /home/projects/trac
# от какво ще генерираме индекса (не е задължителен)
PythonOption TracEnvIndexTemplate /home/projects/trac/listing.cs
# debug mode ON
PythonDebug on
Рестартираме сървъра и проверяваме. Трябва да се вижда нещо подобно на следната картинка
Ако ли пък не ... почвайте да гледате в логовете какво пише.
Следва да пуснем svn сървър. Това се прави с помощта на svnserve. В случая съм избрал да го стартирам през xinetd понеже няма да е толкова натоварен. За по голяма сигурност ще работи като отделен потребител (svnserv)
Конфигурацията на xinetd е следната
service subversion
{
# слушаме само на IPv4 адрес
flags = IPv4
# услугата НЕ е спряна
disable = no
# потребител и група
user = svnserv
group = svnserv
# максимален брой инстанции
instances = 5
# be nice :)
nice = 15
# кой точно е сървърът
server = /usr/bin/svnserve
# аргументи за стартирането му
server_args = --inetd --root /home/projects/svn
# обичайните работи (логване, типаж ...)
log_on_success = PID HOST DURATION
log_on_failure = HOST ATTEMPT
wait = no
socket_type = stream
}
Тествайте със svn клиент дали работи.
Подсигуряване и подобряване на Услугите
След като имаме работещи услуги време е да помислим за тяхното подсигуряване. А именно ето какво ще направим:
За Trac системите
- Премахване на анонимният достъп (изцяло). За тази цел ще ни се наложи да използваме trac-admin. Възможно е да се реализира през web интерфейс но все пак трябва да се знае как се прави на ръка.
# влизаме в интерактивен режим
trac-admin /projects/trac/project1
# привилегиите се управляват посредством командата permission
Trac [/home/projects/trac/project1]> permission help
permission list [user]
-- List permission rules
permission add [action] [...]
-- Add a new permission rule
permission remove [action] [...]
-- Remove permission rule
# това е просто за запознаване
# следва същинското премахване
Trac [/home/projects/trac/project1]> permission remove anonymous *
Вече анонимните потребители нямат никакви права.
- добавяне на нов административен потребител с пълни права. Това се прави за да имаме по лесен контрол.
Trac [/home/projects/trac/project1]> permission add user1 TRAC_ADMIN, MILESTONE_DELETE ....
# всички възможни привилегии
Така добавеният потребител user1 ефективно получава пълен и абсолютен контрол.
- активиране на администраторският панел - тази процедура се извършва чрез редакция на кконфигурационният файл conf/trac.ini в директорията на нашият проект. За да активираме администраторският интерфейс е необходимо да разрешим използването на компонентите които са ни нужни а именно да добавим
[components]
webadmin.* = enabled
- включване на подобрен процес на влизане в системата - по начало процеса на влизане в Trac не е особенно красив нито пък удобен, затова и ще бъде подменен от разширението TracAccountManager. То има зависимост от TracWebAdmin който вече е активиран. За да можем да ползваме подобреният процес трябва първо да изключим вграденият във trac и да активираме новият. Това става отново с редакция на trac.ini
[components]
acct_mgr.admin.accountmanageradminpage = enabled
acct_mgr.api.accountmanager = enabled
acct_mgr.htfile.abstractpasswordfilestore = enabled
acct_mgr.htfile.htdigeststore = disabled
acct_mgr.htfile.htpasswdstore = enabled
acct_mgr.http.httpauthstore = disabled
acct_mgr.web_ui.accountmodule = enabled
acct_mgr.web_ui.loginmodule = enabled
trac.web.auth.loginmodule = disabled
[account-manager]
password_file = /home/projects/trac/users
password_store = HtPasswdStore
Какво точно прави всяка опция е добре обяснено в документацията (линковете са в края)
Сега е необходимо да рестартираме web сървъра за да влезнат в сила нашите промени.
За svn сървъра:
Забраняване на всякакъв достъп за неауторизирани потребители
Това се изпълнява като се редактират конфигурациите на svn сървъра. Те се намират в директорията в която е нашето хранилище на код. Модифицираме ги по следният начин:
conf/svnserve.conf
### This file controls the configuration of the svnserve daemon
### Visit http://subversion.tigris.org/ for more information.
[general]
# никакъв достъп за анонимните
anon-access = none
password-db = passwd
authz-db = authz
realm = Project 1
conf/authz
### This file is an example authorization file for svnserve.
### Its format is identical to that of mod_authz_svn authorization
### files.
[groups]
# за кой път иде реч (правата се унаследяват)
[/]
# правата на потребител (четене и писане)
user1 = rw
# правата на всички останали (пълна нула)
* =
conf/passwd
### This file is an example password file for svnserve.
[users]
user1 = password
Заключение
След като сме си свършили всичката работа следва да рестартираме за един последен път apache и xinetd и да започнем да си ползваме системата. За подробности за работата с нея ... във връзките
Връзки
Trac
mod_python
Apache
Subversion
TracWebAdmin
TracAccountManager
<< NVIDIA инсталация под SuSE10.1 с 3D | iptables с layer7 и pp2p под slackware 11 new! >>
|