I had a lot of trouble understanding the Trac install instruction on the Trac project homepage. Maybe I’m getting old 🙂 Anyhow, I decided to create this step by step tutorial so that I have something easy to return too the next time I need to setup a new Trac project. In this tutorial I assume that all the necessary programs (Apache (with mod_wsgi), Trac and SQlite) are already installed
So lets start off by creating a folder to put our project in:
mkdir /var/trac/my_project
I place my trac instances in /var/trac/ but you can use almost any location
Now lets use trac-admin to create the project
trac-admin /var/trac/my_project initenv
trac-admin /var/trac/my_project deploy /tmp/deploy
The project is now created and deployed, but I have deployed it to /tmp – strange? I certainly think so but it’s apparently the preferred way. Somehow trac-admin can not deploy the necessary script into you project folder. You have to copy them there yourself. Editors note: Why can’t this be done automatically in the creation of the project
mv /tmp/deploy/* /var/trac/my_project/
This now moves the created scripts in htdocs and cgi-bin folders to your project
Now we need to set the correct ownership (this is not my strong suite so please report any errors) of the project files:
chown -R www-data:www-data /var/trac/my_project
Now it’s time to create a password file for the project since I normally only use Basic Authentication for my Trac projects:
htpasswd -c /var/trac/my_project/.trac.htpasswd niklas
This creates the user niklas inside the password files (you will be promted for a password)
To add more users just drop the -c option like this
htpasswd /var/trac/my_project/.trac.htpasswd another_user
To tighten up the security somewhat we set owner and permission on the password file like this:
chmod 640 /var/trac/my_project/.trac.htpasswd
chown root:www-data /var/trac/my_project/.trac.htpasswd
Now lets add these users to the trac project also. First the admin, niklas
trac-admin /var/trac/my_project permission add niklas TRAC_ADMIN
and then a user with basic privileges (create tickets, read wiki, timeline, milestones and such):
trac-admin /var/trac/my_project permission add anotheruser authenticated
We are now finally done with the project files. Time to move on to the Apache configuration. For this I create a file in the conf.d folder of the Apache installation like this:
vim /etc/apache2/conf.d/my_project
In this file I put the following:
<Directory /var/trac/my_project/cgi-bin/trac.wsgi>
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>
<VirtualHost *>
WSGIScriptAlias /trac/my_project /var/trac/my_project/cgi-bin/trac.wsgi
<Location '/trac/my_project'>
AuthType Basic
AuthName "Trac"
AuthUserFile /var/trac/my_project/.trac.htpasswd
Require valid-user
</Location>
</VirtualHost>
Now its finally time to test the new project. Restart Apache
/etc/init.d/apache2 restart
If all goes well you should now be able to find your new Trac project at http://localhost/trac/my_project. You should also be promted for a login when you arrive there
Tested on Debian Wheezy v7.0 with Apache 2 v2.2.22-13 and Trac v0.12.3