Configuring Trac on Debian
==========================
  Trac is a web-based project management tool. It can be run as a
standalone daemon (tracd) or together with a web server, such as
Apache.
  The web server needs to support either WSGI (Apache with
libapache2-mod-wsgi), FCGI (Apache, lighttpd), or CGI (most web
servers).
  Trac is written in the Python programming language and uses Genshi
(python-genshi) as templating system and, optionally, Pygments
(python-pygments) for source code syntax highlighting.
  Trac uses SQLite (python-pysqlite2) as an embedded database, but
can be configured to use PostgreSQL or MySQL instead.

Creating a Project Environment
------------------------------
  Trac Environment is the backend storage format where Trac stores
information like wiki pages, tickets, reports, settings, etc.
  A Trac environment consists of a directory containing a SQLite
database, human-readable configuration file, log-files and
p_w_uploads.

  Trac allows the use of many backend Version Control Systems (vcs).
By default only Subversion is supported. Others like git
(trac-git), bzr (trac-bzr) and Mercurial (trac-mercurial) can be
added as plugin.

  Before creating a Trac environment, you need to have a vcs
repository. With Subversion this can be made with:

    $ mkdir /path/to/repos
    $ svnadmin create /path/to/repos

A new Trac environment is created with trac-admin:

    $ trac-admin /path/to/projectenv initenv

NOTE: The web server user needs write permission to the environment directory
and all the files inside. After creating the environment you would need to
execute "chown -R www-data /path/to/projectenv" if trac-admin was executed as
another user.

trac-admin will ask you where your subversion repository is located and where
it can find the trac templates directory (the default value should be fine).

Configuring Apache Web Server
=============================

Apache is the preferred trac's webserver and most used too.
It can be configured in 2 groups: as CGI (CGI, WSGI, FCGI) and with mod-python.

Configuring as CGI, WSGI, FCGI
--------------------------------

For trac >= 0.11 the *gi scripts have to be generated using the deploy command:

        trac-admin /path/to/env deploy /path/to/www/trac

To use trac as an executable script in Apache, just add the according entry:

#Trac as CGI on Apache
#extra info in https://coderanger.net/~coderanger/tracdoc/install/cgi.html
ScriptAlias /trac /path/to/www/trac/cgi-bin/trac.cgi

#Trac as FCGI on Apache
#extra info in https://coderanger.net/~coderanger/tracdoc/install/fastcgi.html
ScriptAlias /trac /path/to/www/trac/cgi-bin/trac.fcgi/

#Trac as WSGI on Apache
#extra info on http://trac.edgewall.org/wiki/TracModWSGI
WSGIScriptAlias /trac /path/to/www/trac/cgi-bin/trac.wsgi


Configuring to use Apache with ModPython
----------------------------------------
For Modpython just use the following:

#Extra info https://coderanger.net/~coderanger/tracdoc/install/mod_python.html
# Trac need to know where the database is located
<Location /trac>
  SetHandler mod_python
  PythonHandler trac.web.modpython_frontend
  PythonInterpreter main
  PythonOption TracEnv /path/to/env
  PythonOption TracUriRoot /trac
  SetEnv PYTHON_EGG_CACHE /tmp
</Location>


Authentication using Apache
------------------------------

# You need this to allow users to authenticate
# trac.htpasswd can be created with
# cmd 'htpasswd -c trac.htpasswd' (UNIX)
# do 'man htpasswd' to see all the options
<Location "/trac/login">
        AuthType Basic
        AuthName "trac"
PythonOption TracUriRoot /trac
  SetEnv PYTHON_EGG_CACHE /tmp
</Location>


Authentication using Apache
------------------------------

# You need this to allow users to authenticate
# trac.htpasswd can be created with
# cmd 'htpasswd -c trac.htpasswd' (UNIX)
# do 'man htpasswd' to see all the options
<Location "/trac/login">
        AuthType Basic
        AuthName "trac"
        AuthUserFile /somewhere/trac.htpasswd
        Require valid-user
</location>


Using Trac
----------
You should now have a working Trac installation at:

http://<yourhostname>/trac

There you should be able to browse your subversion repository, create tickets,
view the timeline etc. Keep in mind that anonymous users (not logged in) can
only access a restricted subset of all Trac features.

Please read TracPermissions (in the wiki) to learn how to grant additional
privileges to authenticated users.

For further user-documentation, see TracGuide and check coderanger's website [1].
[1] https://coderanger.net/~coderanger/tracdoc/


Enjoy!

/The Trac Team

Please also consider joining the mailing list at
<http://lists.edgewall.com/mailman/listinfo/trac/>.

Visit the Trac open source project at <http://trac.edgewall.com/>

Jonas Borgstrom <jonas@edgewall.com>, Sat, 22 May 2004 20:49:22 +0200
Luis Matos <gass@otiliamatos.ath.cx>  Mon, 21 Jul 2008 21:06:36 +0100