The Trac project
Я не буду описывать ее возможности и для чего эта система нужна, все есть на офф. сайте (http://trac.edgewall.org) или в википедии.
Рассмотрю только установку и настройку детально для новичков (статья посвящена другу Энверу из Рязани, может еще кому пригодиться), тому кто уже с этим сталкивался пользы эта статья не принесет.
Связка FreeBSD + SVN + Apache2 + Trac
Для новичков подробнее о связке и способе работы
Все исходники разрабатываемого ПО лежат в SVN (удобно видеть все изменения и всегда легко сделать откат, если надо).
Trac — система, предоставляющая возможность интерактивной работы прежде всего с svn репозиторием, а так же вики (не считая доп. модулей).
Установка
Первым ставим Apache 2.2
cd /usr/ports/www/apache22
make WITH_BERKELEYDB=db42 install
Качаем и ставим мод питон
cd /tmp
fetch http://www.apache.org/dist/httpd/modpython/mod_python-3.3.1.tgz
tar -xvf mod_python-3.3.1.tgz
cd mod_python-3.3.1
./configure
make
make install
rm -R mod_python-3.3.1 mod_python-3.3.1.tgz
Далее SVN
cd /usr/ports/devel/subversion
make WITH_MOD_DAV_SVN= install
Установка Trac и модуля webadmin
cd /usr/ports/www/trac
make install
cd /usr/ports/www/trac-webadmin/
make install
при желании можно установить и другие модули, на Ваше усмотрение
Настройка
Теперь когда все установлено приступаем к настройке, для начала настроим Subversion.
Создаем директорию для хранения репозиториев, т.к. мы будем юзать доступ через апач с модулем WebDav, то лучше хранить их в папке с правами группы апача
mkdir /usr/local/www/repository
создаем проект
svnadmin create /usr/local/www/repository/project_name
рекурсивно назначаем права группы и пользователя apache
chown -R www:www /usr/local/www/repository
создаем файл с пользователями и паролями
htpasswd -c /usr/local/etc/project_name.passwd user_name
для добавления пользователя та же самая команда, но без ключа -c
Переходим к Apache
проверим включен ли mod_dav_svn в конфиге апача
edit /usr/local/etc/apache22/httpd.conf
(должна быть строка вида LoadModule dav_svn_module libexec/apache22/mod_dav_svn.so)там же добавляем ниже
LoadModule python_module libexec/apache22/mod_python.so
еще ниже раскомменчиваем сроку
Include etc/apache22/extra/httpd-vhosts.conf
сохраняем…
открываем файл с виртуальными хостами
edit /usr/local/etc/apache22/extra/httpd-vhosts.conf
и правимNameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin webmaster@project_name.ru
DocumentRoot "/usr/local/www/trac/htdocs"
ServerName trac.project_name.ru
ErrorLog "/var/log/trac.project_name.ru-error_log"
<Location ~ "/(svn|project_name/login)">
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /usr/local/etc/project_name.passwd
Require valid-user
</Location>
<Location /svn>
DAV svn
SVNParentPath /usr/local/www/repository
</Location>
</VirtualHost>
сохраняем изменения и рестартуем апач
apachectl restart
проверяем репозиторий на работоспособность через браузер и SVN-клиент(я использую Subcommander и SmartSVN под линукс и винду соответсвенно) server_ip/svn/project_name ну и используя логины пользователей которых Вы создали.
Далее создаем проект в Trac
создаем папку для проектов, копируем статику
cd /usr/local/www
mkdir trac
cd trac
mkdir -pv /usr/local/www/trac/htdocs/i
cp -R /usr/local/share/trac/htdocs/* /usr/local/www/trac/htdocs/i
echo "<html><body><a href=/project_name>Project Name</a></body></html>" >> /usr/local/www/trac/htdocs/index.html
и создаем сам проект
trac-admin project_name initenv
далее заполняем устанавливаем по инструкции,
название проекта
база по умолчанию используется sqlite просто жмем (для других БД информация тут http://trac.edgewall.org/wiki/DatabaseBackend)
тип репозитория: svn
путь к репозиторию: /usr/local/www/repository/project_name
остальное по умолчанию…
открываем для редактирования конфиг проекта
edit /usr/local/www/trac/project_name/conf/trac.ini
находим директивы и ставим новые значения
htdocs_location = /i/
default_charset = utf-8
base_url =http://server_ip/project_name
и в конце добавляем модуль webadmin
[components]
webadmin.* = enabled
подробнее по всем директивам здесь trac.edgewall.org/wiki/TracIni
назначаем права администратора одному из пользователей
trac-admin /usr/local/www/trac/project_name permission add user_name TRAC_ADMIN
делаем синхронизацию проекта
trac-admin /usr/local/www/trac/project_name resync
после установки назначаем снова права на папку с проектами
chown -R www:www /usr/local/www/trac
Проверяем на работоспособность Trac
tracd --port 8000 /usr/local/www/trac/project_name
и смотрим его в браузере http://server_ip:8000для завершения процесса используем сочетание <Ctrl + C>
Если все работает нормально, то нужно, что бы Trac запускал апач…
Снова открываем для редактирования
edit /usr/local/etc/apache22/extra/httpd-vhosts.conf
Добавляем
<Location /project_name>
SetHandler mod_python
PythonInterpreter main_interpreter
PythonHandler trac.web.modpython_frontend
PythonOption TracEnv/usr/local/www/trac/project_name
PythonOption TracUriRoot /project_name
</Location>
Снова перезагружаем апач и открываем в браузере http://server_ip/project_name
Заходим под логином админа и наводим порядок не забудьте проставить права доступа пользователям http://trac.edgewall.org/wiki/TracPermissions
Для Linux систем отличается только процесс установки и пути к файлам.
На одном сервере можно вести несколько проектов, поэтому достаточно только создать новый проект в svn и trac и дописать их в httpd-vhosts.conf
P.S.: Статья писалась с максимальным упрощением для понимания начальных пользователей Linux, поэтому комменты с тем, что «вот лучше делать так» или «вот так будет безопаснее» можно опустить, т.к. я предполагал, что сервер в локальной сети компании, а не в интернет…