URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 88579
[ Назад ]

Исходное сообщение
"Раздел полезных советов: Связка Git и Trac на Fedora 18 с ис..."

Отправлено auto_tips , 08-Фев-13 00:09 
В статье речь пойдет о том, как связать вместе распределённую систему управления версиями файлов [[http://ru.wikipedia.org/wiki/Git Git]] и средство управления проектами и отслеживания ошибок в программном обеспечении [[http://ru.wikipedia.org/wiki/Trac Trac]] на Fedora 18 используя [[http://ru.wikipedia.org/wiki/Mod_wsgi mod_wsgi]].


В более старых версиях Fedora эта связка работала на mod_python. Официально, этот проект умер. Вот и пришлось искать альтернативы.

Все следующие действия будут происходить под учетной записью root.

Hostname нашей станции: trac-server.loc

Установим все необходимые пакеты:

   yum install httpd git trac trac-git-plugin mod_wsgi firewalld \
            php php-pear php-mysql php-mbstring python


Если у нас не установлен DNS сервер, редактируем файл /etc/hosts. Добавим в него имя нашего хоста.

   127.0.0.1   localhost localhost.localdomain localhost4  localhost4.localdomain4 trac-server.loc
   ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6


Настроим виртуальный хост апача (/etc/httpd/conf.d/vhosts.conf):

   ServerName trac-server.loc
   <VirtualHost *:80>
       DocumentRoot /var/www/html
       ServerPath /html
       ServerName trac-server.loc
       ServerAlias trac-server.loc
       ServerAlias www.trac-server.loc
   </VirtualHost>

  
Включаем поддержку коротких тегов:

   sed -i 's/^short_open_tag = Off/short_open_tag = On/g' /etc/php.ini


Если нужен доступ к ресурсам трэк сервера из-вне, открываем порт в файерволе:

   firewall-cmd --permanent --add-service=http
   firewall-cmd --reload


Включаем и запускаем apache:

   systemctl enable httpd
   systemctl start httpd


Создаем директории для нашего трэк сервера и гит репозиторий:

   install -d /srv/{trac,git}


Создадим WSGI скрипт (/srv/trac/trac.wsgi):

   #!/usr/bin/env python
   import os
   def application(environ, start_request):
       os.environ['TRAC_ENV_PARENT_DIR'] = '/srv/trac'
       os.environ['PYTHON_EGG_CACHE'] = '/tmp/egg-cache'
       from trac.web.main import dispatch_request
       return dispatch_request(environ, start_request)


Создадим файл конфигурации (/etc/httpd/conf.d/trac.conf):

   WSGIScriptAlias /trac /srv/trac/trac.wsgi
   <Directory /srv/trac>
       WSGIApplicationGroup %{GLOBAL}
       Require all granted
   </Directory>
   <LocationMatch "/trac/[^/]+/login">
       AuthType Digest
       AuthName "Trac"
       AuthUserFile /srv/trac/.htpasswd
       Require valid-user
   </LocationMatch>
  

Создадим файл конфигурации (/etc/httpd/conf.d/git.conf):

   SetEnv GIT_PROJECT_ROOT /srv/git
   SetEnv GIT_HTTP_EXPORT_ALL

   AliasMatch ^/git/(.*/objects/[0-9a-f]{2}/[0-9a-f]{38})$          /srv/git/$1
   AliasMatch ^/git/(.*/objects/pack/pack-[0-9a-f]{40}.(pack|idx))$ /srv/git/$1
   ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/

   Alias /git /srv/git
   <Directory /srv/git>
       Options Indexes FollowSymLinks Multiviews
       AllowOverride All
       Require all granted
   </Directory>
   <LocationMatch "^/git">
       DAV on
       AuthType Digest
       AuthName "Git"
       AuthUserFile /srv/git/.htpasswd
       Require valid-user
   </LocationMatch>


Создадим файл, который будет содержать пользователей и пароли для доступа к trac серверу.

У меня таких файлов два, отдельно для доступа к trac и отдельно для доступа к git репозиториям.

   htdigest -c /srv/trac/.htpasswd 'Trac' admin
   htdigest -c /srv/git/.htpasswd 'Git' admin

Этими командами мы создали пользователя "admin". Для дальнейшего добавления пользователей или для смены паролей, используется та же команда, только без "-c".

На этом этапе системная конфигурация закончена.

Добавим новый проект под кодовым названием pr1:

   trac-admin /srv/trac/pr1 initenv
   install -d /srv/git/pr1/.git
   git --bare init /srv/git/pr1/.git


Подкорректируем настройки нашего проекта в файле (/srv/trac/pr1/conf/trac.ini):

Включим поддержку git путем добавления в конец файла двух строчек:

   [components]
   tracext.git.* = enabled

И корректированием:

   sed -i 's/^repository_type =.*$/repository_type = git/g' /srv/trac/pr1/conf/trac.ini
   sed -i 's/^repository_dir =.*$/repository_dir = \/srv\/git\/pr1\/.git/g' /srv/trac/pr1/conf/trac.ini


Теперь дадим пользователю "admin" привелегии trac админа:

   trac-admin /srv/trac/pr1 permission add admin TRAC_ADMIN


Если мы не хотим запретить доступ к нашему трэк серверу не авторизированным пользователям, то:

   trac-admin /srv/trac/pr1 permission remove anonymous '*'


Ну и в конце подкорректируем права доступа к директориям, где будут храниться данные:

   chown -R apache:apache /srv/{trac,git}


Перезагрузим apache:

   systemctl httpd restart


Теперь можно зайти на trac сервер в наш проект по адресу:

   http://trac-server.loc/trac/pr1

Для работы с git используйте адрес:

   http://trac-server.loc/git/pr1

Например при команде:

   git clone http://trac-server.loc/git/pr1

Будет запрошено имя пользователя и пароль для авторизации.


URL:
Обсуждается: http://www.opennet.me/tips/info/2740.shtml


Содержание

Сообщения в этом обсуждении
"Связка Git и Trac на Fedora 18 с использованием mod_wsgi"
Отправлено V , 08-Фев-13 00:09 
А зачем PHP устанавливается?

"Связка Git и Trac на Fedora 18 с использованием mod_wsgi"
Отправлено V , 08-Фев-13 00:41 
для красоты

"Связка Git и Trac на Fedora 18 с использованием mod_wsgi"
Отправлено Денис , 11-Фев-13 12:36 
запускаем tracd м не паримся. не?

"Связка Git и Trac на Fedora 18 с использованием mod_wsgi"
Отправлено Uku Buku , 12-Мрт-13 21:35 
Trac неплохо поднимается на связке tracd + nginx
Вся авторизация перекладывается на nginx+ssl.
Очень эффективно и не надо даже ставить тяжёлый апач.