[rt-users] Problem installing RT -- Mason related?

McCool, Scott McCoolS at darden.virginia.edu
Mon Aug 19 15:20:38 EDT 2002


Greetings all,

I'm trying to get rt-2.0.14 installed on a linux server.

I've followed the RT/FM installation guide, but am stuck trying to get
anything to work through the web.

Any time I try to hit the RT2 pages, Apache dumps the following to it's
error_log:

[warn] [Mason] Cannot resolve file to component:
/usr/local/apache/htdocs/rt2 (is file outside component root?)


Can anyone help me?  Any pointers on where I can find more information?
Thank you in advance!  Configuration in my environment is below.



-Scott



Here are the relevent settings in my setup (as far as I know, though
obviously there's _something_ wrong (: )




Apache's httpd.conf:

Alias /rt2/ /usr/local/rt2/WebRT/html/
PerlRequire /usr/local/rt2/bin/webmux.pl                
<Location /rt2>                         
  SetHandler perl-script
  PerlHandler RT::Mason
</Location>


(I'm not sure if this is everything related to RT that I need or not, my
goal here is to have all the RT url's under http://hostname/rt2 )





Apache's conf/mason.conf:

PerlSetVar MasonCompRoot "/usr/local/rt2/WebRT/html"
PerlSetVar MsonDataDir "/usr/local/apache/mason"
PerlModule HTML::Mason::ApacheHandler

<Directory "/usr/local/rt2/WebRT/html">
	<FilesMatch "(\.html)$">
	SetHandler perl-script
	PerlHandler HTML::Mason::ApacheHandler
	</FilesMatch>
</Directory>








Etc/config.pm (entire file, hope it isn't too mangled):



# $Header: /raid/cvsroot/rt/etc/config.pm,v 1.18 2002/07/13 04:00:53
jesse Exp $	

package RT;

# {{{ Base Configuration

# $rtname the string that RT will look for in mail messages to # figure
out what ticket a new piece of mail belongs to

# Your domain name is recommended, so as not to pollute the namespace. #
once you start using a given tag, you should probably never change it. 
# (otherwise, mail for existing tickets won't get put in the right place

$rtname="gbus.virginia.edu";

# You should set this to your organization's DNS domain. For example, #
fsck.com or asylum.arkham.ma.us. It's used by the linking interface to 
# guarantee that ticket URIs are unique and easy to construct.

$Organization = "gbus.virginia.edu";

# $user_passwd_min defines the minimum length for user passwords.
Setting # it to 0 disables this check $MinimumPasswordLength = "5";

# $Timezone is used to convert times entered by users into GMT and back
again # It should be set to a timezone recognized by your local unix
box. $Timezone =  'US/Eastern'; 

# LogDir is where RT writes its logfiles.
# This directory should be writable by your rt group
$LogDir = "/usr/local/rt2/logs";

# }}}

# {{{ Database Configuration

# Database driver beeing used - i.e. MySQL. $DatabaseType="mysql";

# The domain name of your database server
# If you're running mysql and it's on localhost,
# leave it blank for enhanced performance $DatabaseHost="localhost";

# The port that your database server is running on.  Ignored unless it's

# a positive integer. It's usually safe to leave this blank
$DatabasePort="";


#The name of the database user (inside the database) 
$DatabaseUser='rt_user';

# Password the DatabaseUser should use to access the database 
$DatabasePassword='SNIPPED';


# The name of the RT's database on your database server
$DatabaseName='rt2';

# If you're using Postgres and have compiled in SSL support, 
# set DatabaseRequireSSL to 1 to turn on SSL communication
$DatabaseRequireSSL=undef;

# }}}

# {{{ Incoming mail gateway configuration


# OwnerEmail is the address of a human who manages RT. RT will send #
errors generated by the mail gateway to this address.  This address #
should _not_ be an address that's managed by your RT instance.

$OwnerEmail = 'root';

# If $LoopsToRTOwner is defined, RT will send mail that it believes 
# might be a loop to $RT::OwnerEmail 

$LoopsToRTOwner = 1;

# If $StoreLoopss is defined, RT will record messages that it believes 
# to be part of mail loops.
# As it does this, it will try to be careful not to send mail to the 
# sender of these messages 

$StoreLoops = undef;


# $MaxAttachmentSize sets the maximum size (in bytes) of attachments
stored # in the database. 

# For mysql and oracle, we set this size at 10 megabytes.
# If you're running a postgres version earlier than 7.1, you will need #
to drop this to 8192. (8k)

$MaxAttachmentSize = 10000000;  

# $TruncateLongAttachments: if this is set to a non-undef value, # RT
will truncate attachments longer than MaxAttachmentLength. 

$TruncateLongAttachments = undef;


# $DropLongAttachments: if this is set to a non-undef value,
# RT will silently drop attachments longer than MaxAttachmentLength. 

$DropLongAttachments = undef;

# If $ParseNewMessageForTicketCcs is true, RT will attempt to divine #
Ticket 'Cc' watchers from the To and Cc lines of incoming messages # Be
forewarned that if you have _any_ addresses which forward mail to # RT
automatically and you enable this option without modifying 
# "IsRTAddress" below, you will get yourself into a heap of trouble. #
And well, this is free software, so there isn't a warrantee, but # I
disclaim all ability to help you if you do enable this without #
modifying IsRTAddress below.

$ParseNewMessageForTicketCcs = undef;

# IsRTAddress is used to make sure RT doesn't add itself as a ticket CC
if # the setting above is enabled.

sub IsRTAddress {
    my $address = shift;

    # Example: the following rule would tell RT not to Cc 
    #	"tickets at noc.example.com"
    # return(1) if ($address =~ /^tickets\@noc.example.com$/i);
    
    return(undef)
}

# CanonicalizeAddress converts email addresses into canonical form. # it
takes one email address in and returns the proper canonical # form. You
can dump whatever your proper local config is in here

sub CanonicalizeAddress {
    my $email = shift;
    # Example: the following rule would treat all email
    # coming from a subdomain as coming from second level domain
    # foo.com
    #$email =~ s/\@(.*).foo.com/\@foo.com/;
    return ($email)
}

# If $LookupSenderInExternalDatabase is defined, RT will attempt to #
verify the incoming message sender with a known source, using the 
# LookupExternalUserInfo routine below

$LookupSenderInExternalDatabase = undef;

# If $SenderMustExistInExternalDatabase is true, RT will refuse to #
create non-privileged accounts for unknown users if you are using 
# the "LookupSenderInExternalDatabase" option.
# Instead, an error message will be mailed and RT will forward the 
# message to $RTOwner.
#
# If you are not using $LookupSenderInExternalDatabase, this option #
has no effect. #
# If you define an AutoRejectRequest template, RT will use this   
# template for the rejection message.

$SenderMustExistInExternalDatabase = undef;

# LookupExternalUserInfo is a site-definable method for synchronizing #
incoming users with an external data source. 
#
# This routine takes a tuple of EmailAddress and FriendlyName
# 	EmailAddress is the user's email address, ususally taken from
#  		an email message's From: header.
# 	FriendlyName is a freeform string, ususally taken from the
"comment" 
#		portion	of an email message's From: header.
#
# It returns (FoundInExternalDatabase, ParamHash);
#
#   FoundInExternalDatabase must  be set to 1 before return if the user
was
#   found in the external database.
#
#   ParamHash is a Perl parameter hash which can contain at least the
following
#   fields. These fields are used to populate RT's users database when
the user 
#   is created
#
# 	EmailAddress is the email address that RT should use for this
user.  
# 	Name is the 'Name' attribute RT should use for this user. 
#   	     'Name' is used for things like access control and user
lookups.
# 	RealName is what RT should display as the user's name when
displaying 
#   	     'friendly' names

sub LookupExternalUserInfo {
  my ($EmailAddress, $RealName) = @_;

  my $FoundInExternalDatabase = 1;
  my %params = {};
  
  #Name is the RT username you want to use for this user.
  $params{'Name'} = $EmailAddress;
  $params{'EmailAddress'} = $EmailAddress;
  $params{'RealName'} = $RealName;

  # See RT's contributed code for examples.
  # http://www.fsck.com/pub/rt/contrib/
  return ($FoundInExternalDatabase, %params); 
}

# }}}

# {{{ Outgoing mail configuration

# RT is designed such that any mail which already has a ticket-id
associated # with it will get to the right place automatically.

# $CorrespondAddress and $CommentAddress are the default addresses 
# that will be listed in From: and Reply-To: headers of correspondence #
and comment mail tracked by RT, unless overridden by a queue-specific #
address. 

$CorrespondAddress='RT::CorrespondAddress.not.set';

$CommentAddress='RT::CommentAddress.not.set';


#Sendmail Configuration

# $MailCommand defines which method RT will use to try to send mail # We
know that 'sendmailpipe' works fairly well. # If 'sendmailpipe' doesn't
work well for you, try 'sendmail' 
#
# Note that you should remove the '-t' from $SendmailArguments 
# if you use 'sendmail rather than 'sendmailpipe'

$MailCommand = 'sendmailpipe';

# $SendmailArguments defines what flags to pass to $Sendmail
# assuming you picked 'sendmail' or 'sendmailpipe' as the $MailCommand
above. # If you picked 'sendmailpipe', you MUST add a -t flag to
$SendmailArguments

# These options are good for most sendmail wrappers and workalikes
$SendmailArguments="-oi -t";

# These arguments are good for sendmail brand sendmail 8 and newer
#$SendmailArguments="-oi -t -ODeliveryMode=b -OErrorMode=m";

# If you selected 'sendmailpipe' above, you MUST specify the path # to
your sendmail binary in $SendmailPath.  
# !! If you did not # select 'sendmailpipe' above, this has no effect!!
$SendmailPath = "/usr/sbin/sendmail";

# RT can optionally set a "Friendly" 'To:' header when sending messages
to 
# Ccs or AdminCcs (rather than having a blank 'To:' header.

# This feature DOES NOT WORK WITH SENDMAIL[tm] BRAND SENDMAIL
# If you are using sendmail, rather than postfix, qmail, exim or some
other MTA, # you _must_ disable this option.

$UseFriendlyToLine = 0;


# }}}

# {{{ Logging

# Logging.  The default is to log anything except debugging
# information to a logfile.  Check the Log::Dispatch POD for
# information about how to get things by syslog, mail or anything #
else, get debugging info in the log, etc. 

#  It might generally make
# sense to send error and higher by email to some administrator. 
# If you do this, be careful that this email isn't sent to this RT
instance.


# the minimum level error that will be logged to the specific device. #
levels from lowest to highest:  
#  debug info notice warning error critical alert emergency 


#  Mail loops will generate a critical log message.

$LogToScreen = 'error';
$LogToFile = 'error';
#$LogToFileNamed = "$LogDir/rt.log.".$$.".".$<; #log to
rt.log.<pid>.<user> $LogToFileNamed = "$LogDir/rt.log".$<; #log to
rt.log.user;

# }}}

# {{{ Web interface configuration



# Define the directory name to be used for images in rt web
# documents.

# If you're putting the web ui somewhere other than at the root of #
your server
# $WebPath requires a leading / but no trailing /     

$WebPath = "";

# This is the Scheme, server and port for constructing urls to webrt
# $WebBaseURL doesn't need a trailing /


$WebBaseURL = "http://RT::WebBaseURL.not.configured:80";

$WebURL = $WebBaseURL . $WebPath . "/";



# $WebImagesURL points to the base URL where RT can find its images. #
If you're running the FastCGI version of the RT web interface, # you
should make RT's WebRT/html/NoAuth/images directory available on 
# a static web server and supply that URL as $WebImagesURL.

$WebImagesURL = $WebURL."NoAuth/images/";

# $RTLogoURL points to the URL of the RT logo displayed in the web UI

$LogoURL = $WebImagesURL."rt.jpg";

# If $WebExternalAuth is defined, RT will defer to the environment's #
REMOTE_USER variable.

$WebExternalAuth = undef;

# $MasonComponentRoot is where your rt instance keeps its mason html
files # (this should be autoconfigured during 'make install' or 'make
upgrade')

$MasonComponentRoot = "/usr/local/rt2/WebRT/html";

# $MasonLocalComponentRoot is where your rt instance keeps its
site-local # mason html files. # (this should be autoconfigured during
'make install' or 'make upgrade')

$MasonLocalComponentRoot = "/usr/local/rt2/local/WebRT/html";

# $MasonDataDir Where mason keeps its datafiles
# (this should be autoconfigured during 'make install' or 'make
upgrade')

$MasonDataDir = "/usr/local/rt2/WebRT/data";

# RT needs to put session data (for preserving state between connections
# via the web interface) $MasonSessionDir =
"/usr/local/rt2/WebRT/sessiondata";



#This is from tobias' prototype web search UI. it may stay and it may
go. %WebOptions=
    (
     # This is for putting in more user-actions at the Transaction
     # bar.  I will typically add "Enter bug in Bugzilla" here.:
     ExtraTransactionActions => sub { return ""; },

     # Here you can modify the list view.  Be aware that the web
     # interface might crash if TicketAttribute is wrongly set.
     
     QueueListingCols => 
      [
       { Header     => 'Id',
	 TicketLink => 1,
	 TicketAttribute => 'Id'
	 },

      { Header     => 'Subject',
	 TicketAttribute => 'Subject'
	 },
       { Header => 'Requestor(s)',
	 TicketAttribute => 'RequestorsAsString'
	 },
       { Header => 'Status',
	 TicketAttribute => 'Status'
	 },


       { Header => 'Queue',
	 TicketAttribute => 'QueueObj->Name'
	 },



       { Header => 'Told',
	 TicketAttribute => 'ToldObj->AgeAsString'
	 },

       { Header => 'Age',
	 TicketAttribute => 'CreatedObj->AgeAsString'
	 },

       { Header => 'Last',
	 TicketAttribute => 'LastUpdatedObj->AgeAsString'
	 },

       # TODO: It would be nice with a link here to the Owner and all
       # other request owned by this Owner.
       { Header => 'Owner',
	 TicketAttribute => 'OwnerObj->Name'
       },
   
 
       { Header     => 'Take',
	 TicketLink => 1,
	 Constant   => 'Take',
	 ExtraLinks => '&Action=Take'
	 },

      ]
     );

# }}}

# {{{ RT Linking Interface

# $TicketBaseURI is the Base path of the URI for local tickets

# You shouldn't need to touch this. it's used to link tickets both
locally # and remotely

$TicketBaseURI = "fsck.com-rt://$Organization/$rtname/ticket/";

# A hash table of conversion subs to be used for transforming RT Link #
URIs to URLs in the web interface.  If you want to use RT towards #
locally installed databases, this is the right place to configure it.

%URI2HTTP=
    (
      'http' => sub {return @_;},
      'https' => sub {return @_;},
      'ftp' => sub {return @_;},
     'fsck.com-rt' => sub {warn "stub!";},
     'mozilla.org-bugzilla' => sub {warn "stub!"},
     'fsck.com-kb' => sub {warn "stub!"}
     );


# A hash table of subs for fetching content from an URI
%ContentFromURI=   
    (
     'fsck.com-rt' => sub {warn "stub!";},
     'mozilla.org-bugzilla' => sub {warn "stub!"},
     'fsck.com-kb' => sub {warn "stub!"}
     );

# }}}

# {{{ No User servicable parts inside 

############################################
############################################
############################################
#
#  Don't edit anything below this line unless you really know
#  what you're doing
#
#
############################################
############################################

# TODO: get this stuff out of the config file and into RT.pm

#Set up us the timezone
$ENV{'TZ'} = $Timezone; #TODO: Bogus hack to deal with Date::Manip
whining

# Configure sendmail if we're using Entity->send('sendmail')
if ($MailCommand eq 'sendmail') {
    $MailParams = $SendmailArguments;
}



# }}}


1;






More information about the rt-users mailing list