Trac Installation on Debian Etch
Table of Contents
The following sections describe the necessary steps to install and configure Trac on Debian Etch. Trac is based upon python and needs one of the following databases
Optionally the following software could be used
- subversion
- Apache2
- Other python tools like
- setuptools
- docutils
- SilverCity and/or Enscript
Preparations
Installing Apache2
If you didn't have done it before, you should
Command Summary
# apt-get install apache2 # apt-get install python-mysqldb # apt-get install libapache2-mod-python # a2enmod mod_python # /etc/init.d/apache2 restart
Installing Database
Trac requires installation one of the following databases
- MySQL or
- PostgreSQL or
- SQLite or
Installing MySQL
For further information on MySQL, please refer to MySQL.
- Install the MySQL package.
- Install Python's MySQL interface.
- Create an MySQL Administration account, if not done before.
- Create a database named trac.
- Grant all access rights on the database ''trac'' to the local user trac.
Command Summary
# apt-get install mysql-server # apt-get install python-mysqldb # mysqladmin -u root password 'secret' # mysqladmin -u root --password='secret' create trac # mysql -u root --password='secret' GRANT ALL PRIVILEGES ON trac.* TO trac@localhost IDENTIFIED by 'secret'; 'Query OK, 0 rows affected'. flush privileges; exit;
Installing PostgreSQL
For further information on MySQL, please refer to PostgreSQL.
- Install the PostgreSQL package.
- Install Python's PostgreSQL interface.
- Change Administrator Password, if not done before.
- Create a user named trac.
- Create a database named trac.
- Grant all access rights on database ''trac'' to the local user trac.
# apt-get install postgresql-8.1 # apt-get install python-psycopg2 # su postgres -c "psql" postgres=# ALTER USER postgres PASSWORD 'secret'; postgres=# CREATE USER trac PASSWORD 'secret'; postgres=# CREATE DATABASE trac OWNER trac; postgres=# GRANT ALL ON DATABASE trac TO trac; postgres=# \q
Installing SQLite
Installing SQLite on Debian Etch
Installing Subversion
For further information on Subversion, please refer to Subversion. If you don't have installed subversion before, follow these steps to install subversion and create an initial subversion repository.
As we like to use Subversion behind an Apache2 webserver, please
- Install the Apache2 Module for Subversion
- Create a Subversion Repository
- Follow Integrate Subversion into Apache2 Web Server carefully
Command Summary
# apt-get install subversion subversion-tools libapache2-svn # svnadmin create /svn # vi /etc/apache2/sites-available/www # vi /etc/apache2/mods-available/dav_svn.conf
Installing setuptools
If you want to install Trac plugins later on, then you need to install Python's setuptools. For detailed Information, please refer to the TracPlugins Wiki
# apt-get install python-setuptools
Installing docutils
Install the docutils, if you want to use an alternative Wiki Markup.
# apt-get install python-docutils
Installing SilverCity and Enscript
These packages are used for Trac's syntax highlighting.
The clearsilver package (python-clearsilver is already installed with the trac package. If you are looking for Enscript, use this command.
# apt-get install enscript
Installing Trac
The following command installs trac, including subversion and basic python support
# apt-get install trac
If you followed the steps descibed above, the following command should install trac properly:
trac-admin /var/www/trac/trac-example initenv
The script will prompt you for the following questions
- Project Name [My Project]>
Enter your Trac Project Name (e.g. trac-example)
- Database connection string [sqlite:db/trac.db]> Select the one matching your database configuration, where user="johndoe", password="letmein", dbname="trac"
- Repository type [svn]>
Just press Enter
- Path to repository /path/to/repos>
Enter e.g. /svn/trac-example
- Templates directory /usr/share/trac/templates>
Just press Enter
If all went well, then you should see something like this
--------------------------------------------------------------------- Project environment for 'Promotion' created. You may now configure the environment by editing the file: /var/www/trac/conf/trac.ini If you'd like to take this new project environment for a test drive, try running the Trac standalone web server `tracd`: tracd --port 8000 /var/www/trac Then point your browser to http://localhost:8000/trac. There you can also browse the documentation for your installed version of Trac, including information on further setup (such as deploying Trac to a real web server). The latest documentation can also always be found on the project website: http://trac.edgewall.org/ Congratulations!
A shortcut to create a new environment provides this command
# trac-admin /var/www/trac/trac-example initenv Promotion mysql://trac:secret@localhost:3306/trac svn /svn/trac-example /usr/share/trac/templates
To grant administrator rigths on a trac project use the following command:
# trac-admin /var/www/trac/trac-example/ permission add "root" TRAC_ADMIN
Configuring Apache
We installed Trac to be used with Apache's Python Module. With the following Location description, we configure Apache to serve Trac:
<Location /trac> SetHandler mod_python PythonInterpreter main_interpreter PythonHandler trac.web.modpython_frontend PythonOption TracEnvParentDir /var/www/trac/ PythonOption TracUriRoot /trac </Location>
The option TracEnvParentDir enables Trac to search for directories hosting Trac projects under the given path.
The option TracEnv instruct Trac to use the Trac project under the given path only.
To support Authentication, you can use any of Apache's authentication mechanism. Adding the following lines to the trac location stated above, you can enable SSL Client Authentication for your Trac projects. Trac will use the user name provided within the SSLUserName variable, which will be transmitted to the REMOTE_USER environment variable.
<Location /trac>
SetHandler mod_python
PythonInterpreter main_interpreter
PythonHandler trac.web.modpython_frontend
PythonOption TracEnvParentDir /var/www/trac/
PythonOption TracUriRoot /trac
SSLRequireSSL
SSLOptions +ExportCertData
SSLVerifyClient require
SSLVerifyDepth 2
SSLUserName SSL_CLIENT_S_DN_CN
SSLRequire %{SSL_CLIENT_S_DN_CN} in {"Peter Miller", "Claus Burger"}
</Location>
Multiple Projects in Trac
In order to host multiple project on one Trac instance, you need to setup one database for each Project.
