HOWTO setup Trac with Mercurial and Nginx
Development September 7th, 2009
“A goal is a dream with a deadline.” — Napleon Hill
Besides the configuration for Mercurial the preferred DVCS, A bug-tracking and project management tool is required to manage the timeline. Trac is my all-time favorite and it supports the Mercurial via TracMercurial plugin.
Before we move on, we need to rebuild the python-2.6 to get some missing modules with C extensions back:
sudo yum install bzip2-devel readline-devel gdbm-devel bsddb-devel ncurses-devel db4-devel sqlite-devel
# Rebuild the Python-2.6
./configure –prefix=/opt/python
make && sudo make install
Install Trac and MercurialTrac
PATH=/opt/python/bin:$PATH sudo trac-admin /var/trac/bloggo/ initenv
When repository type is prompted, use hg instead.
Then we install the MercurialTrac plugin globally, so it can be used later for other projects:
cd mercurial-plugin-0.11
python setup.py bdist_egg
sudo /opt/python/bin/easy_install dist/TracMercurial-0.11.0.7-py2.6.egg
Now it is time to run Trac in TracStandalone mode to verify the configuration in Trac side.
Configure Nginx to and FastCGI
The Trac instance is loaded via spawn-fcgi as other web applications using this script. The PATH is overrided to use python-2.6, and TRAC_ENV_PARENT_DIR is exported explicitly. I doubt this may contaminate other Trac instances, I will fix it later if so.
The multiple Trac instances are located in the /projects/ path, and we need HTTP Basic Auth to protect the entry point.
auth_basic “Trac”;
auth_basic_user_file “/var/trac/devpasswd”;
fastcgi_split_path_info ^(/projects)(/.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param AUTH_USER $remote_user;
fastcgi_param REMOTE_USER $remote_user;
include fastcgi_params;
fastcgi_pass 127.0.0.1:9004;
}
location /projects/ {
fastcgi_split_path_info ^(/projects)(/.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param AUTH_USER $remote_user;
fastcgi_param REMOTE_USER $remote_user;
include fastcgi_params;
fastcgi_pass 127.0.0.1:9004;
}
Any thoughts to refactor the configuration to eliminate the duplication?







What a great piece of information…This is exactly what i’m searching for. Really nice post, and by the way, nice blog. Thanks for sharing.
wow, thanks for the tips and the great explantion! you leave all the critical points very clear, your posts are very useful for me that i’m begining in this world. thanks for your work!
Thanks for the tips. They are very useful.