Recipe: Configuring Apache2 on CentOS-4.2 to serve Trac
This page duplicates information available on the TracModPython page, and discusses an obsolete platform. The page will eventually be deleted.
Getting Trac to work with Apache is not difficult, but there are a number of caveats. We will start with the DSO modules for Apache.
mod_python is provided for by the default Apache2 configuration on CentOS-4.2. The configuration file is found at
/etc/httpd/conf.d/python.conf and, as the settings in the default seem to serve, you can forget about modifying your
conf/httpd.conf file for now.
Next, there is the issue of permissions on both the Trac environment and the Subversion repository. I came to the conclusion that it would be best to create separate users and groups forTtrac and Subversion called
svn:svn respectively. I then set the ownerships on the Trac environment and subversion repositories to
svn:svn. I next added the Apache user as a member to both the Trac and svn groups. This allows Apache to read the files in both these directory structures.
The final bit is to create a file called something like '/etc/httpd/conf.d/trac.conf' and place the httpd directives for Trac and Python in it. In my case I set up a virtual server called
trac.mydomain.tld and put the following lines in a file called '/etc/httpd/conf.d/trac.mydomain.tld.conf':
<VirtualHost *> DocumentRoot "/var/data/trac" ServerName trac.mydomain.tld <Directory "/var/data/trac"> allow from all Options +Indexes </Directory> <Location /> SetHandler mod_python PythonHandler trac.web.modpython_frontend PythonOption TracEnv /var/data/trac SetEnv PYTHON_EGG_CACHE /var/data/trac/cache PythonOption TracUriRoot / </Location> <Location "/"> AuthType Digest AuthName "tld.mydomain" AuthDigestDomain / AuthDigestFile /var/data/trac/conf/trac.htdigest #Should be set to this for the more recent mod_auth_digest: # AuthUserFile /var/data/trac/conf/trac.htdigest Require valid-user </Location> </VirtualHost>
Note that the Trac environment is located at '/var/data/trac' and that instead of htpasswd I use htdigest and lock down the entire Trac environment from anonymous access.
I had to create the egg.cache inside the Trac environment to avoid permission problems in the /var/www/htdocs directory. The 'TracUriRoot /' is required so that Trac can find its support files like stylesheets and plugins, '/' in this case equates to '/var/data/trac'.
The AuthName directive refers to the realm used when creating the htdigest file for user authentication. The AuthDigestDomain sets the uri covered by controlled access, '/' means the entire site is closed to public viewing. The user password file is created in '/var/data/trac/conf/trac.htdigest' with the htdigest program.
This setup does not yet employ cgi or fastcgi, so it will be slow.