Currently, I am running OTRS 2.4 and 3.0 on the same box.
The concepts should apply, more or less, to virtual hosts.
Also, Postgresql is able to be used if you want to install from source.
# --
# $Id: apache2-httpd-new.include.conf,v 1.5 2008/11/10 11:08:55 ub Exp $
# --
# agent, admin and customer frontend
ScriptAlias /otrs/ "/path/to/customer1/otrs/bin/cgi-bin/"
Alias /otrs-web/ "/path/to/customer1/otrs/var/httpd/htdocs/"
# if mod_perl is used
<IfModule mod_perl.c>
# load all otrs modules
# Apache::Reload - Reload Perl Modules when Changed on Disk
PerlModule Apache2::Reload
PerlInitHandler Apache2::Reload
PerlModule Apache2::RequestRec
# set mod_perl2 options
<Location /otrs>
# ErrorDocument 403 /path/to/customer1/otrs/
customer.pl ErrorDocument 403 /path/to/customer1/otrs/
index.pl SetHandler perl-script
PerlResponseHandler ModPerl::Registry
Options +ExecCGI
PerlOptions +ParseHeaders
PerlOptions +SetupEnv
Order allow,deny
Allow from all
</Location>
</IfModule>
# directory settings
<Directory "/path/to/customer1/otrs/bin/cgi-bin/">
AllowOverride None
Options +ExecCGI -Includes
Order allow,deny
Allow from all
</Directory>
<Directory "/path/to/customer1/otrs/var/httpd/htdocs/">
AllowOverride None
Order allow,deny
Allow from all
</Directory>
# MaxRequestsPerChild (so no apache child will be to big!)
MaxRequestsPerChild 400
Then in otrs/Kernel/Config.pm, among other things:
$Self->{'Database'} = 'otrs_customer1';
$Self->{'DatabaseUser'} = 'otrs_customer1';
$Self->{'DatabasePw'} = 'otrspassword';
$Self->{Home} = '/path/to/customer1/otrs';
$Self->{'Frontend::WebPath'} = '/otrs-web/';
Don't forget to check the forums and ask there, as well.