Edgewall Software

Version 29 (modified by Phil Mocek <pmocek-edgewall-tracwiki@…>, 19 years ago) ( diff )

move regex suggestion to bottom of page

Configure Apache for multiple projects

By following these instructions, you will set up Apache to automatically serve multiple Trac projects for you.

Start out by creating a project directory in your documentroot (/var/www in this example). Projects will be accessed as http://hostname/projects/projectname. Copy (or symlink) trac.cgi to this directory together with a file named index.html. This will be shown when users try to access nonexistent projects.

Then create your trac projects with trac-admin. It's important that they are all placed in the same directory. In this example we'll use /var/lib/trac. Add to your Apache configuration:

RewriteEngine on
RewriteRule ^/projects/+$			/projects/index.html [L]
RewriteCond /var/lib/trac/$1			-d
RewriteRule ^/projects/([[:alnum:]]+)(/?.*)	/projects/trac.cgi$2 [S=1,E=TRAC_ENV:/var/lib/trac/$1]
RewriteRule ^/projects/(.*)			/projects/index.html

Alias /trac/ /usr/share/trac/htdocs/
#or where you installed the trac htdocs

#You have to allow people to read the files in htdocs
<Directory "/usr/share/trac/htdocs">
        Options Indexes MultiViews
        AllowOverride None
        Order allow,deny
        Allow from all
</Directory>

<Directory "/var/www/projects">
	AllowOverride None
	Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
	AddHandler cgi-script .cgi
	Order allow,deny
	Allow from all
</Directory>

<LocationMatch "/projects/[[:alnum:]]+/login">
	AuthType Basic
	AuthName "trac"
	AuthUserFile /path/to/trac.htpasswd
	Require valid-user
</LocationMatch>

Make sure you have the rewrite module loaded or compiled in Apache.

LoadModule rewrite_module modules/mod_rewrite.so

Now, when you add another project, you don't need to edit any apache config. The only file you may want to edit is index.html to make it list the new project. If you think this is too much work, replace it with a python cgi script that does it for you.

tracd and TracModPython can also serve multiple projects.

Suggestion: In the second RewriteRule directive and in the LocationMatch directive, change [[:alnum:]] to [[^/]] because while [[:alnum:]] only matches an alpha-numeric character, [[^/]] matches any character that is not a slash. This change allows for, among other things, hyphens in project/directory names. Another possibility is to replace [[:alnum:]] with [[:alnum:]\-], which matches only an alphanumeric character or a hyphen (the backslash "escapes" the hyphen, which would otherwise have special meaning). The Apache 2.0 mod_rewrite documentation suggests referencing the Perl regular expression manual page (run perldoc perlre on a system where Perl is installed) for details on regular expressions. Note that it may be preferable to use a pattern that matches only characters suitable for directory names (and, thus, project names) that are valid for your particular installation.


See also: TracGuide, TracInstall

Note: See TracWiki for help on using the wiki.