JosefJezek
8/27/2014 - 10:26 AM

Trac

Trac

Trac

Install on CentOS

yum install httpd mod_wsgi MySQL-python
easy_install genshi Trac==1.0
easy_install --upgrade Trac==1.0

mkdir -p  /var/www/trac
trac-admin /var/www/trac/myproject initenv
trac-admin /var/www/trac/myproject deploy /var/www/trac/myproject/deploy
mkdir /var/www/cgi-bin
cp /var/www/trac/myproject/deploy/cgi-bin/trac.wsgi /var/www/cgi-bin/myproject.trac.wsgi
chown -R apache: /var/www/trac/myproject

Apache

NameVirtualHost *:80
<VirtualHost *:80>
    ServerName trac.example.com

    ErrorLog /var/log/httpd/trac.example.com-error_log
    CustomLog /var/log/httpd/trac.example.com-access_log common

    Alias /myproject/chrome/common /var/www/trac/myproject/deploy/htdocs/common
    Alias /myproject/chrome/site /var/www/trac/myproject/deploy/htdocs/site

    WSGIScriptAlias /myproject /var/www/cgi-bin/myproject.trac.wsgi

    <Directory /var/www/cgi-bin>
        WSGIApplicationGroup %{GLOBAL}
        Order deny,allow
        Allow from all
    </Directory>
    
    <Location /myproject/login>
      AuthType Basic
      AuthzLDAPMethod ldap
      AuthzLDAPAuthoritative on
      AuthzLDAPBindDN user@example.com
      AuthzLDAPBindPassword password
      AuthzLDAPServer example.com
      AuthzLDAPUserBase ou=example,dc=example,dc=com
      AuthzLDAPUserKey sAMAccountName
      AuthzLDAPUserScope subtree
      AuthName "TRAC"
      Require valid-user
      #require ldap-group CN=Trac Users,CN=Users,DC=company,DC=com

      #AuthzLDAPLogLevel debug
    </Location>
</VirtualHost>

MySQL

mysql://tracuser:password@localhost/trac

CREATE DATABASE trac DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
GRANT ALL ON trac.* TO tracuser@localhost IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

Setup

vi /var/www/trac/myproject/conf/trac.ini

[components]
tracopt.versioncontrol.svn.* = enabled
# Automatic reference to the SVN changesets in Trac tickets
tracopt.ticket.commit_updater.* = enabled

[trac]
repository_dir = /path/to/svn/repository
repository_sync_per_request =

[header_logo]
alt =
src =

[ticket]
commit_ticket_update_envelope = 
commit_ticket_update_commands.close = close closed closes fix fixed fixes
commit_ticket_update_commands.refs = <ALL>
commit_ticket_update_check_perms = false
commit_ticket_update_notify = true

Web Admin

trac-admin /path/to/my/project
permission add <username> TRAC_ADMIN
permission list <username>

Repository

After adding a repository, the cache for that repository must be re-synchronized once with the

trac-admin /var/www/trac/myproject repository resync "*"

Commit Ticket Updater

SVN Hooks

/svn/myproject/hooks/pre-commit

SVNLOOK=/usr/bin/svnlook
$SVNLOOK log -t "$TXN" "$REPOS" | \
   grep "#[0-9]" > /dev/null || SVNLOOKOK=0

if [ $SVNLOOKOK = 0 ]; then
echo Log messages without Ticket ID are not allowed. 1>&2
exit 1
fi

/svn/myproject/hooks/post-commit

export PYTHON_EGG_CACHE="/var/www/trac/myproject"
/usr/bin/trac-admin /var/www/trac/myproject changeset added "$1" "$2"

chmod +x pre-commit chmod +x post-commit

XML-RPC

Problems when AccountManagerPlugin is enabled

  • [account-manager]
  • environ_auth_overwrite = false