Edgewall Software

Trac on Ubuntu

These instructions were tested with a fresh install of 8.04, and installs Trac 0.11.

Also see TracInstallPlatforms, TracInstall, TracOnUbuntu, Ubuntu-Trac, hardy, cgi.

For a full tutorial to get SVN + Trac 0.11 running on Ubuntu with multiple projects view this link.

OS Installation

You can have a Ubuntu instance running on a real hardware or virtual machine session using VMWare or VirtualBox.

The Ubuntu machine info

me@ubuntu:~$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=8.04
DISTRIB_CODENAME=hardy
DISTRIB_DESCRIPTION="Ubuntu 8.04.1"
me@ubuntu:~$

Trac 0.11 Installation

1. Install Software Packages

To install Trac on your system, install apache, setuptools and some libraries:

sudo apt-get install apache2 libapache2-mod-python \
     libapache2-svn python-setuptools subversion python-subversion
sudo easy_install Trac

If you want to install Bitten for trac

# Needed for bitten's trac 10.4 compatiblity.
sudo apt-get install python-clearsilver
# Needed for bitten unitest.
sudo easy_install http://darcs.idyll.org/~t/projects/figleaf-latest.tar.gz 

2. Create the Trac Environments Directory

You'll need a directory for Trac's environments to live that should be writable by the default Apache user:

sudo mkdir /var/lib/trac
sudo chown www-data:www-data /var/lib/trac

3. Setup Apache2

Next, create a new Apache-2 virtualhost, and paste the text below into the file:

sudo vi /etc/apache2/sites-available/trac
<VirtualHost *>
        ServerAdmin webmaster@localhost
        ServerName trac.example.com
        DocumentRoot /var/www
        ErrorLog /var/log/apache2/error.trac.log
        CustomLog /var/log/apache2/access.trac.log combined

        <Location /projects>
                SetHandler mod_python
                PythonInterpreter main_interpreter
                PythonHandler trac.web.modpython_frontend
                PythonOption TracEnvParentDir /var/lib/trac
                PythonOption TracUriRoot /projects
                PythonOption PYTHON_EGG_CACHE /tmp
        </Location>

        # use the following for one authorization for all projects 
        # (names containing "-" are not detected):
        <LocationMatch "/projects/[[:alnum:]]+/login">
            AuthType Basic
            AuthName "trac"
            AuthUserFile /etc/apache2/dav_svn.passwd
            Require valid-user
        </LocationMatch>

</VirtualHost>

Now, disable the default virtualhost, enable the Trac virtualhost, and restart Apache2:

sudo a2dissite default
sudo a2ensite trac
sudo  /etc/init.d/apache2 reload 

4. Creating Environments

SVN

I installed my Subversion repository at /var/lib/svn/YourProjectNameHere. So I did a quick starting config of subversion with the following commands:

sudo mkdir /var/lib/svn
sudo svnadmin create /var/lib/svn/YourProjectNameHere

Some permissions changes and an apache restart are now needed:

sudo chown -R www-data /var/lib/svn
sudo chown -R www-data /var/lib/trac
sudo  /etc/init.d/apache2 reload 

References: Commands populate files into SVN repository

Mercurial

An alternate solution is to use mercurial. if this case, do not setup any SVN (of course), indicate hg as the type of version control tool and the folder were your mercurial is. You will also need the mercurial plugin Trac Mercurial and the lastest version of mercurial from the backports

Trac

I put my trac environment at /var/lib/trac/YourProjectNameHere. Of course you could use any other path or name - something a little more descriptive of your project would probably be a good idea. First I ran these commands:

sudo mkdir /var/lib/trac
sudo trac-admin /var/lib/trac/YourProjectNameHere initenv
sudo chown -R www-data /var/lib/trac

The "trac-admin" command shown above prompted me to enter:

  • the project name (YourProjectNameHere)
  • the path to svn repository (/var/lib/svn/YourProjectNameHere)

… then it prints out a bunch of stuff. If there are no errors you should now be able to surf to your Trac site at http://servername/projects

For more complex mod_python configs, see TracModPython

One of your users (admin in this example) should have access to the web admin panel:

sudo trac-admin /var/lib/trac/YourProjectNameHere permission add admin TRAC_ADMIN

5. get subversion running as well

You will also need to uncomment the settings in /etc/apache2/mods-available/dav_svn.conf

<Location /svn>
    # Uncomment this to enable the repository,
    DAV svn

    # Set this to the path to your repository
    SVNParentPath /var/lib/svn
</Location>

6. Add some plugins to have a usable system

There are still some software dependency issue need to be resolved using apt-get. Lots of Trac plugins depened on system software like htmldoc,enscript. Check your trac.log to see the complaining when depeneded software not installed.

Install more apt-get package for trac plugins later

sudo apt-get install build-essential graphviz
sudo apt-get install htmldoc
sudo apt-get install enscript

Using Easy_install to install more Trac plugins

Before running these commands, I had to run…

sudo easy_install -U setuptools

… to fix an error about "unexpected HTML" when trying to install from svn source.

sudo easy_install http://svn.edgewall.org/repos/genshi/trunk/
sudo easy_install http://trac-hacks.org/svn/accountmanagerplugin/trunk
sudo easy_install http://trac-hacks.org/svn/customfieldadminplugin/0.11
sudo easy_install http://trac-hacks.org/svn/eclipsetracplugin/tracrpcext/0.10
sudo easy_install http://trac-hacks.org/svn/iniadminplugin/0.11
sudo easy_install http://trac-hacks.org/svn/masterticketsplugin/0.11
sudo easy_install http://trac-hacks.org/svn/pagetopdfplugin/0.10/
sudo easy_install http://trac-hacks.org/svn/progressmetermacro/0.11
sudo easy_install http://trac-hacks.org/svn/ticketdeleteplugin/0.11
sudo easy_install http://trac-hacks.org/svn/tracwysiwygplugin/0.11
sudo easy_install http://wikinotification.ufsoft.org/svn/trunk

7. what one should probably do different than described here

sudo chown www-data /etc/apache2/dav_svn.passwd 

with Ubuntu 9.04 (it seems 8.10+ would require it) a modification is required in section 3

change <VirtualHost *> to <VirtualHost *:80>

Testing

Make sure trac's password file is writable by www-data user

me@ubuntu:~$  ls -l  /etc/apache2/dav_svn.passwd
-rw-r--r-- 1 www-data root 21 2008-09-23 21:03 /etc/apache2/dav_svn.passwd
me@ubuntu:~$

Check the trac install directories layout

me@ubuntu:~$ tree -as /var/lib/trac/
/var/lib/trac/
`-- [       4096]  YourProjectNameHere
    |-- [         98]  README
    |-- [         27]  VERSION
    |-- [       4096]  attachments
    |-- [       4096]  conf
    |   |-- [       7025]  trac.ini
    |   |-- [       4755]  trac.ini.new
    |   `-- [       4187]  trac.ini.sample
    |-- [       4096]  db
    |   |-- [     349184]  trac.db
    |   `-- [     324608]  trac.db.21.bak
    |-- [       4096]  htdocs
    |-- [       4096]  log
    |   `-- [      84562]  trac.log
    |-- [       4096]  plugins
    |   `-- [       4096]  TracWebAdmin-0.1.2dev-py2.5.egg
    |       |-- [       4096]  EGG-INFO
    |       |   |-- [        278]  PKG-INFO
    |       |   |-- [        335]  SOURCES.txt
    |       |   |-- [          1]  dependency_links.txt
    |       |   |-- [        218]  entry_points.txt
    |       |   |-- [          1]  not-zip-safe
    |       |   `-- [          9]  top_level.txt
    |       `-- [       4096]  webadmin
    |           |-- [        523]  __init__.py
    |           |-- [        218]  __init__.pyc
    |           |-- [       1594]  basics.py
    |           |-- [       1682]  basics.pyc
    |           |-- [       4096]  htdocs
    |           |   |-- [       4096]  css
    |           |   |   `-- [       1900]  admin.css
    |           |   |-- [       4096]  img
    |           |   |   |-- [        218]  collapsed.png
    |           |   |   `-- [        227]  expanded.png
    |           |   `-- [       4096]  js
    |           |       `-- [       1286]  admin.js
    |           |-- [       3930]  logging.py
    |           |-- [       3133]  logging.pyc
    |           |-- [       2659]  perm.py
    |           |-- [       2585]  perm.pyc
    |           |-- [       9247]  plugin.py
    |           |-- [       8720]  plugin.pyc
    |           |-- [       4096]  templates
    |           |   |-- [        954]  admin.cs
    |           |   |-- [        685]  admin_basics.cs
    |           |   |-- [       2961]  admin_component.cs
    |           |   |-- [       2202]  admin_enum.cs
    |           |   |-- [       1669]  admin_log.cs
    |           |   |-- [       3898]  admin_milestone.cs
    |           |   |-- [       1521]  admin_perm.cs
    |           |   |-- [       3167]  admin_plugin.cs
    |           |   `-- [       2901]  admin_version.cs
    |           |-- [      16312]  ticket.py
    |           |-- [      13250]  ticket.pyc
    |           |-- [       5579]  web_ui.py
    |           `-- [       6505]  web_ui.pyc
    |-- [       4096]  snapshots
    `-- [       4096]  templates
        `-- [        151]  site.html

17 directories, 42 files
me@ubuntu:~$

See the installed plugins in .egg format

me@ubuntu:~$ ls -d /usr/lib/python2.5/site-packages/*.egg
/usr/lib/python2.5/site-packages/Bitten-0.6dev_r559-py2.5.egg
/usr/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg
/usr/lib/python2.5/site-packages/Genshi-0.6dev_r960-py2.5-linux-i686.egg
/usr/lib/python2.5/site-packages/IniAdmin-0.2-py2.5.egg
/usr/lib/python2.5/site-packages/Trac-0.11.1-py2.5.egg
/usr/lib/python2.5/site-packages/TracAccountManager-0.2.1dev_r3857-py2.5.egg
/usr/lib/python2.5/site-packages/TracCustomFieldAdmin-0.2-py2.5.egg
/usr/lib/python2.5/site-packages/TracExtendedXmlRpc-0.1-py2.5.egg
/usr/lib/python2.5/site-packages/TracMasterTickets-2.1.3-py2.5.egg
/usr/lib/python2.5/site-packages/TracPageToPDF-0.2-py2.5.egg
/usr/lib/python2.5/site-packages/TracProgressMeterMacro-0.1-py2.5.egg
/usr/lib/python2.5/site-packages/TracTicketDelete-2.0-py2.5.egg
/usr/lib/python2.5/site-packages/TracWebAdmin-0.1.2dev-py2.5.egg
/usr/lib/python2.5/site-packages/TracWikiNotification-0.2.0-py2.5.egg
/usr/lib/python2.5/site-packages/TracWysiwyg-0.2_r4214-py2.5.egg
me@ubuntu:~$

Last modified 4 years ago Last modified on Aug 8, 2010 1:16:41 PM